<?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>213347</bug_id>
          
          <creation_ts>2020-06-18 12:50:31 -0700</creation_ts>
          <short_desc>[macOS]: A HEIF image, selected from the OpenPanel, should be converted to an accepted MIME type</short_desc>
          <delta_ts>2025-04-24 18:03:59 -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>Images</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>
          <dependson>212489</dependson>
    
    <dependson>213825</dependson>
    
    <dependson>213826</dependson>
    
    <dependson>213828</dependson>
          <blocked>292041</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1663957</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-18 12:50:31 -0700</bug_when>
    <thetext>If a page has an &lt;input&gt; file element which accepts an image like one of these:

&lt;input type=&quot;file&quot; accept=&quot;image/png, image/jpeg&quot;&gt;

And the user selects an image of unsupported format, HEIF for example, in the file picker the image should be converted to one of the formats in the &quot;accept&quot; attribute if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663958</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-18 12:52:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/64500775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663961</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-18 12:55:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/57258464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664898</commentid>
    <comment_count>3</comment_count>
      <attachid>402433</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-21 15:51:40 -0700</bug_when>
    <thetext>Created attachment 402433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664907</commentid>
    <comment_count>4</comment_count>
      <attachid>402437</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-21 18:56:17 -0700</bug_when>
    <thetext>Created attachment 402437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664924</commentid>
    <comment_count>5</comment_count>
      <attachid>402442</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-21 20:54:26 -0700</bug_when>
    <thetext>Created attachment 402442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664960</commentid>
    <comment_count>6</comment_count>
      <attachid>402452</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-22 01:31:32 -0700</bug_when>
    <thetext>Created attachment 402452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664963</commentid>
    <comment_count>7</comment_count>
      <attachid>402453</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-22 02:03:52 -0700</bug_when>
    <thetext>Created attachment 402453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664970</commentid>
    <comment_count>8</comment_count>
      <attachid>402456</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-22 02:41:03 -0700</bug_when>
    <thetext>Created attachment 402456
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665171</commentid>
    <comment_count>9</comment_count>
      <attachid>402510</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-22 13:57:02 -0700</bug_when>
    <thetext>Created attachment 402510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665190</commentid>
    <comment_count>10</comment_count>
      <attachid>402514</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-22 15:13:44 -0700</bug_when>
    <thetext>Created attachment 402514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665302</commentid>
    <comment_count>11</comment_count>
      <attachid>402537</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-22 22:52:59 -0700</bug_when>
    <thetext>Created attachment 402537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666988</commentid>
    <comment_count>12</comment_count>
      <attachid>403030</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-28 23:31:40 -0700</bug_when>
    <thetext>Created attachment 403030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666989</commentid>
    <comment_count>13</comment_count>
      <attachid>403031</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-28 23:39:01 -0700</bug_when>
    <thetext>Created attachment 403031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667009</commentid>
    <comment_count>14</comment_count>
      <attachid>403036</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-29 01:48:02 -0700</bug_when>
    <thetext>Created attachment 403036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667214</commentid>
    <comment_count>15</comment_count>
      <attachid>403092</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-29 12:01:31 -0700</bug_when>
    <thetext>Created attachment 403092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667229</commentid>
    <comment_count>16</comment_count>
      <attachid>403099</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-29 12:44:43 -0700</bug_when>
    <thetext>Created attachment 403099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667346</commentid>
    <comment_count>17</comment_count>
      <attachid>403135</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-29 16:38:00 -0700</bug_when>
    <thetext>Created attachment 403135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667422</commentid>
    <comment_count>18</comment_count>
      <attachid>403161</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-29 19:29:22 -0700</bug_when>
    <thetext>Created attachment 403161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667616</commentid>
    <comment_count>19</comment_count>
      <attachid>403161</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-06-30 10:50:04 -0700</bug_when>
    <thetext>Comment on attachment 403161
Patch

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

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:78
&gt; +    auto components = FileSystem::pathGetFileName(path).split(&apos;.&apos;);
&gt; +    auto extension = WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType(mimeType);
&gt; +    auto prefix = makeString(components.first(), &quot;_&quot;_s);
&gt; +    auto suffix = makeString(&quot;.&quot;_s, extension);

A directory name can have a period in it, and a file can have multiple extensions, so this doesn&apos;t seem safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667727</commentid>
    <comment_count>20</comment_count>
      <attachid>403161</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-30 14:03:54 -0700</bug_when>
    <thetext>Comment on attachment 403161
Patch

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

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:74
&gt; +    // Compute the temporary file name prefix and file extension.

Since there can be file name length limits, in the past I have found that temporary file names needed to *not* be constructed from user-provided or website-provided file names, of arbitrary length. Not sure what the practical considerations here, but I’m skeptical that this is the best strategy. Typically the extension has to be correct, but the file name can be an arbitrary random string.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:77
&gt; +    auto prefix = makeString(components.first(), &quot;_&quot;_s);

If we do end up with code like this, note that makeString accepts characters as well as strings, so you can use &apos;_&apos; and &apos;.&apos; rather than &quot;_&quot;_s and &quot;.&quot;_s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667731</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-06-30 14:11:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #20)
&gt; Comment on attachment 403161 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403161&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Platform/cg/CGUtilities.cpp:74
&gt; &gt; +    // Compute the temporary file name prefix and file extension.
&gt; 
&gt; Since there can be file name length limits, in the past I have found that
&gt; temporary file names needed to *not* be constructed from user-provided or
&gt; website-provided file names, of arbitrary length. Not sure what the
&gt; practical considerations here, but I’m skeptical that this is the best
&gt; strategy. Typically the extension has to be correct, but the file name can
&gt; be an arbitrary random string.

Said, does the name of the coverted file show up in the &lt;input type=&quot;file&quot;&gt; post-conversion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667782</commentid>
    <comment_count>22</comment_count>
      <attachid>403161</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-30 16:37:17 -0700</bug_when>
    <thetext>Comment on attachment 403161
Patch

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

&gt;&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:74
&gt;&gt;&gt; +    // Compute the temporary file name prefix and file extension.
&gt;&gt; 
&gt;&gt; Since there can be file name length limits, in the past I have found that temporary file names needed to *not* be constructed from user-provided or website-provided file names, of arbitrary length. Not sure what the practical considerations here, but I’m skeptical that this is the best strategy. Typically the extension has to be correct, but the file name can be an arbitrary random string.
&gt; 
&gt; Said, does the name of the coverted file show up in the &lt;input type=&quot;file&quot;&gt; post-conversion?

Yes, the converted file name will be shown in the &lt;input type=&quot;file&quot;&gt;. For example if the page has &lt;input type=&quot;file&quot; accept=&quot;.jpg,.png,.jpeg&quot;&gt;, and the user selects the HEIF image IMG_1311.HEIC, the name IMG_1311_ljd4i1.jpg will be shown in the &lt;input&gt; element.

The length of the converted file name = the length of the original file name + 6. And the &lt;input&gt; element truncates the file name of the file if it exceed a certain threshold. For example, if I insert many &apos;0&apos; letters at the end of the HEIF file name before the period, the name IMG_13110000...0_f798EG.jpg for this long name in the &lt;input&gt; element.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:77
&gt;&gt; +    auto prefix = makeString(components.first(), &quot;_&quot;_s);
&gt; 
&gt; If we do end up with code like this, note that makeString accepts characters as well as strings, so you can use &apos;_&apos; and &apos;.&apos; rather than &quot;_&quot;_s and &quot;.&quot;_s.

Fixed.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:78
&gt;&gt; +    auto suffix = makeString(&quot;.&quot;_s, extension);
&gt; 
&gt; A directory name can have a period in it, and a file can have multiple extensions, so this doesn&apos;t seem safe.

This code constructs the temporary file prefix and suffix from the original file and the destination extension. For example   

path =&quot;/Users/local/Downloads/IMG_1311.HEIC&quot;
FileSystem::pathGetFileName(path) = &quot;IMG_1311.HEIC&quot;
components = FileSystem::pathGetFileName(path).split(&apos;.&apos;) = { &quot;IMG_1311&quot;, &quot;HEIC&quot; }
prefix = IMG_1311_
suffix = &quot;.jpg&quot;

So having a period in the directory name should be handled by FileSystem::pathGetFileName(). And I do not think there a problem if the file name has multiple extensions because FileSystem::openTemporaryFil() will add six unique letters to any file name we pass.

But actually I found a real problem which is not handled by this code. If the input has the following markup: &lt;input type=&quot;file&quot; accept=&quot;.jpg,.png,.jpeg&quot; webkitdirectory&gt;. This does not work correctly especially if the file name has an image extension like &quot;images.gif&quot; for example. If I chose a directory with this name, the assertion ASSERT_NOT_REACHED_WITH_MESSAGE(&quot;Replacement image can&apos;t be created.&quot;) below will fire.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667787</commentid>
    <comment_count>23</comment_count>
      <attachid>403161</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-30 16:48:35 -0700</bug_when>
    <thetext>Comment on attachment 403161
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:74
&gt;&gt;&gt;&gt; +    // Compute the temporary file name prefix and file extension.
&gt;&gt;&gt; 
&gt;&gt;&gt; Since there can be file name length limits, in the past I have found that temporary file names needed to *not* be constructed from user-provided or website-provided file names, of arbitrary length. Not sure what the practical considerations here, but I’m skeptical that this is the best strategy. Typically the extension has to be correct, but the file name can be an arbitrary random string.
&gt;&gt; 
&gt;&gt; Said, does the name of the coverted file show up in the &lt;input type=&quot;file&quot;&gt; post-conversion?
&gt; 
&gt; Yes, the converted file name will be shown in the &lt;input type=&quot;file&quot;&gt;. For example if the page has &lt;input type=&quot;file&quot; accept=&quot;.jpg,.png,.jpeg&quot;&gt;, and the user selects the HEIF image IMG_1311.HEIC, the name IMG_1311_ljd4i1.jpg will be shown in the &lt;input&gt; element.
&gt; 
&gt; The length of the converted file name = the length of the original file name + 6. And the &lt;input&gt; element truncates the file name of the file if it exceed a certain threshold. For example, if I insert many &apos;0&apos; letters at the end of the HEIF file name before the period, the name IMG_13110000...0_f798EG.jpg for this long name in the &lt;input&gt; element.

So if the original file name has the maximum length supported by the file system, the converted file name will be too big. That’s my point, not how it looks on the webpage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669009</commentid>
    <comment_count>24</comment_count>
      <attachid>403584</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-06 02:44:43 -0700</bug_when>
    <thetext>Created attachment 403584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669015</commentid>
    <comment_count>25</comment_count>
      <attachid>403585</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-06 03:52:06 -0700</bug_when>
    <thetext>Created attachment 403585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669018</commentid>
    <comment_count>26</comment_count>
      <attachid>403586</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-06 04:09:12 -0700</bug_when>
    <thetext>Created attachment 403586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669068</commentid>
    <comment_count>27</comment_count>
      <attachid>403586</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-06 11:01:22 -0700</bug_when>
    <thetext>Comment on attachment 403586
Patch

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

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:75
&gt; +    // Compute the extension and the suffix of the temporary file.

This comment in particular says the same thing the code does. We want our comments to say something different from what the code below does, not just say the same thing in English. I suggest removing some of these comments or rewriting them to answer questions not answered by the code, like &quot;why&quot;.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:76
&gt; +    auto extension = WebCore::MIMETypeRegistry::preferredExtensionForMIMEType(mimeType);

Not sure we need this local variable; could combine with the next line.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:77
&gt; +    auto suffix = makeString(&quot;.&quot;_s, extension);

&apos;.&apos; works here and is more efficient than &quot;.&quot;_s

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:79
&gt; +    // Create the temporary file.

Same thing about this comment.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:83
&gt; +        ASSERT_NOT_REACHED_WITH_MESSAGE(&quot;Replacement image could not be created.&quot;);

ASSERT is not appropriate for a failed file system call. It’s OK to log, but not assert, in a case like this.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:87
&gt; +    // Create the data consumer.

Same thing about this comment.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:88
&gt; +    CGDataConsumerCallbacks callbacks = { [](void *info, const void* buffer, size_t count) -&gt; size_t {

&quot;void* info&quot;, not &quot;void *info&quot;

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:89
&gt; +        auto platformFileHandle = *static_cast&lt;FileSystem::PlatformFileHandle*&gt;(info);

Could name this local just &quot;handle&quot;.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:93
&gt; +    // Create the image replacement.

Same thing about this comment.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:97
&gt; +    // Write the source image to the replacement image.

And this comment.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:113
&gt; +    if (mimeTypeForEncoding.isNull())
&gt; +        return { };

Duplicate code, please deelete it.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:119
&gt; +        auto mimeType = WebCore::MIMETypeRegistry::mimeTypeForPath(path);

Don’t need this local variable. Could just put this into the expression in the line below.

&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:120
&gt; +        if (allowedMIMETypes.contains(mimeType))

This is a case-sensitive check. This means tat allowedMIMETypes have to be all in lowercase. That’s tricky. Since MIME types aren’t case sensitive, often we try to avoid requiring that they be in the correct case in APIs. I am worried that this is not the case with what we have added here.

&gt; Source/WebKit/Platform/cg/CGUtilities.h:31
&gt; +Vector&lt;String&gt; transcodeImages(const Vector&lt;String&gt;&amp; paths, const Vector&lt;String&gt;&amp; allowedMIMETypes);

The implementation here is specific to CoreGraphics, but the concept isn’t; I could see us implementing this cross-platform later. I’m not sure this should be in a Core-Graphics-specific header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669069</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-06 11:01:53 -0700</bug_when>
    <thetext>Would have set review+ but that patch didn’t have review? on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669130</commentid>
    <comment_count>29</comment_count>
      <attachid>403613</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-06 13:18:50 -0700</bug_when>
    <thetext>Created attachment 403613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669135</commentid>
    <comment_count>30</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-06 13:21:05 -0700</bug_when>
    <thetext>*** Bug 213828 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669138</commentid>
    <comment_count>31</comment_count>
      <attachid>403586</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-06 13:26:19 -0700</bug_when>
    <thetext>Comment on attachment 403586
Patch

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

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:75
&gt;&gt; +    // Compute the extension and the suffix of the temporary file.
&gt; 
&gt; This comment in particular says the same thing the code does. We want our comments to say something different from what the code below does, not just say the same thing in English. I suggest removing some of these comments or rewriting them to answer questions not answered by the code, like &quot;why&quot;.

Fixed.  I was adding these comments to state the steps of the conversion in plain English.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:76
&gt;&gt; +    auto extension = WebCore::MIMETypeRegistry::preferredExtensionForMIMEType(mimeType);
&gt; 
&gt; Not sure we need this local variable; could combine with the next line.

Local variable was removed.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:77
&gt;&gt; +    auto suffix = makeString(&quot;.&quot;_s, extension);
&gt; 
&gt; &apos;.&apos; works here and is more efficient than &quot;.&quot;_s

The character literal was used instead of the string literal.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:83
&gt;&gt; +        ASSERT_NOT_REACHED_WITH_MESSAGE(&quot;Replacement image could not be created.&quot;);
&gt; 
&gt; ASSERT is not appropriate for a failed file system call. It’s OK to log, but not assert, in a case like this.

ASSERT was replaced with LOG(Images, ...).

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:88
&gt;&gt; +    CGDataConsumerCallbacks callbacks = { [](void *info, const void* buffer, size_t count) -&gt; size_t {
&gt; 
&gt; &quot;void* info&quot;, not &quot;void *info&quot;

Fixed.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:89
&gt;&gt; +        auto platformFileHandle = *static_cast&lt;FileSystem::PlatformFileHandle*&gt;(info);
&gt; 
&gt; Could name this local just &quot;handle&quot;.

Name was changed.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:113
&gt;&gt; +        return { };
&gt; 
&gt; Duplicate code, please deelete it.

Duplicate code was removed.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:119
&gt;&gt; +        auto mimeType = WebCore::MIMETypeRegistry::mimeTypeForPath(path);
&gt; 
&gt; Don’t need this local variable. Could just put this into the expression in the line below.

Local variable was removed.

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.h:31
&gt;&gt; +Vector&lt;String&gt; transcodeImages(const Vector&lt;String&gt;&amp; paths, const Vector&lt;String&gt;&amp; allowedMIMETypes);
&gt; 
&gt; The implementation here is specific to CoreGraphics, but the concept isn’t; I could see us implementing this cross-platform later. I’m not sure this should be in a Core-Graphics-specific header.

1. paintImage() was moved to NativeImage.cpp in WebCore and was renamed to drawNativeImage().
2. This file was moved to Source/WebKit/Platform/ and was renamed ImageUtilities.h.
3. All the references to paintImage() was repacked with drawNativeImage().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669204</commentid>
    <comment_count>32</comment_count>
      <attachid>403629</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-06 15:47:09 -0700</bug_when>
    <thetext>Created attachment 403629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669479</commentid>
    <comment_count>33</comment_count>
      <attachid>403709</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-07 12:04:07 -0700</bug_when>
    <thetext>Created attachment 403709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669481</commentid>
    <comment_count>34</comment_count>
      <attachid>403586</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-07 12:08:37 -0700</bug_when>
    <thetext>Comment on attachment 403586
Patch

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

&gt;&gt; Source/WebKit/Platform/cg/CGUtilities.cpp:120
&gt;&gt; +        if (allowedMIMETypes.contains(mimeType))
&gt; 
&gt; This is a case-sensitive check. This means tat allowedMIMETypes have to be all in lowercase. That’s tricky. Since MIME types aren’t case sensitive, often we try to avoid requiring that they be in the correct case in APIs. I am worried that this is not the case with what we have added here.

I made sure MIMETypeRegistry::allowedMIMETypes() returns lowercase MIME types. I also changed one of the layout tests in this patch to include the following attribute: accept=&quot;IMAGE/HEIC&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669912</commentid>
    <comment_count>35</comment_count>
      <attachid>403709</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-08 15:32:40 -0700</bug_when>
    <thetext>Comment on attachment 403709
Patch

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

&gt; Source/WebKit/Platform/ImageUtilities.h:30
&gt; +Vector&lt;String&gt; transcodeImages(const Vector&lt;String&gt;&amp; paths, const Vector&lt;String&gt;&amp; allowedMIMETypes);

It&apos;s not really clear from the signature that allowedMIMETypes is the set of possible destination MIME types, and that the return value is a set of new paths. If one of the input paths is not transcodable, how does the return value relate to the input paths?

I feel like this needs to be a more expressive API, maybe even a simple class, that makes it easier to use without error.

Also are these absolute paths or URLs? The call site makes them look like URLs.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:59
&gt; +    auto suffix = makeString(&apos;.&apos;, WebCore::MIMETypeRegistry::preferredExtensionForMIMEType(mimeType));

What if preferredExtensionForMIMEType() is empty?

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:65
&gt; +        return nullString();

This error case returns the same result as the &quot;no translation needed&quot; case, so the caller can&apos;t tell them apart.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:91
&gt; +    String mimeTypeForEncoding = WebCore::MIMETypeRegistry::preferredImageMIMETypeForEncoding(allowedMIMETypes, { });
&gt; +    if (mimeTypeForEncoding.isNull())
&gt; +        return { };

Oh, all the images get the same destination MIME type? That&apos;s not what I expected from the signature. I thought it would be one entry in the vector per image.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:98
&gt; +            replacementPaths.uncheckedAppend(nullString());

so nullString in the result means &quot;no transcoding&quot;?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6700
&gt; +    auto replacementURLs = transcodeImages(fileURLs, allowedMIMETypes);

You&apos;re calling these URLs but they are urlStrings; not URL objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669935</commentid>
    <comment_count>36</comment_count>
      <attachid>403709</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-08 16:42:47 -0700</bug_when>
    <thetext>Comment on attachment 403709
Patch

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

&gt;&gt; Source/WebKit/Platform/ImageUtilities.h:30
&gt;&gt; +Vector&lt;String&gt; transcodeImages(const Vector&lt;String&gt;&amp; paths, const Vector&lt;String&gt;&amp; allowedMIMETypes);
&gt; 
&gt; It&apos;s not really clear from the signature that allowedMIMETypes is the set of possible destination MIME types, and that the return value is a set of new paths. If one of the input paths is not transcodable, how does the return value relate to the input paths?
&gt; 
&gt; I feel like this needs to be a more expressive API, maybe even a simple class, that makes it easier to use without error.
&gt; 
&gt; Also are these absolute paths or URLs? The call site makes them look like URLs.

Suppose the you have a markup like this: 

    &lt;input type=&apos;file&apos; accept=&quot;image/png,.jpeg,.gif&quot;&gt;. 

In this case:
    acceptedFileExtensions = { &quot;.jpeg&quot;, &quot;.gif&quot; }
    acceptedMIMETypes = { &quot;image/png&quot; }
    allowedFileExtensions = { &quot;png&quot;, &quot;jpeg&quot;, &quot;gif&quot;, &quot;heif&quot;, &quot;heic&quot; }
    allowedMimeTypes = { &quot;image/png&quot;, &quot;image/jpeg&quot;, &quot;image/gif&quot; }

Suppose the user selects the following images 

    paths = { image1.png, image2.gif, image3.jpeg, image4.heic, image5.heif }

then the result of this function can be something like this:

    transcodeImages() = { nullString(), nullString(), nullString(), tempImage123456.png, tempImageabcdef.png }

So WebCore knows that the first three images were not transcoded. So it creates three File objects with the original images. And it knows the last two images were transcoded, so it create two File objects with the replacement images.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:59
&gt;&gt; +    auto suffix = makeString(&apos;.&apos;, WebCore::MIMETypeRegistry::preferredExtensionForMIMEType(mimeType));
&gt; 
&gt; What if preferredExtensionForMIMEType() is empty?

I think it should not.

CG supports a small subset of image formats for encoding. I expect they are the very well known image formats. And I do not expect any of them will have empty string for the preferred extensions. I can add assertions like these 

ASSERT(WebCore::MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
ASSERT(!WebCore::MIMETypeRegistry::preferredExtensionForMIMEType(mimeType).isNull());

But I do not think I need to provide any fallback for the failure cases.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:65
&gt;&gt; +        return nullString();
&gt; 
&gt; This error case returns the same result as the &quot;no translation needed&quot; case, so the caller can&apos;t tell them apart.

I think this is not bad. If we fail to create the temporary file for the transcoded image, WebProcess will use the original image when creating the File object. This image file may not be displayable by WebKit and may not be accepted by the server. But we can&apos;t do anything better than this.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:91
&gt;&gt; +        return { };
&gt; 
&gt; Oh, all the images get the same destination MIME type? That&apos;s not what I expected from the signature. I thought it would be one entry in the vector per image.

Yes all the images whose MIME types are not in the list allowedMIMETypes will be transcoded for the first one in allowedMIMETypes which CG supports encoding to. Currently only HEIF images are the only ones that can fall in this category.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:98
&gt;&gt; +            replacementPaths.uncheckedAppend(nullString());
&gt; 
&gt; so nullString in the result means &quot;no transcoding&quot;?

Yes. This is correct.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6700
&gt;&gt; +    auto replacementURLs = transcodeImages(fileURLs, allowedMIMETypes);
&gt; 
&gt; You&apos;re calling these URLs but they are urlStrings; not URL objects.

I was just following the naming convention in this function.

Here are the signatures of functions that are involved in this scenario:

void WebOpenPanelResultListenerProxy::chooseFiles(const Vector&lt;String&gt;&amp; filenames, const Vector&lt;String&gt;&amp; allowedMIMETypes)
void WebPageProxy::didChooseFilesForOpenPanel(const Vector&lt;String&gt;&amp; fileURLs, const Vector&lt;String&gt;&amp; allowedMIMETypes)
void WebPage::didChooseFilesForOpenPanel(const Vector&lt;String&gt;&amp; files, const Vector&lt;String&gt;&amp; replacementFiles)
void WebOpenPanelResultListener::didChooseFiles(const Vector&lt;String&gt;&amp; files, const Vector&lt;String&gt;&amp; replacementFiles)
void FileChooser::chooseFiles(const Vector&lt;String&gt;&amp; filenames, const Vector&lt;String&gt;&amp; replacementNames)
void FileInputType::filesChosen(const Vector&lt;FileChooserFileInfo&gt;&amp; paths, const String&amp; displayString, Icon* icon)
Ref&lt;File&gt; File::create(const String&amp; path, const String&amp; replacementPath, const String&amp; nameOverride)

The used names are: filenames, fileURLs, files, paths.

I really do not know which one I should use. I wished I can unify all the names and I prefer filenames or paths. If you want I can do this in the same patch or a separate patch before or after this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669940</commentid>
    <comment_count>37</comment_count>
      <attachid>403709</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-08 16:45:51 -0700</bug_when>
    <thetext>Comment on attachment 403709
Patch

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

&gt;&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:65
&gt;&gt;&gt; +        return nullString();
&gt;&gt; 
&gt;&gt; This error case returns the same result as the &quot;no translation needed&quot; case, so the caller can&apos;t tell them apart.
&gt; 
&gt; I think this is not bad. If we fail to create the temporary file for the transcoded image, WebProcess will use the original image when creating the File object. This image file may not be displayable by WebKit and may not be accepted by the server. But we can&apos;t do anything better than this.

Also see Darin&apos;s comment above where he suggested replacing 

    ASSERT_NOT_REACHED_WITH_MESSAGE(&quot;Replacement image could not be created.&quot;);

with a log message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670038</commentid>
    <comment_count>38</comment_count>
      <attachid>403849</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-09 01:05:49 -0700</bug_when>
    <thetext>Created attachment 403849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670039</commentid>
    <comment_count>39</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-09 01:14:21 -0700</bug_when>
    <thetext>I moved transcoding the images to a work queue to unblock the UI process main thread and allow the OpenPanel to be dismissed quickly. The Web process will be blocked till the message WebPage::DidChooseFilesForOpenPanel() is received from the transcoding work queue in the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670044</commentid>
    <comment_count>40</comment_count>
      <attachid>403850</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-09 01:28:33 -0700</bug_when>
    <thetext>Created attachment 403850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670178</commentid>
    <comment_count>41</comment_count>
      <attachid>403850</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-09 10:49:01 -0700</bug_when>
    <thetext>Comment on attachment 403850
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6691
&gt; +    auto transcodingUTI = WebCore::UTIFromMIMEType(transcodingMIMEType);

This call has to be made in the main thread because UTIFromMIMEType() has the following assertion:
ASSERT(isMainThread());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670194</commentid>
    <comment_count>42</comment_count>
      <attachid>403850</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-09 11:43:27 -0700</bug_when>
    <thetext>Comment on attachment 403850
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6694
&gt; +    m_transcodingQueue-&gt;dispatch([this, protectedThis = makeRef(*this), fileURLs = fileURLs, transcodingURLs = WTFMove(transcodingURLs), transcodingUTI = transcodingUTI, transcodingExtension = transcodingExtension]() mutable {

mutable is not needed. I will remove it.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6700
&gt; +        RunLoop::main().dispatch([this, fileURLs = fileURLs, transcodedURLs = WTFMove(transcodedURLs)]() mutable {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670579</commentid>
    <comment_count>43</comment_count>
      <attachid>403850</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-10 14:36:46 -0700</bug_when>
    <thetext>Comment on attachment 403850
Patch

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

&gt; Source/WTF/wtf/cocoa/FileSystemCocoa.mm:118
&gt; +    CString suffixUtf8 = suffix.utf8();

I don’t understand why this function is using &quot;Utf8&quot; capitalization instead of &quot;UTF8&quot;.

&gt; Source/WTF/wtf/glib/FileSystemGlib.cpp:329
&gt; -String openTemporaryFile(const String&amp; prefix, PlatformFileHandle&amp; handle)
&gt; +String openTemporaryFile(const String&amp; prefix, PlatformFileHandle&amp; handle, const String&amp;)

Seems bad that this platform simply ignores the suffix. Only OK because the feature isn’t used? Maybe:

    // FIXME: Suffix is not supported, but OK for now since the code using it is macOS-port-only.
    ASSERT_UNUSED(suffix, suffix.isEmpty());

&gt; Source/WTF/wtf/posix/FileSystemPOSIX.cpp:445
&gt; -String openTemporaryFile(const String&amp; prefix, PlatformFileHandle&amp; handle)
&gt; +String openTemporaryFile(const String&amp; prefix, PlatformFileHandle&amp; handle, const String&amp;)

Ditto.

&gt; Source/WTF/wtf/win/FileSystemWin.cpp:407
&gt; -String openTemporaryFile(const String&amp;, PlatformFileHandle&amp; handle)
&gt; +String openTemporaryFile(const String&amp;, PlatformFileHandle&amp; handle, const String&amp;)

Ditto.

&gt; Source/WebKit/Platform/ImageUtilities.h:30
&gt; +Vector&lt;String&gt; findImagesForTranscoding(const Vector&lt;String&gt;&amp; paths, const Vector&lt;String&gt;&amp; allowedMIMETypes);

Probably need a comment explaining what the return value is.

&gt; Source/WebKit/Platform/ImageUtilities.h:31
&gt; +Vector&lt;String&gt; transcodeImages(const Vector&lt;String&gt;&amp; paths, const String&amp; uti, const String&amp; extension);

Probably need a comment explaining what the return value is.

Maybe &quot;destinationUTI&quot; rather than &quot;uti&quot; and &quot;destinationExtension&quot; rather than &quot;extension&quot;.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:41
&gt; +    // This function transcodes files only.
&gt; +    if (FileSystem::fileIsDirectory(path, FileSystem::ShouldFollowSymbolicLinks::Yes))
&gt; +        return nullString();

Why do we need this code? Won’t CGImageSourceCreateWithURL fail without this check?

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:43
&gt; +    // Ensure the &apos;path&apos; is actually an image file.

This doesn’t seem like an accurate comment. This doesn’t &quot;ensure it’s an image file&quot;. I don’t think the comment is needed.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:49
&gt; +    // Ensure the format of the image source is different from &apos;mimeType&apos;.

Comment says nothing different from what the code below does. Why is it a valuable to fail in this case? Do we have test coverage for this case? I suggest omitting this code.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:54
&gt; +    // The file extension is important because it reveals the MIME type of the temporary file.

This is imprecise. What does &quot;reveals&quot; mean here? Do you mean that it helps software select the appropriate MIME type? What software are we trying to help here? Comment could cover that.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:67
&gt; +            return FileSystem::writeToFile(handle, static_cast&lt;const char*&gt;(buffer), count);

Does this code do the correct thing when there is an error?

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:75
&gt; +    // Write the source image to the destination image.

Should remove this comment.

&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:78
&gt; +    FileSystem::closeFile(destinationFileHandle);

Does this code do the correct thing when there is an error?

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6694
&gt;&gt; +    m_transcodingQueue-&gt;dispatch([this, protectedThis = makeRef(*this), fileURLs = fileURLs, transcodingURLs = WTFMove(transcodingURLs), transcodingUTI = transcodingUTI, transcodingExtension = transcodingExtension]() mutable {
&gt; 
&gt; mutable is not needed. I will remove it.

It’s not safe to pass strings across threads. Their reference counts are not thread-safe. We need to pass isolated copies across threads.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6700
&gt;&gt; +        RunLoop::main().dispatch([this, fileURLs = fileURLs, transcodedURLs = WTFMove(transcodedURLs)]() mutable {
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670731</commentid>
    <comment_count>44</comment_count>
      <attachid>403850</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-11 02:23:39 -0700</bug_when>
    <thetext>Comment on attachment 403850
Patch

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

&gt;&gt; Source/WTF/wtf/cocoa/FileSystemCocoa.mm:118
&gt;&gt; +    CString suffixUtf8 = suffix.utf8();
&gt; 
&gt; I don’t understand why this function is using &quot;Utf8&quot; capitalization instead of &quot;UTF8&quot;.

Fixed.

&gt;&gt; Source/WTF/wtf/glib/FileSystemGlib.cpp:329
&gt;&gt; +String openTemporaryFile(const String&amp; prefix, PlatformFileHandle&amp; handle, const String&amp;)
&gt; 
&gt; Seems bad that this platform simply ignores the suffix. Only OK because the feature isn’t used? Maybe:
&gt; 
&gt;     // FIXME: Suffix is not supported, but OK for now since the code using it is macOS-port-only.
&gt;     ASSERT_UNUSED(suffix, suffix.isEmpty());

Done.

&gt;&gt; Source/WTF/wtf/posix/FileSystemPOSIX.cpp:445
&gt;&gt; +String openTemporaryFile(const String&amp; prefix, PlatformFileHandle&amp; handle, const String&amp;)
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WTF/wtf/win/FileSystemWin.cpp:407
&gt;&gt; +String openTemporaryFile(const String&amp;, PlatformFileHandle&amp; handle, const String&amp;)
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebKit/Platform/ImageUtilities.h:30
&gt;&gt; +Vector&lt;String&gt; findImagesForTranscoding(const Vector&lt;String&gt;&amp; paths, const Vector&lt;String&gt;&amp; allowedMIMETypes);
&gt; 
&gt; Probably need a comment explaining what the return value is.

A comment is added.

&gt;&gt; Source/WebKit/Platform/ImageUtilities.h:31
&gt;&gt; +Vector&lt;String&gt; transcodeImages(const Vector&lt;String&gt;&amp; paths, const String&amp; uti, const String&amp; extension);
&gt; 
&gt; Probably need a comment explaining what the return value is.
&gt; 
&gt; Maybe &quot;destinationUTI&quot; rather than &quot;uti&quot; and &quot;destinationExtension&quot; rather than &quot;extension&quot;.

A comment is added and the arguments&apos; names are changed.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:41
&gt;&gt; +        return nullString();
&gt; 
&gt; Why do we need this code? Won’t CGImageSourceCreateWithURL fail without this check?

Yes this is correct. Code is removed.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:43
&gt;&gt; +    // Ensure the &apos;path&apos; is actually an image file.
&gt; 
&gt; This doesn’t seem like an accurate comment. This doesn’t &quot;ensure it’s an image file&quot;. I don’t think the comment is needed.

The comment is removed.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:49
&gt;&gt; +    // Ensure the format of the image source is different from &apos;mimeType&apos;.
&gt; 
&gt; Comment says nothing different from what the code below does. Why is it a valuable to fail in this case? Do we have test coverage for this case? I suggest omitting this code.

We can fall to this case if path = &quot;image.heic&quot; and destinationUTI = &quot;public.png&quot; but image.heic is actually a PNG image with the wrong extension.

I kept the code but I removed the comment.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:54
&gt;&gt; +    // The file extension is important because it reveals the MIME type of the temporary file.
&gt; 
&gt; This is imprecise. What does &quot;reveals&quot; mean here? Do you mean that it helps software select the appropriate MIME type? What software are we trying to help here? Comment could cover that.

I added the following comment:

    // It is important to add the appropriate file extension to the temporary file path.
    // The File object depends solely on the extension to know the MIME type of the file.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:67
&gt;&gt; +            return FileSystem::writeToFile(handle, static_cast&lt;const char*&gt;(buffer), count);
&gt; 
&gt; Does this code do the correct thing when there is an error?

According to the header file CGDataConsumer.h, it should handle the case were the return value is 0 or the return value is less than count.

 * `putBytes&apos; copies `count&apos; bytes from `buffer&apos; to the consumer, and
 *   returns the number of bytes copied. It should return 0 if no more data
 *   can be written to the consumer.

So if the image bytes could not be written by the consumer, CGImageDestinationFinalize() will return false.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:75
&gt;&gt; +    // Write the source image to the destination image.
&gt; 
&gt; Should remove this comment.

The comment is removed.

&gt;&gt; Source/WebKit/Platform/cg/ImageUtilitiesCG.cpp:78
&gt;&gt; +    FileSystem::closeFile(destinationFileHandle);
&gt; 
&gt; Does this code do the correct thing when there is an error?

I realized that CGImageDestinationFinalize() returns a bool indicating whether it succeeds or fails. If it fails we should delete the temporary file and return a null string.

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6694
&gt;&gt;&gt; +    m_transcodingQueue-&gt;dispatch([this, protectedThis = makeRef(*this), fileURLs = fileURLs, transcodingURLs = WTFMove(transcodingURLs), transcodingUTI = transcodingUTI, transcodingExtension = transcodingExtension]() mutable {
&gt;&gt; 
&gt;&gt; mutable is not needed. I will remove it.
&gt; 
&gt; It’s not safe to pass strings across threads. Their reference counts are not thread-safe. We need to pass isolated copies across threads.

I used isolatedCopy() for fileURLs and WTFMove for the rest of the arguments.

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6700
&gt;&gt;&gt; +        RunLoop::main().dispatch([this, fileURLs = fileURLs, transcodedURLs = WTFMove(transcodedURLs)]() mutable {
&gt;&gt; 
&gt;&gt; Ditto.
&gt; 
&gt; Ditto.

I used isolatedCopy() for fileURLs and WTFMove for the rest of the arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670732</commentid>
    <comment_count>45</comment_count>
      <attachid>404048</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-11 02:23:59 -0700</bug_when>
    <thetext>Created attachment 404048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670762</commentid>
    <comment_count>46</comment_count>
      <attachid>403850</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-11 11:55:13 -0700</bug_when>
    <thetext>Comment on attachment 403850
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6700
&gt;&gt;&gt;&gt; +        RunLoop::main().dispatch([this, fileURLs = fileURLs, transcodedURLs = WTFMove(transcodedURLs)]() mutable {
&gt;&gt;&gt; 
&gt;&gt;&gt; Ditto.
&gt;&gt; 
&gt;&gt; Ditto.
&gt; 
&gt; I used isolatedCopy() for fileURLs and WTFMove for the rest of the arguments.

WTFMove may not be sufficient for arguments if they are reference counted and haven’t already been isolated. We have to go through each one carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670769</commentid>
    <comment_count>47</comment_count>
      <attachid>404048</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-11 12:21:57 -0700</bug_when>
    <thetext>Comment on attachment 404048
Patch

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

Would like to say review+ but I think the threading is still not quite right.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6694
&gt; +    m_transcodingQueue-&gt;dispatch([this, protectedThis = makeRef(*this), fileURLs = fileURLs.isolatedCopy(), transcodingURLs = WTFMove(transcodingURLs), transcodingUTI = WTFMove(transcodingUTI), transcodingExtension = WTFMove(transcodingExtension)]() {

We need isolated copies for the last three captured things. There are many ways of making strings that do not yield an isolated string ready to be safely passed to another thread. Assuming that because we created the string that we are the sole owner is not necessarily correct. And also, strings that come from something like the MIME type registry are definitely not going to be isolated.

I also think that getting the string isolation wrong typically leads to really hard to reproduce bugs, no obvious easily noticeable failures.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6700
&gt; +        RunLoop::main().dispatch([this, fileURLs = fileURLs.isolatedCopy(), transcodedURLs = WTFMove(transcodedURLs)]() {

We need to capture protectedThis here or allocate a new one.

Also, here *maybe* we can get away with WTFMove for transcodedURLs, but I am not sure and I think isolatedCopy may be required. Those same issues as above likely apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670818</commentid>
    <comment_count>48</comment_count>
      <attachid>404084</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-11 20:06:37 -0700</bug_when>
    <thetext>Created attachment 404084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670919</commentid>
    <comment_count>49</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-12 14:20:24 -0700</bug_when>
    <thetext>Committed r264286: &lt;https://trac.webkit.org/changeset/264286&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404084.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402433</attachid>
            <date>2020-06-21 15:51:40 -0700</date>
            <delta_ts>2020-06-21 18:56:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200621155139.patch</filename>
            <type>text/plain</type>
            <size>52720</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3ZjViMDc5OGIzZDkz
MWYyNjIyOTg0YWYzMDcxZDQ5ZDlkYTk1OS4uZTNhZmVmY2Q4ZTk2NDFmMDY2OTM3ZGFmYTE1YmQ0
MWQ3NzE3Y2Q4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA2LTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XSBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBl
PSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0Nwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIHR5cGUgb2YgdGhlIHNlbGVjdGVkIGlt
YWdlIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQgdHlwZXMsIHRoZQorICAgICAgICBpbWFnZSB3
aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZmlyc3QgZGVzdGluYXRpb24gYWxsb3dlZCBpbWFnZSB0
eXBlIGFuZAorICAgICAgICBpdCB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZS4g
VGhpcyBmaWxlIGlzIGEgcmVwbGFjZW1lbnQgdG8gdGhlCisgICAgICAgIG9yaWdpbmFsIGltYWdl
LCBzbyB0aGUgdHlwZSwgdGhlIHNpemUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgcmVhZCBmcm9tIGl0
CisgICAgICAgIGluc3RlYWQgb2YgdGhlIHNlbGVjdGVkIGltYWdlLgorCisgICAgICAgICogZmls
ZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAq
IGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6dHlwZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OmNvbnRlbnRUeXBlRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpkZXN0aW5h
dGlvblR5cGVGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6Om5hbWVGb3JGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmls
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgor
ICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdCk6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENy
ZWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
Q2hvb3Nlcjo6YWxsb3dlZFR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9v
c2VyOjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyQ2xpZW50OjpmaWxlc0Nob3Nlbik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNr
aW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKToKKworMjAyMC0wNi0xNiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBG
aWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFs
bCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgQWRkIGxvY2Fs
aXphYmxlIHN0cmluZ3MgZm9yIHRoZSBPcGVuUGFuZWwgZmlsdGVyLgorCisgICAgICAgICogcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICBFeHBvcnQgYSBNSU1FVHlwZVJlZ2lz
dHJ5IEFQSSB0byBiZSByZWZlcmVuY2VkIGZyb20gV2ViS2l0IHByb2plY3QuCisKKwogMjAyMC0w
Ni0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJl
ZmVyZW5jZXMgdG8gInNsYXZlIiBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMxNWYxZTI1ODk1MmYy
MmU3OWQ5ZmZlNjlhY2QyNjdlMTc2N2M3OTIuLmVjM2YyMjQ0YzRiNjkyN2ZmYWEyMjZlZDBlZmM5
Zjk3NWNkMjY4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMTYgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1Nd
OiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVj
dGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2Nl
cHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJZiBvbmUgb2YgdGhlIG1pbWUgdHlwZXMgaW4gdGhlICJhY2NlcHQiIGF0
dHJpYnV0ZSBpcyBhbiBhbGxvd2VkIGRlc3RlbmF0aW9uCisgICAgICAgIGltYWdlIGZvcm1hdCwg
YWRkIGEgbmV3IGl0ZW0gaW4gdGhlIE9wZW5QYW5lbCBmaWx0ZXIgbmFtZWQgIkltYWdlIEZpbGVz
Ii4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
Lm1tOgorICAgICAgICAobWltZVR5cGVGb3JFeHRlbnNpb24pOgorICAgICAgICAoLVtXS09wZW5Q
YW5lbFBhcmFtZXRlcnMgX2FsbEltYWdlRmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAgKC1bV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXNdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoK
KwogMjAyMC0wNi0xMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViS2l0OiBBZGQgVUlLaXQgU1BJIGZvciB3YXRjaE9TIGFuZCB0dk9TCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNl
L1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCAxNjQ3ZDIzZmZhYWNm
ZDM4ZDQ1MTJiM2ZmNDZiOTAwNGRkOTkzZmU1Li5kMzYwYTAzODAyZDgyZWU5YzQ5MWQ5YjU0NWFh
NjNmNGQ4MjczMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3MKQEAgLTYxLDYgKzYxLDE1IEBACiAvKiBOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xl
IFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluICovCiAiJUAgV2ViQ3J5cHRvIE1hc3Rl
ciBLZXkiID0gIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IjsKIAorLyogQXVkaW8gZm9ybWF0IHR5
cGUgaW4gZmlsZSBwaWNrZXIgKi8KKyIlQCBhdWRpbyIgPSAiJUAgYXVkaW8iOworCisvKiBJbWFn
ZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciAqLworIiVAIGltYWdlIiA9ICIlQCBpbWFnZSI7
CisKKy8qIFZpZGVvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyICovCisiJUAgdmlkZW8iID0g
IiVAIHZpZGVvIjsKKwogLyogTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBz
ZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmls
ZXMgKi8KICIlZCBmaWxlcyIgPSAiJWQgZmlsZXMiOwogCkBAIC0xMTUsNiArMTI0LDkgQEAKIC8q
IFVuZG8gYWN0aW9uIG5hbWUgKi8KICJBbGlnbiBSaWdodCAoVW5kbyBhY3Rpb24gbmFtZSkiID0g
IkFsaWduIFJpZ2h0IjsKIAorLyogQWxsIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkFsbCBG
aWxlcyIgPSAiQWxsIEZpbGVzIjsKKwogLyogQnV0dG9uIHRpdGxlIGluIFN0b3JhZ2UgQWNjZXNz
IEFQSSBwcm9tcHQgKi8KICJBbGxvdyAoY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdlYnNpdGUgZGF0
YSBhY2Nlc3MpIiA9ICJBbGxvdyI7CiAKQEAgLTEzNiw2ICsxNDgsOSBAQAogLyogV0tFcnJvckF0
dHJpYnV0ZWRTdHJpbmdDb250ZW50RmFpbGVkVG9Mb2FkIGRlc2NyaXB0aW9uICovCiAiQXR0cmli
dXRlZCBzdHJpbmcgY29udGVudCBmYWlsZWQgdG8gbG9hZCIgPSAiQXR0cmlidXRlZCBzdHJpbmcg
Y29udGVudCBmYWlsZWQgdG8gbG9hZCI7CiAKKy8qIEF1ZGlvIEZpbGVzIGluIGZpbGVyIHBpY2tl
ciAqLworIkF1ZGlvIEZpbGVzIiA9ICJBdWRpbyBGaWxlcyI7CisKIC8qIE1lbnUgaXRlbSBsYWJl
bCBmb3IgYXV0b21hdGljIHRyYWNrIHNlbGVjdGlvbiBiZWhhdmlvciAqLwogIkF1dG8gKFJlY29t
bWVuZGVkKSIgPSAiQXV0byAoUmVjb21tZW5kZWQpIjsKIApAQCAtMjY1LDYgKzI4MCw5IEBACiAv
KiBVbmRvIGFjdGlvbiBuYW1lICovCiAiQ3JlYXRlIExpbmsgKFVuZG8gYWN0aW9uIG5hbWUpIiA9
ICJDcmVhdGUgTGluayI7CiAKKy8qIEN1c3RvbSBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJD
dXN0b20gRmlsZXMiID0gIkN1c3RvbSBGaWxlcyI7CisKIC8qIEN1dCBjb250ZXh0IG1lbnUgaXRl
bSAqLwogIkN1dCIgPSAiQ3V0IjsKIApAQCAtNDA5LDYgKzQyNyw5IEBACiAvKiBJZ25vcmUgU3Bl
bGxpbmcgY29udGV4dCBtZW51IGl0ZW0gKi8KICJJZ25vcmUgU3BlbGxpbmciID0gIklnbm9yZSBT
cGVsbGluZyI7CiAKKy8qIEltYWdlIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkltYWdlIEZp
bGVzIiA9ICJJbWFnZSBGaWxlcyI7CisKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJJbmRlbnQg
KFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbmRlbnQiOwogCkBAIC05OTEsNiArMTAxMiw5IEBACiAv
KiBWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBo
aWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0gKi8KICJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBv
ciBlcXVhbCB0byAlcyIgPSAiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMi
OwogCisvKiBWaWRlbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJWaWRlbyBGaWxlcyIgPSAi
VmlkZW8gRmlsZXMiOworCiAvKiBQaGlzaGluZyB3YXJuaW5nIGRlc2NyaXB0aW9uICovCiAiV2Fy
bmluZ3MgYXJlIHNob3duIGZvciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBk
ZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8gYmVsaWV2
aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiIgPSAiV2FybmluZ3Mg
YXJlIHNob3duIGZvciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBkZWNlcHRp
dmUuIERlY2VwdGl2ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8gYmVsaWV2aW5nIHRo
ZXkgYXJlIGxlZ2l0aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCmluZGV4IDMyYTNiNjk4OWZhYjZlZDY0MDQxYjkwYjlkZWM0OTNmNjQwMzExNTYuLmI3
NzI0ZTgxYWY4MjhhMDFlMTY4OGJhZDY2ZWU5Y2QwNmJjZTBlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iLmNwcApAQCAtNzIsOSArNzIsMTAgQEAgVVJMUmVnaXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6
cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotQmxvYjo6QmxvYihVbmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQorQmxvYjo6QmxvYihV
bmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcm
JiBkZXN0aW5hdGlvblR5cGUpCiAgICAgOiBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKICAg
ICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICwgbV9kZXN0aW5hdGlvblR5cGUoV1RGTW92
ZShkZXN0aW5hdGlvblR5cGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDYxNGQ4
MDlkMjA4OTNkNWVmZTAwYzgzOTJiM2FlMzY1MmJkYTJhYzUuLmIyMjQ3OTRlODA5YjQ3MTZiMjFk
ZTJhNGU3NDdlYmViMjgyYTdiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC04NCw3ICs4NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CbG9iKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwoKSA/IG1fdHlwZSA6IG1fZGVzdGlu
YXRpb25UeXBlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHByb3RlY3RlZDoKICAgICBCbG9iKFJlZmVyZW5jaW5n
RXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0
aWFsaXplZENvbnRydWN0b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2Io
VW5pbml0aWFsaXplZENvbnRydWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlKTsKKyAgICBCbG9i
KFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYg
ZGVzdGluYXRpb25UeXBlKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7
IGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IgfTsKICAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFs
PHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7
CkBAIC0xMzEsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAog
ICAgIFN0cmluZyBtX3R5cGU7CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25UeXBlOwogCiAgICAg
bXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IG1fc2l6ZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmNwcAppbmRleCA4ZDZlMzg3Mzg1NTEzZGRkNDFlMDM3MjQwOThiNDMyZWFjZWNl
YmMwLi4xZjU0YWE3NWQwZDEwYzIwMzRhMDIzZDA3ZDkxOGUyZjY5NDgzMTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKQEAgLTQ2LDIwICs0NiwyMSBAQCBSZWY8RmlsZT4gRmlsZTo6Y3JlYXRl
V2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dgogICAgIHJldHVybiBmaWxlOwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCitSZWY8RmlsZT4gRmlsZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0cmluZyBuYW1lOwot
ICAgIFN0cmluZyB0eXBlOwotICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUocGF0aCwgbmFt
ZU92ZXJyaWRlLCBuYW1lLCB0eXBlKTsKKyAgICBTdHJpbmcgdHlwZSA9IGNvbnRlbnRUeXBlRm9y
RmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUpOworICAgIFN0cmluZyBkZXN0aW5hdGlvblR5cGUgPSBk
ZXN0aW5hdGlvblR5cGVGb3JGaWxlKHBhdGgsIHR5cGUsIGFsbG93ZWRUeXBlcyk7CisgICAgU3Ry
aW5nIG5hbWUgPSBuYW1lRm9yRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUsIHR5cGUsIGRlc3RpbmF0
aW9uVHlwZSk7CiAKICAgICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJu
YWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KGludGVybmFsVVJMLCBwYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZp
bGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IHBhdGggfSwg
V1RGTW92ZShuYW1lKSkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoaW50ZXJuYWxVUkwsIHBhdGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSk7
CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxVUkwpLCBT
dHJpbmcgeyBwYXRoIH0sIFdURk1vdmUobmFtZSksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZGVz
dGluYXRpb25UeXBlKSkpOwogfQogCi1GaWxlOjpGaWxlKFVSTCYmIHVybCwgU3RyaW5nJiYgdHlw
ZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5pbml0aWFsaXpl
ZENvbnRydWN0b3IsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6OkZpbGUoVVJM
JiYgdXJsLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB0eXBlLCBTdHJp
bmcmJiBkZXN0aW5hdGlvblR5cGUpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9y
LCBXVEZNb3ZlKHVybCksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZGVzdGluYXRpb25UeXBlKSkK
ICAgICAsIG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkp
CiB7CkBAIC0xMjMsMzIgKzEyNCw1MiBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNv
bnN0CiAgICAgcmV0dXJuIFdURjo6dGltZUNsaXAocmVzdWx0KTsKIH0KIAotdm9pZCBGaWxlOjpj
b21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVD
b250ZW50VHlwZSkKK1N0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKLSNpZiBFTkFCTEUoRklMRV9S
RVBMQUNFTUVOVCkKLSAgICBpZiAoc2hvdWxkUmVwbGFjZUZpbGUocGF0aCkpIHsKLSAgICAgICAg
Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZShwYXRoLCBuYW1lT3ZlcnJp
ZGUsIGVmZmVjdGl2ZU5hbWUsIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotICAgIGVmZmVjdGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNFbXB0
eSgpID8gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOwot
ICAgIHNpemVfdCBpbmRleCA9IGVmZmVjdGl2ZU5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBT
dHJpbmcgbmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAg
IHNpemVfdCBpbmRleCA9IG5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5kZXggIT0g
bm90Rm91bmQpIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZlZmZlY3RpdmVD
b250ZW50VHlwZSwgJmVmZmVjdGl2ZU5hbWUsIGluZGV4XSB7Ci0gICAgICAgICAgICBlZmZlY3Rp
dmVDb250ZW50VHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9u
KGVmZmVjdGl2ZU5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSkpLmlzb2xhdGVkQ29weSgpOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJm1pbWVUeXBlLCAmbmFtZSwgaW5kZXhdIHsK
KyAgICAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JF
eHRlbnNpb24obmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAg
ICAgIH0pOwogICAgIH0KKyAgICByZXR1cm4gbWltZVR5cGU7CiB9CiAKLVN0cmluZyBGaWxlOjpj
b250ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIEZpbGU6OmRlc3Rp
bmF0aW9uVHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0cmluZyBuYW1l
OwotICAgIFN0cmluZyB0eXBlOwotICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUocGF0aCwg
U3RyaW5nKCksIG5hbWUsIHR5cGUpOwotCisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisg
ICAgaWYgKGlzRmlsZVR5cGVQYWNrYWdlKHBhdGgpKQorICAgICAgICByZXR1cm4gImFwcGxpY2F0
aW9uL3ppcCJfczsKKworICAgIGlmIChhbGxvd2VkVHlwZXMuY29udGFpbnModHlwZSkpCisgICAg
ICAgIHJldHVybiB0eXBlOworICAgIAorICAgIGZvciAoYXV0byYgYWxsb3dlZFR5cGUgOiBhbGxv
d2VkVHlwZXMpIHsKKyAgICAgICAgaWYgKGFsbG93ZWRUeXBlID09ICJpbWFnZS8qIikKKyAgICAg
ICAgICAgIHJldHVybiB0eXBlOworICAgICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoYWxsb3dlZFR5cGUpKQorICAgICAgICAgICAg
cmV0dXJuIGFsbG93ZWRUeXBlOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiB0eXBlOwogfQog
CitTdHJpbmcgRmlsZTo6bmFtZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVHlwZSkKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkg
PyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CisjaWYg
RU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgaWYgKGRlc3RpbmF0aW9uVHlwZSA9PSAiYXBw
bGljYXRpb24vemlwIl9zKQorICAgICAgICBuYW1lID0gbWFrZVN0cmluZyhuYW1lLCAiLnppcCJf
cyk7CisgICAgZWxzZSBpZiAoIWRlc3RpbmF0aW9uVHlwZS5pc0VtcHR5KCkgJiYgdHlwZSAhPSBk
ZXN0aW5hdGlvblR5cGUpIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGRlc3RpbmF0aW9uVHlwZSk7CisgICAgICAg
IG5hbWUgPSBtYWtlU3RyaW5nKG5hbWUsICIuIl9zLCBleHRlbnNpb25zWzBdKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICByZXR1cm4gbmFtZTsKK30KKwogYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2lzRGlyZWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBk
MmY5MzhiNDIwZDNhNjBmYjkzZjc0MGJjYjA0ZDc0MWY4M2VmZjc4Li44ZmRhYmMxZmNiZGI0MTJh
ZmQ3NzBlNzlkZjM3ZWU2NWQwZjNlODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBv
cHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNz
b2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRl
ZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9LCBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGFsbG93ZWRUeXBlcyA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5n
IHRoZSAnbmV3IEZpbGUnIGNvbnN0cnVjdG9yLgogICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRl
KFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQpAQCAtNzYsMjggKzc2
LDI1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGxhc3RNb2RpZmllZCgp
IGNvbnN0OyAvLyBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIEVwb2NoLgogICAgIGNvbnN0
IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlOyB9IC8vIE51bWJlciBvZiBtaWxsaXNlY29uZHMg
c2luY2UgRXBvY2guCiAKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpOworICAgIHN0YXRpYyBTdHJpbmcgY29udGVudFR5cGVGb3JGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOworICAg
IHN0YXRpYyBTdHJpbmcgZGVzdGluYXRpb25UeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgdHlwZSA9IHsgfSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2Vk
VHlwZXMgPSB7IH0pOworICAgIHN0YXRpYyBTdHJpbmcgbmFtZUZvckZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0
eXBlID0geyB9LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKICNpZiBF
TkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXBsYWNlRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHN0YXRpYyBib29sIGlzRmlsZVR5cGVQYWNrYWdl
KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCk7Ci0gICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYg
cGF0aCwgU3RyaW5nJiYgbmFtZSk7CisgICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgcGF0aCwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsKICAg
ICBGaWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKICAgICBGaWxlKGNvbnN0IEJs
b2ImLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAKICAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsK
IAotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1l
LCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFj
ZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0
cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7Ci0jZW5k
aWYKLQogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwogICAg
IFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCmluZGV4IDY2NGY5
YTUzNjEzZGYyNmNhMTdjNzA3YzIxYjUwYzY0NjQ1MjA0ZTYuLjEwNTQ5OGJlY2FmYTgwYjI3MTY3
NGExYzMxNDQ3NDAzMTcxNWQwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGaWxlOjpzaG91
bGRSZXBsYWNlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGU6OmlzRmlsZVR5cGVQ
YWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3LDEzICs1Nyw2IEBAIGJvb2wgRmlsZTo6c2hvdWxk
UmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBVVFR5cGVDb25mb3Jt
c1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZil1dGksIGtVVFR5cGVQYWNrYWdlKTsKIH0KIAotdm9p
ZCBGaWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZl
TmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSkKLXsKLSAgICBBU1NFUlQoIUZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8gRXhwZWN0aW5n
IHRvIGdldCBhIHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3IgZGlyZWN0b3Jp
ZXMuCi0gICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwotICAg
IGVmZmVjdGl2ZU5hbWUgPSBtYWtlU3RyaW5nKChuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGUpLCAiLnppcCJfcyk7
Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggNWUx
ZDRjMDBhOWMwNjhjODAzMWMyNGNjZDYwYWIyMGE2YWZhMDYwYi4uMTNjODYyNzk3YTIzNDRjMWZl
Nzk1MjA2NjE2Yjc0MDJjMTVmZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgc3RhdGljIFRo
cmVhZFNwZWNpZmljPEJsb2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAq
bWFwOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVS
TChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBl
KQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0
aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxv
YlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgsIG5hbWUsIGNvbnRl
bnRUeXBlLCBkZXN0aW5hdGlvblR5cGUpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCks
IHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlz
b2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JV
UkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUp
OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9
IHBhdGguaXNvbGF0ZWRDb3B5KCksIG5hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgpLCBjb250ZW50
VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblR5cGUgPSBkZXN0
aW5hdGlvblR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgs
IG5hbWUsIGRlc3RpbmF0aW9uVHlwZSksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBh
OWM3OWZlMjI5MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi4wZTBmNmYzYmU4YTM5ZmM4
Mzk2ZjFiOTNiYWE4M2M5MzkyNzAzMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25UeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwg
VmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVS
TE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDNlMmY5YmVhZjAwZDI1ODYwNDM2
YjdiNjA4YmZlOWZiMjMxOTViYWUuLmQzZDVhOTc4ZDUzZjVmMjljODBmMTgwNjYwNWI1YzU4OTZk
Yjk5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDA3LDcgKzQw
Nyw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZp
bGVzLCBSZXF1ZXN0SWNvbiBzaG91bGRSZXF1ZXN0CiAgICAgcHJvdGVjdGVkSW5wdXRFbGVtZW50
LT5zZXRDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAK
LXZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2Vy
RmlsZUluZm8+JiBwYXRocywgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29u
KQordm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29z
ZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcywg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQogewogICAgIGlmICghZGlz
cGxheVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlT
dHJpbmc7CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nl
bihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogCiAgICAg
YXV0byBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgPSBhbGxvd3NEaXJlY3RvcmllcygpID8gRmls
ZUxpc3RDcmVhdG9yOjpTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyA6IEZpbGVMaXN0Q3Jl
YXRvcjo6U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpObzsKICAgICBhdXRvIHNob3VsZFJlcXVl
c3RJY29uID0gaWNvbiA/IFJlcXVlc3RJY29uOjpZZXMgOiBSZXF1ZXN0SWNvbjo6Tm87Ci0gICAg
bV9maWxlTGlzdENyZWF0b3IgPSBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShwYXRocywgc2hvdWxk
UmVzb2x2ZURpcmVjdG9yaWVzLCBbdGhpcywgc2hvdWxkUmVxdWVzdEljb25dKFJlZjxGaWxlTGlz
dD4mJiBmaWxlTGlzdCkgeworICAgIG1fZmlsZUxpc3RDcmVhdG9yID0gRmlsZUxpc3RDcmVhdG9y
OjpjcmVhdGUocGF0aHMsIGFsbG93ZWRUeXBlcywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBb
dGhpcywgc2hvdWxkUmVxdWVzdEljb25dKFJlZjxGaWxlTGlzdD4mJiBmaWxlTGlzdCkgewogICAg
ICAgICBzZXRGaWxlcyhXVEZNb3ZlKGZpbGVMaXN0KSwgc2hvdWxkUmVxdWVzdEljb24pOwogICAg
ICAgICBtX2ZpbGVMaXN0Q3JlYXRvciA9IG51bGxwdHI7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5oCmluZGV4IDgyNmFjMjhlMzFlODZlZDlhMWNjOTlhMTU2ZDQ2N2U5NGIw
MzE1NWIuLjcyZjUxMmEwNmNlMDQ5Nzg4ZDlmYjVmNjU2OTYzNGMwY2UzMjM3YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBT
dHJpbmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZmlsZXNDaG9z
ZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxwdHIpIGZpbmFsOworICAgIHZvaWQgZmlsZXND
aG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9
IHsgfSwgSWNvbiogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIC8vIEZpbGVJY29uTG9hZGVyQ2xp
ZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgaWNvbkxvYWRlZChSZWZQdHI8SWNvbj4mJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggZGM2Mjg1
YmM5YjU4MzUwNmUzZDZkMjBlMDk1MTY1MWNlOTBkZWNkYi4uMWUxNzQ3NzE2NWI1NzhlMzY0ZDJj
OGU4MmQ2YmJjNzFkYjJiZjI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
TGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9y
LmNwcApAQCAtNTcsMTYgKzU3LDE2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVz
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlCiAgICAgfQog
fQogCi1GaWxlTGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNo
b29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgc2hvdWxkUmVz
b2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2Vy
RmlsZUluZm8+JiBwYXRocywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMsIFNo
b3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHNob3VsZFJlc29sdmVE
aXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5vKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5v
PihwYXRocykpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVGaWxlTGlzdDxTaG91
bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5vPihwYXRocywgYWxsb3dlZFR5cGVzKSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCB0byBhdm9pZCBibG9ja2luZyB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIG1fY29tcGxldGlv
bkhhbmRlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBtX3dvcmtRdWV1
ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJGaWxlTGlzdENyZWF0b3IgV29yayBRdWV1ZSIpOwotICAg
ICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcGF0aHMgPSBjcm9zc1RocmVhZENvcHkocGF0aHMpXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgYXV0byBmaWxlTGlzdCA9IGNyZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJl
Y3Rvcmllczo6WWVzPihwYXRocyk7CisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYXRocyA9IGNyb3NzVGhyZWFkQ29w
eShwYXRocyksIGFsbG93ZWRUeXBlcyA9IGNyb3NzVGhyZWFkQ29weShhbGxvd2VkVHlwZXMpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byBmaWxlTGlzdCA9IGNyZWF0ZUZpbGVMaXN0PFNo
b3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVzPihwYXRocywgYWxsb3dlZFR5cGVzKTsKICAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBmaWxlTGlzdCA9IFdURk1vdmUoZmlsZUxpc3QpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kZXIgPSBXVEZNb3ZlKG1fY29t
cGxldGlvbkhhbmRlcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kZXIoV1RG
TW92ZShmaWxlTGlzdCkpOwpAQCAtNzYsMTQgKzc2LDE0IEBAIEZpbGVMaXN0Q3JlYXRvcjo6Rmls
ZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNo
b3VsCiB9CiAKIHRlbXBsYXRlPEZpbGVMaXN0Q3JlYXRvcjo6U2hvdWxkUmVzb2x2ZURpcmVjdG9y
aWVzIHNob3VsZFJlc29sdmVEaXJlY3Rvcmllcz4KLVJlZjxGaWxlTGlzdD4gRmlsZUxpc3RDcmVh
dG9yOjpjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBh
dGhzKQorUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNvbnN0
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYWxsb3dlZFR5cGVzKQogewogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVPYmplY3RzOwog
ICAgIGZvciAoYXV0byYgaW5mbyA6IHBhdGhzKSB7CiAgICAgICAgIGlmIChzaG91bGRSZXNvbHZl
RGlyZWN0b3JpZXMgPT0gU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXMgJiYgRmlsZVN5c3Rl
bTo6ZmlsZUlzRGlyZWN0b3J5KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5w
YXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9iamVjdHMp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3Jl
YXRlKGluZm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkpOworICAgICAgICAgICAgZmlsZU9iamVj
dHMuYXBwZW5kKEZpbGU6OmNyZWF0ZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUsIGFsbG93
ZWRUeXBlcykpOwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVPYmplY3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0
Q3JlYXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuaAppbmRleCA3
N2MwYTAzOTBmYjExNzA1ZmFmZjk1NGYxNWNhZmRlNjhhZmFjMjI1Li5lNzY1NzA5ZmQxNDBjZmIy
NDRmYjZiMTYwOWQ1ODg5ODEyYjkzNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0Q3JlYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVh
dG9yLmgKQEAgLTQxLDkgKzQxLDkgQEAgcHVibGljOgogICAgIHVzaW5nIENvbXBsZXRpb25IYW5k
bGVyID0gRnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+JiYpPjsKIAogICAgIGVudW0gY2xhc3Mg
U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWY8Rmls
ZUxpc3RDcmVhdG9yPiBjcmVhdGUoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBw
YXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3Rvcmllcywg
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICBzdGF0aWMgUmVmPEZp
bGVMaXN0Q3JlYXRvcj4gY3JlYXRlKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
cGF0aHMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzLCBTaG91bGRSZXNvbHZl
RGlyZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsZUxpc3RDcmVhdG9yKHBhdGhzLCBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGVM
aXN0Q3JlYXRvcihwYXRocywgYWxsb3dlZFR5cGVzLCBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgfQogCiAgICAgfkZpbGVMaXN0Q3Jl
YXRvcigpOwpAQCAtNTEsMTAgKzUxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbCgpOwog
CiBwcml2YXRlOgotICAgIEZpbGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIEZpbGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mIHBhdGhzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcywgU2hvdWxk
UmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHRlbXBsYXRl
PFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM+Ci0gICAg
c3RhdGljIFJlZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+Jik7CisgICAgc3RhdGljIFJlZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3Qo
Y29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBhbGxvd2VkVHlwZXMpOwogCiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAg
ICAgQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUNob29zZXIuY3BwCmluZGV4IGFjN2Y1ZDQ3YmNmNDUzOGZlZDgwYzYyYjk5YzI0
NzM1MDQ3NDg4NWIuLjVjOTAzZTk1NWJmNzlhMTM5ZmNlOWUyMWU0MmFjOGFlYWEyM2Q1ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTI5LDYgKzI5LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogCisjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZpbGVDaG9v
c2VyOjpGaWxlQ2hvb3NlcihGaWxlQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBGaWxlQ2hv
b3NlclNldHRpbmdzJiBzZXR0aW5ncykKQEAgLTQ0LDYgKzQ2LDE5IEBAIFJlZjxGaWxlQ2hvb3Nl
cj4gRmlsZUNob29zZXI6OmNyZWF0ZShGaWxlQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBG
aWxlQ2hvb3NlCiAKIEZpbGVDaG9vc2VyOjp+RmlsZUNob29zZXIoKSA9IGRlZmF1bHQ7CiAKK0hh
c2hTZXQ8U3RyaW5nPiBGaWxlQ2hvb3Nlcjo6YWxsb3dlZFR5cGVzKCkgY29uc3QKK3sKKyAgICBI
YXNoU2V0PFN0cmluZz4gYWxsb3dlZFR5cGVzOworICAgIGZvciAoYXV0byYgdHlwZSA6IG1fc2V0
dGluZ3MuYWNjZXB0TUlNRVR5cGVzKQorICAgICAgICBhbGxvd2VkVHlwZXMuYWRkKHR5cGUpOwor
ICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogbV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9u
cykgeworICAgICAgICBhdXRvIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihleHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0ZW5zaW9uLnJpZ2h0KGV4
dGVuc2lvbi5sZW5ndGgoKSAtIDEpIDogZXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKCF0eXBlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGFsbG93ZWRUeXBlcy5hZGQodHlwZSk7CisgICAgfQorICAg
IHJldHVybiBhbGxvd2VkVHlwZXM7Cit9CisKIHZvaWQgRmlsZUNob29zZXI6OmludmFsaWRhdGUo
KQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CkBAIC03MCw3ICs4NSw3IEBAIHZvaWQgRmlsZUNo
b29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwogICAgIGZvciAoYXV0byYgZmlsZW5h
bWUgOiBmaWxlbmFtZXMpCiAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZv
KGZpbGVuYW1lKSk7Ci0gICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzKTsKKyAgICBtX2Ns
aWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMsIGFsbG93ZWRUeXBlcygpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
Q2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAppbmRleCBl
MjRlZDI4Y2FkMjhiZDNkYmU5YWQ5OWQxZjllYTg0NGIxNmQ1NjU0Li4zZGY1NGYwNTE1YmRmZjQ1
MDIxMDQ4NmE1MjYyZDg4NGI4OTQ5YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgRmlsZUNob29zZXJfaAogI2RlZmluZSBG
aWxlQ2hvb3Nlcl9oCiAKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtNzYsNyArNzcsNyBAQCBjbGFzcyBGaWxlQ2hvb3NlckNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsZUNob29zZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmls
ZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxw
dHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVD
aG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7
IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSA9
IDA7CiB9OwogCiBjbGFzcyBGaWxlQ2hvb3NlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVDaG9v
c2VyPiB7CkBAIC0xMDIsNiArMTAzLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGaWxlQ2hv
b3NlcihGaWxlQ2hvb3NlckNsaWVudCosIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIAor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXMoKSBjb25zdDsKKwogICAgIEZpbGVDaG9v
c2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBGaWxlQ2hvb3NlclNldHRpbmdz
IG1fc2V0dGluZ3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5oCmluZGV4IDk5NmVlNzg0ZWRlMmFkYjAxYTE1NTBlMmZlNTBkNTA2NDNiM2ZhM2YuLjEzZTI1
MTZmOTYxMjY1NjdlMTU5ZWFlNWY1NWMyMjRiMDkwZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYg
YSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCi0gICAgc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVj
ayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBh
IEphdmFTY3JpcHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCA1YWJmZDc1Y2I0OTQ1NmU0MmQzOWQ0NGQzYmMyMjU5
YWFmZmE1MjI2Li5hNzI2ZTcyNTU3MTE1OTY0ODVjZGFhMTQ5OTZiMzhhZjBkZGY0MGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuY3BwCkBAIC0zMiwxNSArMzIsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBT
dHJpbmcmIHBhdGgpCitCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkKICAgICA6IG1fcGF0aChwYXRoKQor
ICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fZGVzdGluYXRp
b25UeXBlKGRlc3RpbmF0aW9uVHlwZSkKIHsKIH0KIAogQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjp+
QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCkKIHsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkK
LSAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQorICAgIGlmICghbV9yZXBsYWNl
bWVudFBhdGguaXNOdWxsKCkgJiYgbV9kZXN0aW5hdGlvblR5cGUgPT0gImFwcGxpY2F0aW9uL3pp
cCJfcykKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0aCk7
CiAjZW5kaWYKIH0KQEAgLTQ4LDcgKzUxLDcgQEAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjp+Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlKCkKIGNvbnN0IFN0cmluZyYgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
OjpwYXRoKCkKIHsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBpZiAobV9yZXBs
YWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChyZXBsYWNlbWVudFNob3VsZEJlR2Vu
ZXJhdGVkKCkpCiAgICAgICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCk7CiAKICAgICBpZiAo
IW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQpAQCAtNjEsNyArNjQsNyBAQCBjb25zdCBTdHJp
bmcmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCgpCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlOjpzaXplKCkKIHsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVO
VCkKLSAgICBpZiAobV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChyZXBs
YWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKCkpCiAgICAgICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRG
aWxlKCk7CiAjZW5kaWYKIApAQCAtNzMsNyArNzYsNyBAQCBPcHRpb25hbDxXYWxsVGltZT4gQmxv
YkRhdGFGaWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKQogI2lmIEVOQUJM
RShGSUxFX1JFUExBQ0VNRU5UKQogICAgIC8vIFdlIGRvIG5vdCBjdXJyZW50bHkgdHJhY2sgbW9k
aWZpY2F0aW9ucyBmb3IgZ2VuZXJhdGVkIGZpbGVzLCBiZWNhdXNlIHdlIGhhdmUgYSBzbmFwc2hv
dC4KICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzIGluY29uc2lzdGVudCB3aXRoIHJlZ3Vs
YXIgZmlsZSBoYW5kbGluZyAtIEZpbGUgb2JqZWN0cyBzaG91bGQgYmUgaW52YWxpZGF0ZWQgd2hl
biB1bmRlcmx5aW5nIGZpbGVzIGNoYW5nZS4KLSAgICBpZiAobV9yZXBsYWNlbWVudFNob3VsZEJl
R2VuZXJhdGVkIHx8ICFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKKyAgICBpZiAoIW1fZGVz
dGluYXRpb25UeXBlLmlzTnVsbCgpIHx8ICFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogICAgIHJldHVybiBtX2V4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZTsKQEAgLTg2LDcgKzg5LDggQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKCkKICAgICAvLyB0aGUgY29zdCBvZiB0
cmFja2luZyBmaWxlIG1vZGlmaWNhdGlvbnMuCiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVO
VCkKLSAgICBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgPSBGaWxlOjpzaG91bGRSZXBs
YWNlRmlsZShtX3BhdGgpOworICAgIGlmIChGaWxlOjppc0ZpbGVUeXBlUGFja2FnZShtX3BhdGgp
KQorICAgICAgICBtX2Rlc3RpbmF0aW9uVHlwZSA9ICJhcHBsaWNhdGlvbi96aXAiX3M7CiAjZW5k
aWYKIAogICAgIC8vIEZJWE1FOiBTb21lIHBsYXRmb3JtcyBwcm92aWRlIGJldHRlciB3YXlzIHRv
IGxpc3RlbiBmb3IgZmlsZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMsIGNvbnNpZGVyIHVzaW5nIHRo
ZXNlLgpAQCAtOTcsNyArMTAxLDcgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnN0YXJ0
VHJhY2tpbmdNb2RpZmljYXRpb25zKCkKICAgICBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSA9
IG1ldGFkYXRhLnZhbHVlKCkubW9kaWZpY2F0aW9uVGltZTsKIAogI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQotICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCisgICAg
aWYgKHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5oCmluZGV4IDY1ODgyOWQwN2ZjZmJkNmIwMmEyMGUxY2IwMWZkYzlk
NmRjYzA3YzkuLmJkZDFlZjgyOTUyZWY0MTQxMTc2ZDNjNjliODE3YTEzMjJjMzE3YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQmxvYkRhdGFGaWxlUmVmZXJlbmNlX2gKLSNkZWZpbmUg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL01h
cmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDkgKzM0LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lID0geyB9LCBjb25zdCBT
dHJpbmcmIHR5cGUgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlID0geyB9KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
KHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlKHBhdGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSkpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgfkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpOwpAQCAtNTIsMjIgKzUxLDIzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lID0g
eyB9LCBjb25zdCBTdHJpbmcmIHR5cGUgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25U
eXBlID0geyB9KTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKKyAg
ICBib29sIHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSBjb25zdDsKICAgICB2b2lkIGdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlKCk7CiAjZW5kaWYKIAogICAgIFN0cmluZyBtX3BhdGg7Cisg
ICAgU3RyaW5nIG1fbmFtZTsKKyAgICBTdHJpbmcgbV90eXBlOworICAgIFN0cmluZyBtX2Rlc3Rp
bmF0aW9uVHlwZTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBTdHJpbmcgbV9y
ZXBsYWNlbWVudFBhdGg7Ci0gICAgYm9vbCBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQg
eyBmYWxzZSB9OwogI2VuZGlmCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fc2l6ZSB7IDAgfTsK
ICAgICBNYXJrYWJsZTxXYWxsVGltZSwgV2FsbFRpbWU6Ok1hcmthYmxlVHJhaXRzPiBtX2V4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZTsKIH07CiAKIH0KLQotI2VuZGlmIC8vIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KaW5kZXggNWVjNzc3YTg2OTkw
NjcxMThjYmNkNTUyOGU4ZjRmZmU5MmE0NDg2Yi4uMWUxYmNjMWJiMWFiYzJiNTZhMmE1NDEyZGM4
OTZjZjg5OGYxMTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtMjgsMjUg
KzI4LDU5IEBACiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKIAorI2ltcG9ydCAiVVRJ
VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW1wb3J0IDx3dGYv
RmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2Jvb2wgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpyZXBsYWNlbWVudFNob3Vs
ZEJlR2VuZXJhdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlICE9IG1fZGVzdGluYXRp
b25UeXBlICYmIG1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpOworfQorCiB2b2lkIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogewotICAgIEFTU0VSVCht
X3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSk7Ci0gICAgQVNTRVJUKG1fcmVwbGFjZW1lbnRTaG91
bGRCZUdlbmVyYXRlZCk7CisgICAgQVNTRVJUKHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQo
KSk7CiAKICAgICBwcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogCi0gICAgYXV0byBnZW5lcmF0ZWRG
aWxlID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShtX3BhdGgpOwotICAg
IGlmICghZ2VuZXJhdGVkRmlsZS5pc051bGwoKSkKLSAgICAgICAgbV9yZXBsYWNlbWVudFBhdGgg
PSBXVEZNb3ZlKGdlbmVyYXRlZEZpbGUpOworICAgIFN0cmluZyBnZW5lcmF0ZWRGaWxlOworICAg
IGlmIChtX2Rlc3RpbmF0aW9uVHlwZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQorICAgICAgICBn
ZW5lcmF0ZWRGaWxlID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShtX3Bh
dGgpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobV90eXBlICE9IG1fZGVzdGluYXRpb25U
eXBlKTsKKyAgICAgICAgQVNTRVJUKG1fZGVzdGluYXRpb25UeXBlLnN0YXJ0c1dpdGgoImltYWdl
LyJfcykpOworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgaW1hZ2Ugc291cmNlLgorICAgICAgICBh
dXRvIHNvdXJjZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBP
U0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUNyZWF0ZVdpdGhVUkwoc291cmNlVVJMLmdldCgpLCBOVUxMKSk7CisKKyAgICAg
ICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBwbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgICAgIGdlbmVyYXRlZEZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShtX25hbWUsIHBsYXRmb3JtRmlsZUhhbmRs
ZSk7CiAKLSAgICBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgPSBmYWxzZTsKLSAgICBp
ZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUg
ZGF0YSBjb25zdW1lci4KKyAgICAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tz
ID0geyBbXSh2b2lkICppbmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkgLT4g
c2l6ZV90IHsKKyAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1GaWxlSGFuZGxlID0gKnN0YXRpY19j
YXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAgICAgICAgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKHBsYXRmb3JtRmlsZUhhbmRsZSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICAgICAgfSwgTlVMTCB9Owor
CisgICAgICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlKCZw
bGF0Zm9ybUZpbGVIYW5kbGUsICZjYWxsYmFja3MpKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhl
IGltYWdlIGRlc3RpbmF0aW9uLgorICAgICAgICBhdXRvIHV0aSA9IFVUSUZyb21NSU1FVHlwZSht
X2Rlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9wdENGKENH
SW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhQ29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHV0
aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAxLCBOVUxMKSk7CisKKyAgICAgICAgLy8gV3JpdGUg
dGhlIGltYWdlIHNvdXJjZSB0byB0aGUgaW1hZ2UgZGVzdGluYXRpb24uCisgICAgICAgIENHSW1h
Z2VEZXN0aW5hdGlvbkFkZEltYWdlRnJvbVNvdXJjZShkZXN0aW5hdGlvbi5nZXQoKSwgc291cmNl
LmdldCgpLCAwLCBudWxscHRyKTsKKyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUo
ZGVzdGluYXRpb24uZ2V0KCkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocGxhdGZv
cm1GaWxlSGFuZGxlKTsKKyAgICB9CisKKyAgICBpZiAoIWdlbmVyYXRlZEZpbGUuaXNOdWxsKCkp
IHsKKyAgICAgICAgbV9yZXBsYWNlbWVudFBhdGggPSBXVEZNb3ZlKGdlbmVyYXRlZEZpbGUpOwog
ICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxv
d2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKICAgICAgICAgICAgIG1fc2l6ZSA9IG1l
dGFkYXRhLnZhbHVlKCkubGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmluZGV4IGQ5
MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIxNDg4MjMuLjg2YTI0NTg4YTcxZDMwYzU2
MTViMzM2ZWZkYjBkNjY3YjdiNjk3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAtMjUsNiAr
MjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLT3BlblBhbmVsUGFyYW1l
dGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9Db3JlU2VydmljZXNTUEkuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTYyLDExICs2NCwx
MyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3RyaW5nICo+ICo+
ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9
IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVu
YW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMgfHwgIUNGQXJyYXlH
ZXRDb3VudChleHRlbnNpb25zLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKilt
aW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcgKj4gKilleHRlbnNpb25z
LmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFkZCBhZGRpdGlvbmFsIG1pbWUgdHlw
ZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkgbWF5IG5vdCByZXR1cm4u
Ci0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKEAiaW1hZ2Uvd2VicCIsIEAid2VicCIp
OworICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJwIiwgQFtAIndl
YnAiXSk7CiAKICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKICAgICB9
KCkpOwpAQCAtNzksNiArODMsMTggQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNp
b25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQogICAgIHJldHVybiBbZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKIH0KIAorc3RhdGljIE5T
U3RyaW5nICptaW1lVHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9uKQoreworICAg
IE5TU2V0PE5TU3RyaW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFw
KCkga2V5c09mRW50cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1lVHlwZSwgTlNT
ZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBpZiAoW21pbWVU
eXBlIGhhc1N1ZmZpeDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgaWYg
KFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAgICAgICByZXR1
cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5k
ZXg6MV1dOworICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6ZXh0ZW5z
aW9uXTsKKyAgICB9XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3RdOworfQorCiBA
aW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb24KQEAgLTEzNiwzNiArMTUyLDExOCBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJp
bmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAgICAgcmV0
dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAKLS0gKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCistIChOU0FycmF5PE5T
U3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBhdXRvIGFjY2VwdGVk
TUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVk
RmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgcmV0
dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0c107Cit9CiAK
LSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNv
bnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7CistIChOU0Fy
cmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcworeworICAgIE5T
U3RyaW5nICphbGxGaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiQWxsIEZpbGVzIiwgIkFsbCBG
aWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYWxsSW1hZ2VGaWxlc1RpdGxl
ID0gV0VCX1VJX1NUUklORygiSW1hZ2UgRmlsZXMiLCAiSW1hZ2UgRmlsZXMgaW4gZmlsZXIgcGlj
a2VyIik7CisgICAgTlNTdHJpbmcgKmFsbFZpZGVvRmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkco
IlZpZGVvIEZpbGVzIiwgIlZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOworICAgIE5TU3Ry
aW5nICphbGxBdWRpb0ZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJBdWRpbyBGaWxlcyIsICJB
dWRpbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqY3VzdG9tRmlsZXNU
aXRsZSA9IFdFQl9VSV9TVFJJTkcoIkN1c3RvbSBGaWxlcyIsICJDdXN0b20gRmlsZXMgaW4gZmls
ZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmltYWdlVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCIl
QCBpbWFnZSIsICJJbWFnZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciIpOworICAgIE5TU3Ry
aW5nICp2aWRlb1RpdGxlID0gV0VCX1VJX1NUUklORygiJUAgdmlkZW8iLCAiVmlkZW8gZm9ybWF0
IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYXVkaW9UaXRsZSA9IFdFQl9V
SV9TVFJJTkcoIiVAIGF1ZGlvIiwgIkF1ZGlvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyIik7
CisgICAgCisgICAgY29uc3RleHByIGF1dG8gaW1hZ2VUeXBlID0gQCJpbWFnZSI7CisgICAgY29u
c3RleHByIGF1dG8gdmlkZW9UeXBlID0gQCJ2aWRlbyI7CisgICAgY29uc3RleHByIGF1dG8gYXVk
aW9UeXBlID0gQCJhdWRpbyI7CisgICAgY29uc3RleHByIGF1dG8gY3VzdG9tVHlwZSA9IEAiY3Vz
dG9tIjsKICAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYgIVthY2Nl
cHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxsRmlsZXNUaXRs
ZV07CisgICAgYXV0byBjb21wb3NlVGl0bGVzID0gXihOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcg
KnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5KiB0
aXRsZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgICAgIC8vIGlmIHsgdHlwZSBz
dWJUeXBlIH0gPT0gImltYWdlL3BuZyIgdGhlbiBhZGQgIlBORyBJbWFnZSIKKyAgICAgICAgaWYg
KFtzdWJUeXBlIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0eXBlVGl0bGUgPSBb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSA/IGltYWdlVGl0bGUgOiAoW3R5cGUgaXNF
cXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gPyB2aWRlb1RpdGxlIDogYXVkaW9UaXRsZSk7CisgICAg
ICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAgICAgIFt0aXRs
ZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVUaXRsZSwgW3N1YlR5
cGUgdXBwZXJjYXNlU3RyaW5nXV1dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVUaXRsZSwg
c3ViVHlwZV1dOworICAgICAgICB9IGVsc2UgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpjdXN0
b21UeXBlXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9PSAiQ3VzdG9t
IEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZpbGVzIgorICAgICAgICAgICAgW3RpdGxlcyBhZGRP
YmplY3Q6Y3VzdG9tRmlsZXNUaXRsZV07CisgICAgICAgIH0KIAotICAgIGlmICghKFthY2NlcHRl
ZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRd
KSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRsZV07Cisg
ICAgICAgIC8vIGlmIGFsbFR5cGUgPT0gImltYWdlIiB0aGVuIGFkZCAiSW1hZ2UgRmlsZXMiCisg
ICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYWxs
VHlwZVRpdGxlID0gW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlwZV0gPyBhbGxJbWFn
ZUZpbGVzVGl0bGUgOiAoW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gPyBhbGxW
aWRlb0ZpbGVzVGl0bGUgOiBhbGxBdWRpb0ZpbGVzVGl0bGUpOworICAgICAgICAgICAgW3RpdGxl
cyBhZGRPYmplY3Q6YWxsVHlwZVRpdGxlXTsKKyAgICAgICAgfQogCi0gICAgYXV0byBtaW1lVHlw
ZSA9IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byByYW5nZSA9IFtt
aW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2UubGVuZ3Ro
KQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLSAg
ICAKLSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6
cmFuZ2UubG9jYXRpb25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vi
c3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAgaWYgKFttaW1l
VHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBAW1tOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vi
c3RyaW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3Ry
aW5nRnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRsZV07CisgICAgICAgIC8vIEluIGFsbCBjYXNl
cyBhZGQgIkFsbCBGaWxlcyIKKyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxsRmlsZXNUaXRs
ZV07CisgICAgICAgIHJldHVybiB0aXRsZXM7CisgICAgfTsKKworICAgIC8vIE5vIGFjY2VwdCBh
dHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4KKyAgICBpZiAoIVtbc2VsZiBfYWNjZXB0ZWRN
SU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXSBjb3Vu
dF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCBAIiIpOworCisgICAg
YXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6W3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXV0pOworCisgICAgZm9yIChOU1N0
cmluZyAqZXh0ZW5zaW9uIGluIFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXSkgeworICAg
ICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIE5T
U3RyaW5nICptaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKFtleHRlbnNpb24gc3Vic3Ry
aW5nRnJvbUluZGV4OjFdKTsKKworICAgICAgICAvLyBVbmtub3duIGZpbGUgZXh0ZW5zaW9uOiA8
aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIueHl6Ij4KKyAgICAgICAgaWYgKCFtaW1lVHlwZSkK
KyAgICAgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAiIiwgQCIiKTsK
KworICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBlXTsKKyAgICB9
CisKKyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3ViVHlwZSA9IG5p
bDsKKyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKworICAgIGZvciAoTlNTdHJpbmcgKm1p
bWVUeXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzLmdldCgpKSB7CisgICAgICAgIE5TUmFuZ2UgcmFu
Z2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKyAgICAgICAgaWYgKCFyYW5nZS5s
ZW5ndGgpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIG1pbWVUeXBlUHJl
Zml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOworICAgICAg
ICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5n
ZS5sb2NhdGlvbiArIDFdOworCisgICAgICAgIC8vIE9ubHkgaW1hZ2UsIHZpZGVvIGFuZCBhdWRp
byBtaW1lIHR5cGVzIHdpbGwgaGF2ZSBkZXNjcmlwdGl2ZSB0aXRsZXMuIE90aGVyIHR5cGVzIHdp
bGwgYmUgc2hvd24KKyAgICAgICAgLy8gYXMgIkN1c3RvbSBGaWxlcyIuICJDdXN0b20gRmlsZXMi
IHdpbGwgYmUgc2hvd24gYWxzbyBpZiBtb3JlIHRoYW4gYSBtaW1lIHR5cGUgaXMgc3BlY2lmaWVk
LgorICAgICAgICBpZiAoIVttaW1lVHlwZVByZWZpeCBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBl
XSAmJiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVdICYmICFbbWlt
ZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOmF1ZGlvVHlwZV0pCisgICAgICAgICAgICB0eXBl
ID0gY3VzdG9tVHlwZTsKKyAgICAgICAgZWxzZSBpZiAoIXR5cGUpCisgICAgICAgICAgICB0eXBl
ID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6bWltZVR5cGVQcmVmaXhdKQorICAgICAgICAgICAgdHlwZSA9IGN1c3RvbVR5cGU7CisKKyAg
ICAgICAgLy8gIkN1c3RvbSBGaWxlcyIgYWxzbyB3aWxsIGJlIHNob3duIGlmIG1vcmUgdGhhbiBv
bmUgc3ViLXR5cGUgaXMgc3BlY2lmaWVkIHVubGVzcyAiKiIgaXMgc3BlY2lmaWVkLgorICAgICAg
ICBpZiAoIXN1YlR5cGUgfHwgW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpAIioiXSkK
KyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAgZWxzZSBpZiAo
IVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNFcXVhbFRvU3Ry
aW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBjdXN0b21UeXBlOwor
CisgICAgICAgIC8vIEFkZCAiSW1hZ2UgRmlsZXMiIHRpdGxlIGlmIG1pbWVUeXBlIGlzIGFsbG93
ZWQgZGVzdGVuYXRpb24gaW1hZ2UgZm9ybWF0LgorICAgICAgICBpZiAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KQorICAgICAgICAgICAgYWxsVHlwZSA9IGltYWdlVHlwZTsKKyAgICB9CisKKyAgICAvLyBDdXN0
b20gRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJhdWRpby8qLGltYWdlL3BuZyIgb3IgYWNjZXB0
PSJhcHBsaWNhdGlvbi9wZGYiLgorICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6Y3VzdG9t
VHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAiIiwgQCIi
KTsKKworICAgIC8vICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdlLyoiIG9y
IGFjY2VwdD0iYXVkaW8vKiIuCisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioi
XSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIHR5cGUpOwogCi0gICAg
aWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBAW1tOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBwZXJjYXNl
U3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAvLyBDdXN0b20g
RmlsZXMsICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdlL2pwZWcsaW1hZ2Uv
cG5nIi4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOmN1c3RvbVR5cGVdKQorICAg
ICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0b21UeXBlLCBAIiIsIGFsbFR5cGUpOwogCi0g
ICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIG1pbWVUeXBl
U3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIC8vICdTdWItdHlw
ZSBUeXBlJywgJ1R5cGUnIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2UvcG5nIi4KKyAg
ICByZXR1cm4gY29tcG9zZVRpdGxlcyh0eXBlLCBzdWJUeXBlLCBhbGxUeXBlKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBh
bmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgxMjBlNGFmMWJhZWEy
MmMwNjI0YWMyZTIzYjRlMWJkNGFkNi4uN2MxZmNkMWIyYTcxZWE1NWFlNmE1Yzc0OTc2NDJlYjUx
OGM4ODc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0zMSw4ICszMSw5
IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxO
U1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNUaXRsZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBlbmQKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY1ZWEy
ZDMxM2I1M2RkZTBjMmVlZDQ4YjExZjcyNTQyNzczNzBmZDAuLmE5YmRlMjFkNjQxYzJkODYyN2Ri
N2UzMDg4MmZmNjNhMGI2OWQ4MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNi0xNiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBG
aWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFs
bCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIElmIHRoZSBudW1iZXIgb2YgdGhlIGZpbGUgZXh0ZW5zaW9ucycgdGl0bGVzIGlzIHRo
cmVlLCBzZW5kIGFuIGFycmF5IG9mIAorICAgICAgICBhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHRv
IEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQuIEFsc28gc2V0IHRoZSBpbml0aWFsCisgICAgICAg
IHNlbGVjdGlvbiBvZiB0aGUgZmlsdGVyIHRvIHRoZSBpdGVtIG5hbWVkICJJbWFnZSBGaWxlcyIu
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5l
bDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6YWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczpdKToKKyAgICAg
ICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKToKKyAgICAgICAg
KC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpwb3B1cFRhcmdl
dDpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5P
cGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVy
OndlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBp
bml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisKIDIw
MjAtMDYtMTEgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlZCBsaWJzb3VwIGRlcGVuZGVuY3kgaW4gamhidWlsZC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KaW5kZXggNTcwYWFhNTRkYjk3MGU0NzQyNDg5NGY3YmQ4NzFhNzNmMmM3ZGQwZS4uZGJmOWQy
YTYwNDQyY2NjMmQ2MmI4Nzg4NmViMGNhZTFmYzFhNWZiYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTc3LDE1ICs3Nywx
NyBAQCBAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVjdCB7CiBA
cHJpdmF0ZQogICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOwogICAgIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAq
X2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7CiB9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBGaWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5Q
YW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmluZyAq
PiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7CistIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNP
cGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczogKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHsKICAgICBpZiAoKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7CiAg
ICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNv
cHldOworICAgICAgICBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxJbWFnZUZpbGVFeHRl
bnNpb25zIGNvcHldOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEwMCw2ICsxMDIs
MTIgQEAgLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKICAgICAgICAgICAgIFtfb3Bl
blBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNp
b25zXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBNaWRkbGUgaXRlbS4KKyAgICAgICAgaWYg
KCFbX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAgICAgW19vcGVuUGFu
ZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxJbWFnZUZpbGVFeHRlbnNpb25z
XTsKICAgICB9CiB9CiAKQEAgLTY0NCw3ICs2NTIsNyBAQCAtIChudWxsYWJsZSBOU1ZpZXcgKilj
cmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5z
aQogICAgIFtidXR0b24gc2V0VGFyZ2V0OnBvcHVwVGFyZ2V0XTsKICAgICBbYnV0dG9uIHNldEFj
dGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rpb246KV07CiAgICAgW2J1dHRvbiBzaXplVG9GaXRdOwot
ICAgIFtidXR0b24gc2VsZWN0SXRlbUF0SW5kZXg6MF07CisgICAgW2J1dHRvbiBzZWxlY3RJdGVt
QXRJbmRleDpbdGl0bGVzIGNvdW50XSA8PSAyID8gMCA6IDFdOwogICAgIFtwb3B1cFRhcmdldCBw
b3B1cEFjdGlvbjpidXR0b25dOwogICAgIAogICAgIE5TVmlldyogZmlsdGVyVmlldyA9IFtbW05T
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07CkBAIC02
ODcsMTAgKzY5NSwxMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogCiAgICAgb3BlblBhbmVs
LmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVj
dGlvbjsKIAorICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFt
ZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKKyAgICBOU0FycmF5ICphbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAg
TlNBcnJheSAqYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVuc2lvbnNU
aXRsZXMgY291bnRdID09IDIgPyBAW10gOiBwYXJhbWV0ZXJzLl9hbGxJbWFnZUZpbGVFeHRlbnNp
b25zOworICAgIAogICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAg
ICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lv
bnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgX2ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRX
aXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBhbGxvd2VkRmls
ZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczogYWxsSW1hZ2VGaWxlRXh0ZW5zaW9u
c107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0
ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7CiAgICAgTlNWaWV3ICpmaWx0ZXJWaWV3
ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgcG9w
dXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOwogICAgIGlmIChmaWx0ZXJWaWV3
KQogICAgICAgICBbb3BlblBhbmVsIHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402437</attachid>
            <date>2020-06-21 18:56:17 -0700</date>
            <delta_ts>2020-06-21 20:54:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200621185616.patch</filename>
            <type>text/plain</type>
            <size>47996</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM4NDYxY2YwOTVmNDM0
NjE2NDVlMTA2NDNmMmRkYTIwMzE5MzcxMy4uZWFhOTA5MTUwNTljYjhiZTlhMDI4ZjU5OGE5ODY3
NjJkNjQ3NTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA2LTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XSBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBl
PSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0Nwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIHR5cGUgb2YgdGhlIHNlbGVjdGVkIGlt
YWdlIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQgdHlwZXMsIHRoZQorICAgICAgICBpbWFnZSB3
aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZmlyc3QgZGVzdGluYXRpb24gYWxsb3dlZCBpbWFnZSB0
eXBlIGFuZAorICAgICAgICBpdCB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZS4g
VGhpcyBmaWxlIGlzIGEgcmVwbGFjZW1lbnQgdG8gdGhlCisgICAgICAgIG9yaWdpbmFsIGltYWdl
LCBzbyB0aGUgdHlwZSwgdGhlIHNpemUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgcmVhZCBmcm9tIGl0
CisgICAgICAgIGluc3RlYWQgb2YgdGhlIHNlbGVjdGVkIGltYWdlLgorCisgICAgICAgICogZmls
ZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAq
IGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6dHlwZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OmNvbnRlbnRUeXBlRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpkZXN0aW5h
dGlvblR5cGVGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6Om5hbWVGb3JGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmls
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgor
ICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdCk6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENy
ZWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
Q2hvb3Nlcjo6YWxsb3dlZFR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9v
c2VyOjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyQ2xpZW50OjpmaWxlc0Nob3Nlbik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNr
aW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKToKKworMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBG
aWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFs
bCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgQWRkIGxvY2Fs
aXphYmxlIHN0cmluZ3MgZm9yIHRoZSBPcGVuUGFuZWwgZmlsdGVyLgorCisgICAgICAgICogcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICBFeHBvcnQgYSBNSU1FVHlwZVJlZ2lz
dHJ5IEFQSSB0byBiZSByZWZlcmVuY2VkIGZyb20gV2ViS2l0IHByb2plY3QuCisKKwogMjAyMC0w
Ni0yMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBt
dWNoIG9mIHRoZSBTVkcgc3RyaW5nIHBhcnNpbmcgY29kZSB0byB1c2UgT3B0aW9uYWwgYmFzZWQg
cmV0dXJuIHZhbHVlcyByYXRoZXIgdGhhbiBvdXQtcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MDI0
YjEyNDYxYTVjNjJkMDMzNGJjZDlmMTBkNTVkNDg0MzIxZTgwLi5hN2Y1NjhjOTIxMGFkZGMyMzYx
MDI5MTY3MTYxMjgzMTdhNzkxYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA2
LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBh
bGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9m
IHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgb25lIG9mIHRoZSBtaW1lIHR5cGVzIGluIHRoZSAi
YWNjZXB0IiBhdHRyaWJ1dGUgaXMgYW4gYWxsb3dlZCBkZXN0ZW5hdGlvbgorICAgICAgICBpbWFn
ZSBmb3JtYXQsIGFkZCBhIG5ldyBpdGVtIGluIHRoZSBPcGVuUGFuZWwgZmlsdGVyIG5hbWVkICJJ
bWFnZSBGaWxlcyIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5tbToKKyAgICAgICAgKG1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXSk6CisgICAg
ICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVz
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQ
cml2YXRlLmg6CisKIDIwMjAtMDYtMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViS2l0IGZhaWxzIHRvIGxlYXZlIGF1ZGlvIHJvdXRpbmcgYXJiaXRyYXRp
b24gZHVyaW5nIG5hdmlnYXRpb24sIGNsb3NpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncwppbmRleCAxNjQ3ZDIzZmZhYWNmZDM4ZDQ1MTJiM2ZmNDZiOTAw
NGRkOTkzZmU1Li5kMzYwYTAzODAyZDgyZWU5YzQ5MWQ5YjU0NWFhNjNmNGQ4MjczMTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTYxLDYgKzYx
LDE1IEBACiAvKiBOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIg
a2V5IGluIEtleWNoYWluICovCiAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiID0gIiVAIFdlYkNy
eXB0byBNYXN0ZXIgS2V5IjsKIAorLyogQXVkaW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIg
Ki8KKyIlQCBhdWRpbyIgPSAiJUAgYXVkaW8iOworCisvKiBJbWFnZSBmb3JtYXQgdHlwZSBpbiBm
aWxlIHBpY2tlciAqLworIiVAIGltYWdlIiA9ICIlQCBpbWFnZSI7CisKKy8qIFZpZGVvIGZvcm1h
dCB0eXBlIGluIGZpbGUgcGlja2VyICovCisiJUAgdmlkZW8iID0gIiVAIHZpZGVvIjsKKwogLyog
TGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUg
dXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMgKi8KICIlZCBmaWxlcyIg
PSAiJWQgZmlsZXMiOwogCkBAIC0xMTUsNiArMTI0LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUg
Ki8KICJBbGlnbiBSaWdodCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkFsaWduIFJpZ2h0IjsKIAor
LyogQWxsIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkFsbCBGaWxlcyIgPSAiQWxsIEZpbGVz
IjsKKwogLyogQnV0dG9uIHRpdGxlIGluIFN0b3JhZ2UgQWNjZXNzIEFQSSBwcm9tcHQgKi8KICJB
bGxvdyAoY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdlYnNpdGUgZGF0YSBhY2Nlc3MpIiA9ICJBbGxv
dyI7CiAKQEAgLTEzNiw2ICsxNDgsOSBAQAogLyogV0tFcnJvckF0dHJpYnV0ZWRTdHJpbmdDb250
ZW50RmFpbGVkVG9Mb2FkIGRlc2NyaXB0aW9uICovCiAiQXR0cmlidXRlZCBzdHJpbmcgY29udGVu
dCBmYWlsZWQgdG8gbG9hZCIgPSAiQXR0cmlidXRlZCBzdHJpbmcgY29udGVudCBmYWlsZWQgdG8g
bG9hZCI7CiAKKy8qIEF1ZGlvIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkF1ZGlvIEZpbGVz
IiA9ICJBdWRpbyBGaWxlcyI7CisKIC8qIE1lbnUgaXRlbSBsYWJlbCBmb3IgYXV0b21hdGljIHRy
YWNrIHNlbGVjdGlvbiBiZWhhdmlvciAqLwogIkF1dG8gKFJlY29tbWVuZGVkKSIgPSAiQXV0byAo
UmVjb21tZW5kZWQpIjsKIApAQCAtMjY1LDYgKzI4MCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1l
ICovCiAiQ3JlYXRlIExpbmsgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJDcmVhdGUgTGluayI7CiAK
Ky8qIEN1c3RvbSBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJDdXN0b20gRmlsZXMiID0gIkN1
c3RvbSBGaWxlcyI7CisKIC8qIEN1dCBjb250ZXh0IG1lbnUgaXRlbSAqLwogIkN1dCIgPSAiQ3V0
IjsKIApAQCAtNDA5LDYgKzQyNyw5IEBACiAvKiBJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51
IGl0ZW0gKi8KICJJZ25vcmUgU3BlbGxpbmciID0gIklnbm9yZSBTcGVsbGluZyI7CiAKKy8qIElt
YWdlIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkltYWdlIEZpbGVzIiA9ICJJbWFnZSBGaWxl
cyI7CisKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJJbmRlbnQgKFVuZG8gYWN0aW9uIG5hbWUp
IiA9ICJJbmRlbnQiOwogCkBAIC05OTEsNiArMTAxMiw5IEBACiAvKiBWYWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2Vk
IG1heGltdW0gKi8KICJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIgPSAi
VmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMiOwogCisvKiBWaWRlbyBGaWxl
cyBpbiBmaWxlciBwaWNrZXIgKi8KKyJWaWRlbyBGaWxlcyIgPSAiVmlkZW8gRmlsZXMiOworCiAv
KiBQaGlzaGluZyB3YXJuaW5nIGRlc2NyaXB0aW9uICovCiAiV2FybmluZ3MgYXJlIHNob3duIGZv
ciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2
ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8gYmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0
aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiIgPSAiV2FybmluZ3MgYXJlIHNob3duIGZvciB3ZWJz
aXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJz
aXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8gYmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUg
d2Vic2l0ZXMgeW91IHRydXN0LiI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDMyYTNi
Njk4OWZhYjZlZDY0MDQxYjkwYjlkZWM0OTNmNjQwMzExNTYuLmI3NzI0ZTgxYWY4MjhhMDFlMTY4
OGJhZDY2ZWU5Y2QwNmJjZTBlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNzIsOSAr
NzIsMTAgQEAgVVJMUmVnaXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJl
dHVybiBpbnN0YW5jZTsKIH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3Rvciwg
VVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQorQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1
Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUp
CiAgICAgOiBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKICAgICAsIG1fdHlwZShXVEZNb3Zl
KHR5cGUpKQorICAgICwgbV9kZXN0aW5hdGlvblR5cGUoV1RGTW92ZShkZXN0aW5hdGlvblR5cGUp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDYxNGQ4MDlkMjA4OTNkNWVmZTAwYzgz
OTJiM2FlMzY1MmJkYTJhYzUuLmIyMjQ3OTRlODA5YjQ3MTZiMjFkZTJhNGU3NDdlYmViMjgyYTdi
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5CbG9iKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJuYWxVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uVHlwZS5pc051bGwoKSA/IG1fdHlwZSA6IG1fZGVzdGluYXRpb25UeXBlOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTE2LDcgKzEx
Niw3IEBAIHByb3RlY3RlZDoKICAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3Ry
dWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0aWFsaXplZENvbnRydWN0b3Ig
eyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRy
dWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlKTsKKyAgICBCbG9iKFVuaW5pdGlhbGl6ZWRDb250
cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsK
IAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7IGRlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IgfTsKICAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9u
Zz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CkBAIC0xMzEsNiArMTMxLDcg
QEAgcHJpdmF0ZToKICAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIFN0cmluZyBtX3R5cGU7
CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25UeXBlOwogCiAgICAgbXV0YWJsZSBPcHRpb25hbDx1
bnNpZ25lZCBsb25nIGxvbmc+IG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRl
eCA4ZDZlMzg3Mzg1NTEzZGRkNDFlMDM3MjQwOThiNDMyZWFjZWNlYmMwLi4xZjU0YWE3NWQwZDEw
YzIwMzRhMDIzZDA3ZDkxOGUyZjY5NDgzMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAg
LTQ2LDIwICs0NiwyMSBAQCBSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdgogICAgIHJldHVybiBmaWxl
OwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUpCitSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBlOwot
ICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUocGF0aCwgbmFtZU92ZXJyaWRlLCBuYW1lLCB0
eXBlKTsKKyAgICBTdHJpbmcgdHlwZSA9IGNvbnRlbnRUeXBlRm9yRmlsZShwYXRoLCBuYW1lT3Zl
cnJpZGUpOworICAgIFN0cmluZyBkZXN0aW5hdGlvblR5cGUgPSBkZXN0aW5hdGlvblR5cGVGb3JG
aWxlKHBhdGgsIHR5cGUsIGFsbG93ZWRUeXBlcyk7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lRm9y
RmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSk7CiAKICAgICBh
dXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBwYXRo
LCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5h
bFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IHBhdGggfSwgV1RGTW92ZShuYW1lKSkpOwor
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxV
UkwsIHBhdGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSk7CisKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxVUkwpLCBTdHJpbmcgeyBwYXRoIH0sIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZGVzdGluYXRpb25UeXBlKSkpOwog
fQogCi1GaWxlOjpGaWxlKFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIFdURk1v
dmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6OkZpbGUoVVJMJiYgdXJsLCBTdHJpbmcmJiBw
YXRoLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5
cGUpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdU
Rk1vdmUodHlwZSksIFdURk1vdmUoZGVzdGluYXRpb25UeXBlKSkKICAgICAsIG1fcGF0aChXVEZN
b3ZlKHBhdGgpKQogICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiB7CkBAIC0xMjMsMzIgKzEy
NCw1MiBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdU
Rjo6dGltZUNsaXAocmVzdWx0KTsKIH0KIAotdm9pZCBGaWxlOjpjb21wdXRlTmFtZUFuZENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0
cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSkKK1N0cmlu
ZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSkKIHsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBp
ZiAoc2hvdWxkUmVwbGFjZUZpbGUocGF0aCkpIHsKLSAgICAgICAgY29tcHV0ZU5hbWVBbmRDb250
ZW50VHlwZUZvclJlcGxhY2VkRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUsIGVmZmVjdGl2ZU5hbWUs
IGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
ICAgIGVmZmVjdGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNFbXB0eSgpID8gRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOwotICAgIHNpemVfdCBpbmRleCA9
IGVmZmVjdGl2ZU5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBTdHJpbmcgbmFtZSA9IG5hbWVP
dmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBu
YW1lT3ZlcnJpZGU7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIHNpemVfdCBpbmRleCA9IG5h
bWUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZlZmZlY3RpdmVDb250ZW50VHlwZSwgJmVmZmVj
dGl2ZU5hbWUsIGluZGV4XSB7Ci0gICAgICAgICAgICBlZmZlY3RpdmVDb250ZW50VHlwZSA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGVmZmVjdGl2ZU5hbWUuc3Vi
c3RyaW5nKGluZGV4ICsgMSkpLmlzb2xhdGVkQ29weSgpOworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkQW5kV2FpdChbJm1pbWVUeXBlLCAmbmFtZSwgaW5kZXhdIHsKKyAgICAgICAgICAgIG1pbWVU
eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24obmFtZS5zdWJz
dHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgIH0pOwogICAgIH0KKyAg
ICByZXR1cm4gbWltZVR5cGU7CiB9CiAKLVN0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIEZpbGU6OmRlc3RpbmF0aW9uVHlwZUZvckZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBl
OwotICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUocGF0aCwgU3RyaW5nKCksIG5hbWUsIHR5
cGUpOwotCisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgaWYgKGlzRmlsZVR5cGVQ
YWNrYWdlKHBhdGgpKQorICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3ppcCJfczsKKworICAg
IGlmIChhbGxvd2VkVHlwZXMuY29udGFpbnModHlwZSkpCisgICAgICAgIHJldHVybiB0eXBlOwor
ICAgIAorICAgIGZvciAoYXV0byYgYWxsb3dlZFR5cGUgOiBhbGxvd2VkVHlwZXMpIHsKKyAgICAg
ICAgaWYgKGFsbG93ZWRUeXBlID09ICJpbWFnZS8qIikKKyAgICAgICAgICAgIHJldHVybiB0eXBl
OworICAgICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcoYWxsb3dlZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGFsbG93ZWRUeXBl
OworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiB0eXBlOwogfQogCitTdHJpbmcgRmlsZTo6bmFt
ZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkKK3sKKyAg
ICBTdHJpbmcgbmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CisjaWYgRU5BQkxFKEZJTEVfUkVQTEFD
RU1FTlQpCisgICAgaWYgKGRlc3RpbmF0aW9uVHlwZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQor
ICAgICAgICBuYW1lID0gbWFrZVN0cmluZyhuYW1lLCAiLnppcCJfcyk7CisgICAgZWxzZSBpZiAo
IWRlc3RpbmF0aW9uVHlwZS5pc0VtcHR5KCkgJiYgdHlwZSAhPSBkZXN0aW5hdGlvblR5cGUpIHsK
KyAgICAgICAgYXV0byBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9u
c0Zvck1JTUVUeXBlKGRlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIG5hbWUgPSBtYWtlU3RyaW5n
KG5hbWUsICIuIl9zLCBleHRlbnNpb25zWzBdKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4g
bmFtZTsKK30KKwogYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2lzRGlyZWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMmY5MzhiNDIwZDNhNjBmYjkz
Zjc0MGJjYjA0ZDc0MWY4M2VmZjc4Li44ZmRhYmMxZmNiZGI0MTJhZmQ3NzBlNzlkZjM3ZWU2NWQw
ZjNlODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9z
ZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVy
dGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlID0geyB9LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBl
cyA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNv
bnN0cnVjdG9yLgogICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZh
cmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
UHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQpAQCAtNzYsMjggKzc2LDI1IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGxhc3RNb2RpZmllZCgpIGNvbnN0OyAvLyBOdW1iZXIg
b2YgbWlsbGlzZWNvbmRzIHNpbmNlIEVwb2NoLgogICAgIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+
JiBsYXN0TW9kaWZpZWRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0
ZU92ZXJyaWRlOyB9IC8vIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgRXBvY2guCiAKLSAg
ICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwor
ICAgIHN0YXRpYyBTdHJpbmcgY29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOworICAgIHN0YXRpYyBTdHJpbmcgZGVz
dGluYXRpb25UeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdHlw
ZSA9IHsgfSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0pOworICAg
IHN0YXRpYyBTdHJpbmcgbmFtZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXBsYWNlRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpOworICAgIHN0YXRpYyBib29sIGlzRmlsZVR5cGVQYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0g
ICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFt
ZSk7CisgICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5n
JiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsKICAgICBGaWxlKFZlY3RvcjxCbG9i
UGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgUHJvcGVydHlCYWcmKTsKICAgICBGaWxlKGNvbnN0IEJsb2ImLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAg
ICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsKIAotICAgIHN0YXRpYyB2b2lk
IGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2
ZUNvbnRlbnRUeXBlKTsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBzdGF0aWMg
dm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFt
ZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7Ci0jZW5kaWYKLQogICAgIFN0cmluZyBt
X3BhdGg7CiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwogICAgIFN0cmluZyBtX25hbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCmluZGV4IDY2NGY5YTUzNjEzZGYyNmNhMTdjNzA3
YzIxYjUwYzY0NjQ1MjA0ZTYuLjEwNTQ5OGJlY2FmYTgwYjI3MTY3NGExYzMxNDQ3NDAzMTcxNWQw
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGaWxlOjpzaG91bGRSZXBsYWNlRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGU6OmlzRmlsZVR5cGVQYWNrYWdlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTU3LDEzICs1Nyw2IEBAIGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0
cmluZ1JlZil1dGksIGtVVFR5cGVQYWNrYWdlKTsKIH0KIAotdm9pZCBGaWxlOjpjb21wdXRlTmFt
ZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZl
Y3RpdmVDb250ZW50VHlwZSkKLXsKLSAgICBBU1NFUlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8gRXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0
aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3IgZGlyZWN0b3JpZXMuCi0gICAgZWZmZWN0aXZl
Q29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwotICAgIGVmZmVjdGl2ZU5hbWUgPSBt
YWtlU3RyaW5nKChuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGUpLCAiLnppcCJfcyk7Ci19Ci0KIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggNWUxZDRjMDBhOWMwNjhjODAzMWMy
NGNjZDYwYWIyMGE2YWZhMDYwYi4uMTNjODYyNzk3YTIzNDRjMWZlNzk1MjA2NjE2Yjc0MDJjMTVm
ZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgc3RhdGljIFRocmVhZFNwZWNpZmljPEJsb2JV
cmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAqbWFwOwogfQogCi12b2lkIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlKQogewogICAgIGlmIChpc01h
aW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgsIG5hbWUsIGNvbnRlbnRUeXBlLCBkZXN0aW5hdGlv
blR5cGUpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7Ci0g
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5
KCksIG5hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBl
Lmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblR5cGUgPSBkZXN0aW5hdGlvblR5cGUuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1
cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgsIG5hbWUsIGRlc3RpbmF0aW9u
VHlwZSksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBhOWM3OWZlMjI5MmY4OTViMzFj
NjBmNzU2N2ZmZDA0OTNmZWRjODMyLi4wZTBmNmYzYmU4YTM5ZmM4Mzk2ZjFiOTNiYWE4M2M5Mzky
NzAzMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3Mg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlKTsKICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1ZTRiODIwZWI2ODBmN2NjNDI2NTVmMGI5ZTJk
NmQuLjkwZWE2ZDA1MWRkODc0MzI3YjJmMDBkOTEyNTY3YWIyM2FiNDQ5MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgRmlsZUlu
cHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZpbGVzLCBSZXF1ZXN0SWNvbiBz
aG91bGRSZXF1ZXN0CiAgICAgcHJvdGVjdGVkSW5wdXRFbGVtZW50LT5zZXRDaGFuZ2VkU2luY2VM
YXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAKLXZvaWQgRmlsZUlucHV0VHlw
ZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQordm9pZCBGaWxlSW5wdXRU
eXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhz
LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcywgY29uc3QgU3RyaW5nJiBkaXNw
bGF5U3RyaW5nLCBJY29uKiBpY29uKQogewogICAgIGlmICghZGlzcGxheVN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlTdHJpbmc7CkBAIC00MTMsOCAr
NDEzLDggQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgICAgICBtX2RpcmVjdG9yeUZpbGVM
aXN0Q3JlYXRvci0+Y2FuY2VsKCk7CiAKICAgICBpZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsK
LSAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5mbykgewotICAg
ICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5kaXNw
bGF5TmFtZSk7CisgICAgICAgIGF1dG8gZmlsZXMgPSBwYXRocy5tYXAoWyZhbGxvd2VkVHlwZXNd
KGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJ
bmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lLCBhbGxvd2VkVHlwZXMpOwogICAgICAgICB9
KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVzKSksIGljb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oCmluZGV4IDA4ZjYyMWZlNWMzZDZkMzAzODY3YWU5ZjA3MTdlYWRkMzU2ZWNiYWEuLmQzNDkz
MWY2NTlkYjQ1NjZmNTk5MWJjY2IyNjUzYjY1YjM4OThmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJpbmcgZGVmYXVs
dFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nID0g
eyB9LCBJY29uKiA9IG51bGxwdHIpIGZpbmFsOworICAgIHZvaWQgZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxv
d2VkVHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiog
PSBudWxscHRyKSBmaW5hbDsKIAogICAgIC8vIEZpbGVJY29uTG9hZGVyQ2xpZW50IGltcGxlbWVu
dGF0aW9uLgogICAgIHZvaWQgaWNvbkxvYWRlZChSZWZQdHI8SWNvbj4mJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdiY2Y0NTM4ZmVk
ODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4uNWM5MDNlOTU1YmY3OWExMzlmY2U5ZTIxZTQyYWM4YWVh
YTIzZDVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtMjks
NiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgi
CiAKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRmlsZUNob29zZXI6OkZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQpAQCAtNDQsNiArNDYsMTkgQEAgUmVm
PEZpbGVDaG9vc2VyPiBGaWxlQ2hvb3Nlcjo6Y3JlYXRlKEZpbGVDaG9vc2VyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IEZpbGVDaG9vc2UKIAogRmlsZUNob29zZXI6On5GaWxlQ2hvb3NlcigpID0gZGVm
YXVsdDsKIAorSGFzaFNldDxTdHJpbmc+IEZpbGVDaG9vc2VyOjphbGxvd2VkVHlwZXMoKSBjb25z
dAoreworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXM7CisgICAgZm9yIChhdXRvJiB0
eXBlIDogbV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAgIGFsbG93ZWRUeXBlcy5h
ZGQodHlwZSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3NldHRpbmdzLmFjY2VwdEZp
bGVFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykgPyBleHRlbnNp
b24ucmlnaHQoZXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSkgOiBleHRlbnNpb24pOworICAgICAgICBp
ZiAoIXR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWxsb3dlZFR5cGVzLmFkZCh0eXBlKTsK
KyAgICB9CisgICAgcmV0dXJuIGFsbG93ZWRUeXBlczsKK30KKwogdm9pZCBGaWxlQ2hvb3Nlcjo6
aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTcwLDcgKzg1LDcgQEAg
dm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcykKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CiAgICAgZm9yIChh
dXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9v
c2VyRmlsZUluZm8oZmlsZW5hbWUpKTsKLSAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMp
OworICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgYWxsb3dlZFR5cGVzKCkpOwogfQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oCmluZGV4IGU1MWViOWU4NDM4Nzk1YTc2ZmVjOWEzZGJmN2M2YTA4NGVhMDg4OTUuLjdkOTE5
ZWI5Y2Q1NTY2YmEyN2M0NWJiNTQxYzhjMzU3YmQ1YTMwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIEZpbGVDaG9vc2Vy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNo
b29zZXJGaWxlSW5mbz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcgPSB7IH0sIEljb24q
ID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0
b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRU
eXBlcyA9IHsgfSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nID0geyB9LCBJY29uKiA9IG51
bGxwdHIpID0gMDsKIH07CiAKIGNsYXNzIEZpbGVDaG9vc2VyIDogcHVibGljIFJlZkNvdW50ZWQ8
RmlsZUNob29zZXI+IHsKQEAgLTEwMiw2ICsxMDMsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IEZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50KiwgY29uc3QgRmlsZUNob29zZXJTZXR0aW5n
cyYpOwogCisgICAgSGFzaFNldDxTdHJpbmc+IGFsbG93ZWRUeXBlcygpIGNvbnN0OworCiAgICAg
RmlsZUNob29zZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIEZpbGVDaG9vc2Vy
U2V0dGluZ3MgbV9zZXR0aW5nczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmgKaW5kZXggOTk2ZWU3ODRlZGUyYWRiMDFhMTU1MGUyZmU1MGQ1MDY0M2IzZmEz
Zi4uMTNlMjUxNmY5NjEyNjU2N2UxNTllYWU1ZjU1YzIyNGIwOTBlZDg0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZVZpZGVv
T3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRv
IHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgZW5jb2RlZC4KLSAgICBz
dGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9h
ZGVkIGFzIGEgSmF2YVNjcmlwdCBvciBKU09OIHJlc291cmNlLgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IDVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0
ZDNiYzIyNTlhYWZmYTUyMjYuLmE3MjZlNzI1NTcxMTU5NjQ4NWNkYWExNDk5NmIzOGFmMGRkZjQw
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAgLTMyLDE1ICszMiwxOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
KGNvbnN0IFN0cmluZyYgcGF0aCkKK0Jsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlKQogICAgIDogbV9wYXRo
KHBhdGgpCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9k
ZXN0aW5hdGlvblR5cGUoZGVzdGluYXRpb25UeXBlKQogewogfQogCiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UoKQogewogI2lmIEVOQUJMRShGSUxFX1JFUExB
Q0VNRU5UKQotICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCisgICAgaWYgKCFt
X3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSAmJiBtX2Rlc3RpbmF0aW9uVHlwZSA9PSAiYXBwbGlj
YXRpb24vemlwIl9zKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcmVwbGFjZW1l
bnRQYXRoKTsKICNlbmRpZgogfQpAQCAtNDgsNyArNTEsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UoKQogY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OnBhdGgoKQogewogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAgIGlm
IChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCisgICAgaWYgKHJlcGxhY2VtZW50U2hv
dWxkQmVHZW5lcmF0ZWQoKSkKICAgICAgICAgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKTsKIAog
ICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCkBAIC02MSw3ICs2NCw3IEBAIGNv
bnN0IFN0cmluZyYgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpwYXRoKCkKIHVuc2lnbmVkIGxvbmcg
bG9uZyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUoKQogewogI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQotICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCisgICAg
aWYgKHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSkKICAgICAgICAgZ2VuZXJhdGVSZXBs
YWNlbWVudEZpbGUoKTsKICNlbmRpZgogCkBAIC03Myw3ICs3Niw3IEBAIE9wdGlvbmFsPFdhbGxU
aW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAj
aWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRseSB0
cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2ZSBh
IHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoaXMgaXMgaW5jb25zaXN0ZW50IHdp
dGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmplY3RzIHNob3VsZCBiZSBpbnZhbGlk
YXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgotICAgIGlmIChtX3JlcGxhY2VtZW50
U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQorICAgIGlm
ICghbV9kZXN0aW5hdGlvblR5cGUuaXNOdWxsKCkgfHwgIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAgICAgcmV0dXJuIG1f
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwpAQCAtODYsNyArODksOCBAQCB2b2lkIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogICAgIC8vIHRoZSBj
b3N0IG9mIHRyYWNraW5nIGZpbGUgbW9kaWZpY2F0aW9ucy4KIAogI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQotICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IEZpbGU6OnNo
b3VsZFJlcGxhY2VGaWxlKG1fcGF0aCk7CisgICAgaWYgKEZpbGU6OmlzRmlsZVR5cGVQYWNrYWdl
KG1fcGF0aCkpCisgICAgICAgIG1fZGVzdGluYXRpb25UeXBlID0gImFwcGxpY2F0aW9uL3ppcCJf
czsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFNvbWUgcGxhdGZvcm1zIHByb3ZpZGUgYmV0dGVy
IHdheXMgdG8gbGlzdGVuIGZvciBmaWxlIHN5c3RlbSBvYmplY3QgY2hhbmdlcywgY29uc2lkZXIg
dXNpbmcgdGhlc2UuCkBAIC05Nyw3ICsxMDEsNyBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogICAgIG1fZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lID0gbWV0YWRhdGEudmFsdWUoKS5tb2RpZmljYXRpb25UaW1lOwogCiAjaWYgRU5BQkxF
KEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRl
ZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpKQogICAgICAgICByZXR1
cm47CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5kZXggNjU4ODI5ZDA3ZmNmYmQ2YjAyYTIwZTFj
YjAxZmRjOWQ2ZGNjMDdjOS4uYmRkMWVmODI5NTJlZjQxNDExNzZkM2M2OWI4MTdhMTMyMmMzMTdi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VfaAot
I2RlZmluZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzUsOSAr
MzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUgPSB7IH0s
IGNvbnN0IFN0cmluZyYgdHlwZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUg
PSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2UocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZp
bGVSZWZlcmVuY2UocGF0aCwgbmFtZSwgdHlwZSwgZGVzdGluYXRpb25UeXBlKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCk7CkBAIC01MiwyMiArNTEsMjMg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXZva2VGaWxlQWNjZXNzKCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAg
ICBCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWUgPSB7IH0sIGNvbnN0IFN0cmluZyYgdHlwZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblR5cGUgPSB7IH0pOwogCiBwcml2YXRlOgogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VN
RU5UKQorICAgIGJvb2wgcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpIGNvbnN0OwogICAg
IHZvaWQgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKTsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1f
cGF0aDsKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIFN0cmluZyBtX3R5cGU7CisgICAgU3RyaW5n
IG1fZGVzdGluYXRpb25UeXBlOwogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIFN0
cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKLSAgICBib29sIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdl
bmVyYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9zaXpl
IHsgMCB9OwogICAgIE1hcmthYmxlPFdhbGxUaW1lLCBXYWxsVGltZTo6TWFya2FibGVUcmFpdHM+
IG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwogfTsKIAogfQotCi0jZW5kaWYgLy8gQmxvYkRh
dGFGaWxlUmVmZXJlbmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQppbmRleCA1ZWM3
NzdhODY5OTA2NzExOGNiY2Q1NTI4ZThmNGZmZTkyYTQ0ODZiLi4xZTFiY2MxYmIxYWJjMmI1NmEy
YTU0MTJkYzg5NmNmODk4ZjExOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCkBA
IC0yOCwyNSArMjgsNTkgQEAKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCisjaW1w
b3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnJlcGxhY2Vt
ZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgIT0gbV9k
ZXN0aW5hdGlvblR5cGUgJiYgbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCk7Cit9CisKIHZvaWQg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpCiB7Ci0gICAg
QVNTRVJUKG1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKTsKLSAgICBBU1NFUlQobV9yZXBsYWNl
bWVudFNob3VsZEJlR2VuZXJhdGVkKTsKKyAgICBBU1NFUlQocmVwbGFjZW1lbnRTaG91bGRCZUdl
bmVyYXRlZCgpKTsKIAogICAgIHByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAKLSAgICBhdXRvIGdl
bmVyYXRlZEZpbGUgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKG1fcGF0
aCk7Ci0gICAgaWYgKCFnZW5lcmF0ZWRGaWxlLmlzTnVsbCgpKQotICAgICAgICBtX3JlcGxhY2Vt
ZW50UGF0aCA9IFdURk1vdmUoZ2VuZXJhdGVkRmlsZSk7CisgICAgU3RyaW5nIGdlbmVyYXRlZEZp
bGU7CisgICAgaWYgKG1fZGVzdGluYXRpb25UeXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3MpCisg
ICAgICAgIGdlbmVyYXRlZEZpbGUgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlaaXBBcmNo
aXZlKG1fcGF0aCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gbV9kZXN0
aW5hdGlvblR5cGUpOworICAgICAgICBBU1NFUlQobV9kZXN0aW5hdGlvblR5cGUuc3RhcnRzV2l0
aCgiaW1hZ2UvIl9zKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSBzb3VyY2UuCisg
ICAgICAgIGF1dG8gc291cmNlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgICAgIGF1dG8gc291cmNlID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChzb3VyY2VVUkwuZ2V0KCksIE5VTEwpKTsK
KworICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KKyAgICAgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIHBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICAgICAgZ2VuZXJh
dGVkRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKG1fbmFtZSwgcGxhdGZvcm1G
aWxlSGFuZGxlKTsKIAotICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IGZhbHNl
OwotICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBkYXRhIGNvbnN1bWVyLgorICAgICAgICBDR0RhdGFDb25zdW1lckNhbGxiYWNrcyBj
YWxsYmFja3MgPSB7IFtdKHZvaWQgKmluZm8sIGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNv
dW50KSAtPiBzaXplX3QgeworICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUZpbGVIYW5kbGUgPSAq
c3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKj4oaW5mbyk7CisgICAg
ICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUocGxhdGZvcm1GaWxlSGFuZGxl
LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAgICB9LCBO
VUxMIH07CisKKyAgICAgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJD
cmVhdGUoJnBsYXRmb3JtRmlsZUhhbmRsZSwgJmNhbGxiYWNrcykpOworCisgICAgICAgIC8vIENy
ZWF0ZSB0aGUgaW1hZ2UgZGVzdGluYXRpb24uCisgICAgICAgIGF1dG8gdXRpID0gVVRJRnJvbU1J
TUVUeXBlKG1fZGVzdGluYXRpb25UeXBlKTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFk
b3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGFDb25zdW1lcihjb25zdW1lci5n
ZXQoKSwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDEsIE5VTEwpKTsKKworICAgICAgICAv
LyBXcml0ZSB0aGUgaW1hZ2Ugc291cmNlIHRvIHRoZSBpbWFnZSBkZXN0aW5hdGlvbi4KKyAgICAg
ICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2VGcm9tU291cmNlKGRlc3RpbmF0aW9uLmdldCgp
LCBzb3VyY2UuZ2V0KCksIDAsIG51bGxwdHIpOworICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25G
aW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShwbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIH0KKworICAgIGlmICghZ2VuZXJhdGVkRmlsZS5p
c051bGwoKSkgeworICAgICAgICBtX3JlcGxhY2VtZW50UGF0aCA9IFdURk1vdmUoZ2VuZXJhdGVk
RmlsZSk7CiAgICAgICAgIGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFk
YXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpKQogICAgICAgICAgICAgbV9z
aXplID0gbWV0YWRhdGEudmFsdWUoKS5sZW5ndGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0K
aW5kZXggZDkwMGY5ZThkNjc1NDFjYjhjMjllZDQyOGExZTliMDA4YjE0ODgyMy4uODZhMjQ1ODhh
NzFkMzBjNTYxNWIzMzZlZmRiMGQ2NjdiN2I2OTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5n
cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjIs
MTEgKzY0LDEzIEBAIHN0YXRpYyBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJp
bmcgKj4gKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpCiAgICAgICAgICAgICBpZiAoIW1p
bWVUeXBlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgYXV0byBleHRl
bnNpb25zID0gYWRvcHRDRihVVFR5cGVDb3B5QWxsVGFnc1dpdGhDbGFzcyh1dGksIGtVVFRhZ0Ns
YXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKKyAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucyB8fCAh
Q0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnMuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKChfX2JyaWRnZSBOU1N0
cmluZyAqKW1pbWVUeXBlLmdldCgpLCAoX19icmlkZ2UgTlNBcnJheTxOU1N0cmluZyAqPiAqKWV4
dGVuc2lvbnMuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQWRkIGFkZGl0aW9uYWwg
bWltZSB0eXBlcyB3aGljaCBfVVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSBtYXkgbm90
IHJldHVybi4KLSAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJwIiwg
QCJ3ZWJwIik7CisgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZShAImltYWdlL3dlYnAi
LCBAW0Aid2VicCJdKTsKIAogICAgICAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFw
OwogICAgIH0oKSk7CkBAIC03OSw2ICs4MywxOCBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4g
KmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAgICAgcmV0dXJuIFtl
eHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBvYmplY3RGb3JLZXk6bWltZXR5cGVdOwogfQogCitz
dGF0aWMgTlNTdHJpbmcgKm1pbWVUeXBlRm9yRXh0ZW5zaW9uKE5TU3RyaW5nICpleHRlbnNpb24p
Cit7CisgICAgTlNTZXQ8TlNTdHJpbmcgKj4gKm1pbWVUeXBlcyA9IFtleHRlbnNpb25zRm9yTUlN
RVR5cGVNYXAoKSBrZXlzT2ZFbnRyaWVzUGFzc2luZ1Rlc3Q6XkJPT0woTlNTdHJpbmcgKm1pbWVU
eXBlLCBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9ucywgQk9PTCAqKSB7CisgICAgICAgIGlm
IChbbWltZVR5cGUgaGFzU3VmZml4OkAiKiJdKQorICAgICAgICAgICAgcmV0dXJuIE5POworICAg
ICAgICBpZiAoW2V4dGVuc2lvbiBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICcuJykKKyAgICAgICAg
ICAgIHJldHVybiBbZXh0ZW5zaW9ucyBjb250YWluc09iamVjdDpbZXh0ZW5zaW9uIHN1YnN0cmlu
Z0Zyb21JbmRleDoxXV07CisgICAgICAgIHJldHVybiBbZXh0ZW5zaW9ucyBjb250YWluc09iamVj
dDpleHRlbnNpb25dOworICAgIH1dOworICAgIHJldHVybiBbbWltZVR5cGVzIGFueU9iamVjdF07
Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXS09wZW5QYW5lbFBhcmFtZXRlcnMKIAogLSAoQk9PTClh
bGxvd3NNdWx0aXBsZVNlbGVjdGlvbgpAQCAtMTM2LDM2ICsxNTIsMTE4IEBAIHN0YXRpYyBOU1Nl
dDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3RyaW5nICptaW1ldHlwZSkK
ICAgICByZXR1cm4gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKIH0KIAotLSAo
TlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMKKy0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucwogewotICAgIGF1dG8g
YWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8g
YWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsK
KyAgICByZXR1cm4gW2V4dGVuc2lvbnNGb3JNSU1FVHlwZShAImltYWdlLyoiKSBhbGxPYmplY3Rz
XTsKK30KIAotICAgIGNvbnN0ZXhwciBhdXRvIEFsbEZpbGVzVGl0bGUgPSBAIkFsbCBGaWxlcyI7
Ci0gICAgY29uc3RleHByIGF1dG8gQ3VzdG9tRmlsZXNUaXRsZSA9IEAiQ3VzdG9tIEZpbGVzIjsK
Ky0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCit7
CisgICAgTlNTdHJpbmcgKmFsbEZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJBbGwgRmlsZXMi
LCAiQWxsIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOworICAgIE5TU3RyaW5nICphbGxJbWFnZUZp
bGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJJbWFnZSBGaWxlcyIsICJJbWFnZSBGaWxlcyBpbiBm
aWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYWxsVmlkZW9GaWxlc1RpdGxlID0gV0VCX1VJ
X1NUUklORygiVmlkZW8gRmlsZXMiLCAiVmlkZW8gRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7Cisg
ICAgTlNTdHJpbmcgKmFsbEF1ZGlvRmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkF1ZGlvIEZp
bGVzIiwgIkF1ZGlvIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOworICAgIE5TU3RyaW5nICpjdXN0
b21GaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiQ3VzdG9tIEZpbGVzIiwgIkN1c3RvbSBGaWxl
cyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqaW1hZ2VUaXRsZSA9IFdFQl9VSV9T
VFJJTkcoIiVAIGltYWdlIiwgIkltYWdlIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyIik7Cisg
ICAgTlNTdHJpbmcgKnZpZGVvVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCIlQCB2aWRlbyIsICJWaWRl
byBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciIpOworICAgIE5TU3RyaW5nICphdWRpb1RpdGxl
ID0gV0VCX1VJX1NUUklORygiJUAgYXVkaW8iLCAiQXVkaW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBw
aWNrZXIiKTsKKyAgICAKKyAgICBjb25zdGV4cHIgYXV0byBpbWFnZVR5cGUgPSBAImltYWdlIjsK
KyAgICBjb25zdGV4cHIgYXV0byB2aWRlb1R5cGUgPSBAInZpZGVvIjsKKyAgICBjb25zdGV4cHIg
YXV0byBhdWRpb1R5cGUgPSBAImF1ZGlvIjsKKyAgICBjb25zdGV4cHIgYXV0byBjdXN0b21UeXBl
ID0gQCJjdXN0b20iOwogICAgIAotICAgIGlmICghW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSAm
JiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAgICByZXR1cm4gQFtBbGxG
aWxlc1RpdGxlXTsKKyAgICBhdXRvIGNvbXBvc2VUaXRsZXMgPSBeKE5TU3RyaW5nICp0eXBlLCBO
U1N0cmluZyAqc3ViVHlwZSwgTlNTdHJpbmcgKmFsbFR5cGUpIHsKKyAgICAgICAgTlNNdXRhYmxl
QXJyYXkqIHRpdGxlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICAgICAgLy8gaWYg
eyB0eXBlIHN1YlR5cGUgfSA9PSAiaW1hZ2UvcG5nIiB0aGVuIGFkZCAiUE5HIEltYWdlIgorICAg
ICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKnR5cGVU
aXRsZSA9IFt0eXBlIGlzRXF1YWxUb1N0cmluZzppbWFnZVR5cGVdID8gaW1hZ2VUaXRsZSA6IChb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6dmlkZW9UeXBlXSA/IHZpZGVvVGl0bGUgOiBhdWRpb1RpdGxl
KTsKKyAgICAgICAgICAgIGlmIChbc3ViVHlwZSBsZW5ndGhdIDw9IDQpCisgICAgICAgICAgICAg
ICAgW3RpdGxlcyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6dHlwZVRpdGxl
LCBbc3ViVHlwZSB1cHBlcmNhc2VTdHJpbmddXV07CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6dHlw
ZVRpdGxlLCBzdWJUeXBlXV07CisgICAgICAgIH0gZWxzZSBpZiAoW3R5cGUgaXNFcXVhbFRvU3Ry
aW5nOmN1c3RvbVR5cGVdKSB7CisgICAgICAgICAgICAvLyBpZiB7IHR5cGUgc3ViVHlwZSB9ID09
ICJDdXN0b20gRmlsZXMiIHRoZW4gYWRkICJDdXN0b20gRmlsZXMiCisgICAgICAgICAgICBbdGl0
bGVzIGFkZE9iamVjdDpjdXN0b21GaWxlc1RpdGxlXTsKKyAgICAgICAgfQogCi0gICAgaWYgKCEo
W2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
cyBjb3VudF0pKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1Rp
dGxlXTsKKyAgICAgICAgLy8gaWYgYWxsVHlwZSA9PSAiaW1hZ2UiIHRoZW4gYWRkICJJbWFnZSBG
aWxlcyIKKyAgICAgICAgaWYgKFthbGxUeXBlIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIE5TU3Ry
aW5nICphbGxUeXBlVGl0bGUgPSBbYWxsVHlwZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSA/
IGFsbEltYWdlRmlsZXNUaXRsZSA6IChbYWxsVHlwZSBpc0VxdWFsVG9TdHJpbmc6dmlkZW9UeXBl
XSA/IGFsbFZpZGVvRmlsZXNUaXRsZSA6IGFsbEF1ZGlvRmlsZXNUaXRsZSk7CisgICAgICAgICAg
ICBbdGl0bGVzIGFkZE9iamVjdDphbGxUeXBlVGl0bGVdOworICAgICAgICB9CiAKLSAgICBhdXRv
IG1pbWVUeXBlID0gW2FjY2VwdGVkTUlNRVR5cGVzIGZpcnN0T2JqZWN0XTsKLSAgICBhdXRvIHJh
bmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07Ci0gICAgCi0gICAgaWYgKCFyYW5n
ZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0
bGVdOwotICAgIAotICAgIGF1dG8gbWltZVR5cGVQcmVmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5n
VG9JbmRleDpyYW5nZS5sb2NhdGlvbl07Ci0gICAgYXV0byBtaW1lVHlwZVN1ZmZpeCA9IFttaW1l
VHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRpb24gKyAxXTsKLSAgICAKLSAgICBp
ZiAoW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpAIioiXSkKLSAgICAgICAgcmV0dXJu
IEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVAIEZpbGVzIiwgW1ttaW1lVHlwZVBy
ZWZpeCBzdWJzdHJpbmdUb0luZGV4OjFdIHVwcGVyY2FzZVN0cmluZ10sIFttaW1lVHlwZVByZWZp
eCBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAgICAgLy8gSW4g
YWxsIGNhc2VzIGFkZCAiQWxsIEZpbGVzIgorICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDphbGxG
aWxlc1RpdGxlXTsKKyAgICAgICAgcmV0dXJuIHRpdGxlczsKKyAgICB9OworCisgICAgLy8gTm8g
YWNjZXB0IGF0dHJpYnV0ZTogPGlucHV0IHR5cGU9ImZpbGUiPgorICAgIGlmICghW1tzZWxmIF9h
Y2NlcHRlZE1JTUVUeXBlc10gY291bnRdICYmICFbW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lv
bnNdIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIEAiIik7
CisKKyAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBh
bGxvY10gaW5pdFdpdGhBcnJheTpbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdXSk7CisKKyAgICBm
b3IgKE5TU3RyaW5nICpleHRlbnNpb24gaW4gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNd
KSB7CisgICAgICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbWltZVR5cGVGb3JFeHRlbnNpb24oW2V4dGVuc2lv
biBzdWJzdHJpbmdGcm9tSW5kZXg6MV0pOworCisgICAgICAgIC8vIFVua25vd24gZmlsZSBleHRl
bnNpb246IDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9Ii54eXoiPgorICAgICAgICBpZiAoIW1p
bWVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoY3VzdG9tVHlwZSwgQCIi
LCBAIiIpOworCisgICAgICAgIFthY2NlcHRlZE1JTUVUeXBlcyBhZGRPYmplY3Q6bWltZVR5cGVd
OworICAgIH0KKworICAgIE5TU3RyaW5nICp0eXBlID0gbmlsOworICAgIE5TU3RyaW5nICpzdWJU
eXBlID0gbmlsOworICAgIE5TU3RyaW5nICphbGxUeXBlID0gbmlsOworCisgICAgZm9yIChOU1N0
cmluZyAqbWltZVR5cGUgaW4gYWNjZXB0ZWRNSU1FVHlwZXMuZ2V0KCkpIHsKKyAgICAgICAgTlNS
YW5nZSByYW5nZSA9IFttaW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOworICAgICAgICBpZiAo
IXJhbmdlLmxlbmd0aCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gbWlt
ZVR5cGVQcmVmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07
CisgICAgICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUlu
ZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07CisKKyAgICAgICAgLy8gT25seSBpbWFnZSwgdmlkZW8g
YW5kIGF1ZGlvIG1pbWUgdHlwZXMgd2lsbCBoYXZlIGRlc2NyaXB0aXZlIHRpdGxlcy4gT3RoZXIg
dHlwZXMgd2lsbCBiZSBzaG93bgorICAgICAgICAvLyBhcyAiQ3VzdG9tIEZpbGVzIi4gIkN1c3Rv
bSBGaWxlcyIgd2lsbCBiZSBzaG93biBhbHNvIGlmIG1vcmUgdGhhbiBhIG1pbWUgdHlwZSBpcyBz
cGVjaWZpZWQuCisgICAgICAgIGlmICghW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzpp
bWFnZVR5cGVdICYmICFbbWltZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0g
JiYgIVttaW1lVHlwZVByZWZpeCBpc0VxdWFsVG9TdHJpbmc6YXVkaW9UeXBlXSkKKyAgICAgICAg
ICAgIHR5cGUgPSBjdXN0b21UeXBlOworICAgICAgICBlbHNlIGlmICghdHlwZSkKKyAgICAgICAg
ICAgIHR5cGUgPSBtaW1lVHlwZVByZWZpeDsKKyAgICAgICAgZWxzZSBpZiAoIVt0eXBlIGlzRXF1
YWxUb1N0cmluZzptaW1lVHlwZVByZWZpeF0pCisgICAgICAgICAgICB0eXBlID0gY3VzdG9tVHlw
ZTsKKworICAgICAgICAvLyAiQ3VzdG9tIEZpbGVzIiBhbHNvIHdpbGwgYmUgc2hvd24gaWYgbW9y
ZSB0aGFuIG9uZSBzdWItdHlwZSBpcyBzcGVjaWZpZWQgdW5sZXNzICIqIiBpcyBzcGVjaWZpZWQu
CisgICAgICAgIGlmICghc3ViVHlwZSB8fCBbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5n
OkAiKiJdKQorICAgICAgICAgICAgc3ViVHlwZSA9IG1pbWVUeXBlU3VmZml4OworICAgICAgICBl
bHNlIGlmICghW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiKiJdICYmICFbc3ViVHlwZSBpc0Vx
dWFsVG9TdHJpbmc6bWltZVR5cGVTdWZmaXhdKQorICAgICAgICAgICAgc3ViVHlwZSA9IGN1c3Rv
bVR5cGU7CisKKyAgICAgICAgLy8gQWRkICJJbWFnZSBGaWxlcyIgdGl0bGUgaWYgbWltZVR5cGUg
aXMgYWxsb3dlZCBkZXN0ZW5hdGlvbiBpbWFnZSBmb3JtYXQuCisgICAgICAgIGlmIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyht
aW1lVHlwZSkpCisgICAgICAgICAgICBhbGxUeXBlID0gaW1hZ2VUeXBlOworICAgIH0KKworICAg
IC8vIEN1c3RvbSBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImF1ZGlvLyosaW1hZ2UvcG5nIiBv
ciBhY2NlcHQ9ImFwcGxpY2F0aW9uL3BkZiIuCisgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzpjdXN0b21UeXBlXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoY3VzdG9tVHlwZSwg
QCIiLCBAIiIpOworCisgICAgLy8gJ1R5cGUnIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1h
Z2UvKiIgb3IgYWNjZXB0PSJhdWRpby8qIi4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3Ry
aW5nOkAiKiJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgdHlwZSk7
CiAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGxlbmd0aF0gPD0gNCkKLSAgICAgICAgcmV0dXJu
IEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIFttaW1lVHlwZVN1ZmZpeCB1
cHBlcmNhc2VTdHJpbmddLCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIC8v
IEN1c3RvbSBGaWxlcywgJ1R5cGUnIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2UvanBl
ZyxpbWFnZS9wbmciLgorICAgIGlmIChbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6Y3VzdG9tVHlw
ZV0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAiIiwgYWxsVHlw
ZSk7CiAKLSAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwg
bWltZVR5cGVTdWZmaXgsIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07CisgICAgLy8g
J1N1Yi10eXBlIFR5cGUnLCAnVHlwZScgRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJpbWFnZS9w
bmciLgorICAgIHJldHVybiBjb21wb3NlVGl0bGVzKHR5cGUsIHN1YlR5cGUsIGFsbFR5cGUpOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAppbmRleCAyOWVlODEyMGU0
YWYxYmFlYTIyYzA2MjRhYzJlMjNiNGUxYmQ0YWQ2Li43YzFmY2QxYjJhNzFlYTU1YWU2YTVjNzQ5
NzY0MmViNTE4Yzg4NzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKQEAgLTMx
LDggKzMxLDkgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5z
aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxl
RXh0ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKIAog
QGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggOWQxMGQ5OTI0OTFiZGJkOWQ4YWExYjNlODdiODQ1MDAzMjRjOTk0MC4uNmRkN2IzYzk4ZTY5
NGJjMjc1ZGMyNTMxNTZlNjc3ZDNjMjU0NGNjYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA2LTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxl
Y3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNj
ZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSWYgdGhlIG51bWJlciBvZiB0aGUgZmlsZSBleHRlbnNpb25zJyB0aXRs
ZXMgaXMgdGhyZWUsIHNlbmQgYW4gYXJyYXkgb2YgCisgICAgICAgIGFsbEltYWdlRmlsZUV4dGVu
c2lvbnMgdG8gRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldC4gQWxzbyBzZXQgdGhlIGluaXRpYWwK
KyAgICAgICAgc2VsZWN0aW9uIG9mIHRoZSBmaWx0ZXIgdG8gdGhlIGl0ZW0gbmFtZWQgIkltYWdl
IEZpbGVzIi4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRo
T3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczphbGxJbWFnZUZpbGVFeHRlbnNpb25zOl0p
OgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBv
cHVwVGFyZ2V0Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJW
aWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlv
bkhhbmRsZXI6d2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRl
ZC4KKwogMjAyMC0wNi0yMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0ZsYXRwYWtdIE5pZ2h0bHkgcnVubmVyIGZhaWxzIHRvIGV4dHJhY3Qgemlw
IGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tCmluZGV4IDU3MGFhYTU0ZGI5NzBlNDc0MjQ4OTRmN2JkODcxYTczZjJjN2RkMGUu
LmRiZjlkMmE2MDQ0MmNjYzJkNjJiODc4ODZlYjBjYWUxZmMxYTVmYmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC03Nywx
NSArNzcsMTcgQEAgQGludGVyZmFjZSBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IDogTlNPYmpl
Y3QgewogQHByaXZhdGUKICAgICBOU09wZW5QYW5lbCAqX29wZW5QYW5lbDsKICAgICBOU0FycmF5
PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldAogCi0tIChpZClpbml0V2l0aE9wZW5QYW5lbDoo
TlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMgeworLSAoaWQpaW5pdFdpdGhPcGVuUGFu
ZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5
PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lv
bnM6IChOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB7CiAgICAg
aWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewogICAgICAgICBfb3BlblBhbmVsID0gb3BlblBh
bmVsOwogICAgICAgICBfYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0ZW5z
aW9ucyBjb3B5XTsKKyAgICAgICAgX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgPSBbYWxsSW1hZ2VG
aWxlRXh0ZW5zaW9ucyBjb3B5XTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMDAs
NiArMTAyLDEyIEBAIC0gKHZvaWQpcG9wdXBBY3Rpb246KGlkKXNlbmRlciB7CiAgICAgICAgICAg
ICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2FsbG93ZWRGaWxl
RXh0ZW5zaW9uc107CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTWlkZGxlIGl0ZW0uCisgICAg
ICAgIGlmICghW19hbGxJbWFnZUZpbGVFeHRlbnNpb25zIGNvdW50XSkKKyAgICAgICAgICAgIFtf
b3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsSW1hZ2VGaWxlRXh0
ZW5zaW9uc107CiAgICAgfQogfQogCkBAIC02NDQsNyArNjUyLDcgQEAgLSAobnVsbGFibGUgTlNW
aWV3ICopY3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmls
ZUV4dGVuc2kKICAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdldF07CiAgICAgW2J1dHRv
biBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwogICAgIFtidXR0b24gc2l6ZVRv
Rml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBdOworICAgIFtidXR0b24gc2Vs
ZWN0SXRlbUF0SW5kZXg6W3RpdGxlcyBjb3VudF0gPD0gMiA/IDAgOiAxXTsKICAgICBbcG9wdXBU
YXJnZXQgcG9wdXBBY3Rpb246YnV0dG9uXTsKICAgICAKICAgICBOU1ZpZXcqIGZpbHRlclZpZXcg
PSBbW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2Vd
OwpAQCAtNjg3LDEwICs2OTUsMTMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmEKIAogICAgIG9w
ZW5QYW5lbC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlw
bGVTZWxlY3Rpb247CiAKKyAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMg
PSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7CisgICAgTlNBcnJheSAq
YWxsb3dlZEZpbGVFeHRlbnNpb25zID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25z
OworICAgIE5TQXJyYXkgKmFsbEltYWdlRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRl
bnNpb25zVGl0bGVzIGNvdW50XSA9PSAyID8gQFtdIDogcGFyYW1ldGVycy5fYWxsSW1hZ2VGaWxl
RXh0ZW5zaW9uczsKKyAgICAKICAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFz
ZV07Ci0gICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9w
dXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVF
eHRlbnNpb25zOiBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgIF9maWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9j
XSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogYWxs
b3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6IGFsbEltYWdlRmlsZUV4
dGVuc2lvbnNdOwogCi0gICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0g
cGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOwogICAgIE5TVmlldyAqZmls
dGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0
bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKICAgICBpZiAoZmls
dGVyVmlldykKICAgICAgICAgW29wZW5QYW5lbCBzZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXdd
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402442</attachid>
            <date>2020-06-21 20:54:26 -0700</date>
            <delta_ts>2020-06-22 01:31:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200621205425.patch</filename>
            <type>text/plain</type>
            <size>48358</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM4NDYxY2YwOTVmNDM0
NjE2NDVlMTA2NDNmMmRkYTIwMzE5MzcxMy4uZWFhOTA5MTUwNTljYjhiZTlhMDI4ZjU5OGE5ODY3
NjJkNjQ3NTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA2LTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XSBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBl
PSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0Nwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIHR5cGUgb2YgdGhlIHNlbGVjdGVkIGlt
YWdlIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQgdHlwZXMsIHRoZQorICAgICAgICBpbWFnZSB3
aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZmlyc3QgZGVzdGluYXRpb24gYWxsb3dlZCBpbWFnZSB0
eXBlIGFuZAorICAgICAgICBpdCB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZS4g
VGhpcyBmaWxlIGlzIGEgcmVwbGFjZW1lbnQgdG8gdGhlCisgICAgICAgIG9yaWdpbmFsIGltYWdl
LCBzbyB0aGUgdHlwZSwgdGhlIHNpemUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgcmVhZCBmcm9tIGl0
CisgICAgICAgIGluc3RlYWQgb2YgdGhlIHNlbGVjdGVkIGltYWdlLgorCisgICAgICAgICogZmls
ZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAq
IGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6dHlwZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OmNvbnRlbnRUeXBlRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpkZXN0aW5h
dGlvblR5cGVGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6Om5hbWVGb3JGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmls
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgor
ICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdCk6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENy
ZWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
Q2hvb3Nlcjo6YWxsb3dlZFR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9v
c2VyOjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyQ2xpZW50OjpmaWxlc0Nob3Nlbik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNr
aW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKToKKworMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBG
aWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFs
bCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgQWRkIGxvY2Fs
aXphYmxlIHN0cmluZ3MgZm9yIHRoZSBPcGVuUGFuZWwgZmlsdGVyLgorCisgICAgICAgICogcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICBFeHBvcnQgYSBNSU1FVHlwZVJlZ2lz
dHJ5IEFQSSB0byBiZSByZWZlcmVuY2VkIGZyb20gV2ViS2l0IHByb2plY3QuCisKKwogMjAyMC0w
Ni0yMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBt
dWNoIG9mIHRoZSBTVkcgc3RyaW5nIHBhcnNpbmcgY29kZSB0byB1c2UgT3B0aW9uYWwgYmFzZWQg
cmV0dXJuIHZhbHVlcyByYXRoZXIgdGhhbiBvdXQtcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MDI0
YjEyNDYxYTVjNjJkMDMzNGJjZDlmMTBkNTVkNDg0MzIxZTgwLi5hN2Y1NjhjOTIxMGFkZGMyMzYx
MDI5MTY3MTYxMjgzMTdhNzkxYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA2
LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBh
bGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9m
IHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgb25lIG9mIHRoZSBtaW1lIHR5cGVzIGluIHRoZSAi
YWNjZXB0IiBhdHRyaWJ1dGUgaXMgYW4gYWxsb3dlZCBkZXN0ZW5hdGlvbgorICAgICAgICBpbWFn
ZSBmb3JtYXQsIGFkZCBhIG5ldyBpdGVtIGluIHRoZSBPcGVuUGFuZWwgZmlsdGVyIG5hbWVkICJJ
bWFnZSBGaWxlcyIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5tbToKKyAgICAgICAgKG1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXSk6CisgICAg
ICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVz
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQ
cml2YXRlLmg6CisKIDIwMjAtMDYtMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViS2l0IGZhaWxzIHRvIGxlYXZlIGF1ZGlvIHJvdXRpbmcgYXJiaXRyYXRp
b24gZHVyaW5nIG5hdmlnYXRpb24sIGNsb3NpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncwppbmRleCAxNjQ3ZDIzZmZhYWNmZDM4ZDQ1MTJiM2ZmNDZiOTAw
NGRkOTkzZmU1Li5kMzYwYTAzODAyZDgyZWU5YzQ5MWQ5YjU0NWFhNjNmNGQ4MjczMTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTYxLDYgKzYx
LDE1IEBACiAvKiBOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIg
a2V5IGluIEtleWNoYWluICovCiAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiID0gIiVAIFdlYkNy
eXB0byBNYXN0ZXIgS2V5IjsKIAorLyogQXVkaW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIg
Ki8KKyIlQCBhdWRpbyIgPSAiJUAgYXVkaW8iOworCisvKiBJbWFnZSBmb3JtYXQgdHlwZSBpbiBm
aWxlIHBpY2tlciAqLworIiVAIGltYWdlIiA9ICIlQCBpbWFnZSI7CisKKy8qIFZpZGVvIGZvcm1h
dCB0eXBlIGluIGZpbGUgcGlja2VyICovCisiJUAgdmlkZW8iID0gIiVAIHZpZGVvIjsKKwogLyog
TGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUg
dXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMgKi8KICIlZCBmaWxlcyIg
PSAiJWQgZmlsZXMiOwogCkBAIC0xMTUsNiArMTI0LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUg
Ki8KICJBbGlnbiBSaWdodCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkFsaWduIFJpZ2h0IjsKIAor
LyogQWxsIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkFsbCBGaWxlcyIgPSAiQWxsIEZpbGVz
IjsKKwogLyogQnV0dG9uIHRpdGxlIGluIFN0b3JhZ2UgQWNjZXNzIEFQSSBwcm9tcHQgKi8KICJB
bGxvdyAoY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdlYnNpdGUgZGF0YSBhY2Nlc3MpIiA9ICJBbGxv
dyI7CiAKQEAgLTEzNiw2ICsxNDgsOSBAQAogLyogV0tFcnJvckF0dHJpYnV0ZWRTdHJpbmdDb250
ZW50RmFpbGVkVG9Mb2FkIGRlc2NyaXB0aW9uICovCiAiQXR0cmlidXRlZCBzdHJpbmcgY29udGVu
dCBmYWlsZWQgdG8gbG9hZCIgPSAiQXR0cmlidXRlZCBzdHJpbmcgY29udGVudCBmYWlsZWQgdG8g
bG9hZCI7CiAKKy8qIEF1ZGlvIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkF1ZGlvIEZpbGVz
IiA9ICJBdWRpbyBGaWxlcyI7CisKIC8qIE1lbnUgaXRlbSBsYWJlbCBmb3IgYXV0b21hdGljIHRy
YWNrIHNlbGVjdGlvbiBiZWhhdmlvciAqLwogIkF1dG8gKFJlY29tbWVuZGVkKSIgPSAiQXV0byAo
UmVjb21tZW5kZWQpIjsKIApAQCAtMjY1LDYgKzI4MCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1l
ICovCiAiQ3JlYXRlIExpbmsgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJDcmVhdGUgTGluayI7CiAK
Ky8qIEN1c3RvbSBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJDdXN0b20gRmlsZXMiID0gIkN1
c3RvbSBGaWxlcyI7CisKIC8qIEN1dCBjb250ZXh0IG1lbnUgaXRlbSAqLwogIkN1dCIgPSAiQ3V0
IjsKIApAQCAtNDA5LDYgKzQyNyw5IEBACiAvKiBJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51
IGl0ZW0gKi8KICJJZ25vcmUgU3BlbGxpbmciID0gIklnbm9yZSBTcGVsbGluZyI7CiAKKy8qIElt
YWdlIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkltYWdlIEZpbGVzIiA9ICJJbWFnZSBGaWxl
cyI7CisKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJJbmRlbnQgKFVuZG8gYWN0aW9uIG5hbWUp
IiA9ICJJbmRlbnQiOwogCkBAIC05OTEsNiArMTAxMiw5IEBACiAvKiBWYWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2Vk
IG1heGltdW0gKi8KICJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIgPSAi
VmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMiOwogCisvKiBWaWRlbyBGaWxl
cyBpbiBmaWxlciBwaWNrZXIgKi8KKyJWaWRlbyBGaWxlcyIgPSAiVmlkZW8gRmlsZXMiOworCiAv
KiBQaGlzaGluZyB3YXJuaW5nIGRlc2NyaXB0aW9uICovCiAiV2FybmluZ3MgYXJlIHNob3duIGZv
ciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2
ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8gYmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0
aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiIgPSAiV2FybmluZ3MgYXJlIHNob3duIGZvciB3ZWJz
aXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJz
aXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8gYmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUg
d2Vic2l0ZXMgeW91IHRydXN0LiI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDMyYTNi
Njk4OWZhYjZlZDY0MDQxYjkwYjlkZWM0OTNmNjQwMzExNTYuLmI3NzI0ZTgxYWY4MjhhMDFlMTY4
OGJhZDY2ZWU5Y2QwNmJjZTBlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNzIsOSAr
NzIsMTAgQEAgVVJMUmVnaXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJl
dHVybiBpbnN0YW5jZTsKIH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3Rvciwg
VVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQorQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1
Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUp
CiAgICAgOiBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKICAgICAsIG1fdHlwZShXVEZNb3Zl
KHR5cGUpKQorICAgICwgbV9kZXN0aW5hdGlvblR5cGUoV1RGTW92ZShkZXN0aW5hdGlvblR5cGUp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDYxNGQ4MDlkMjA4OTNkNWVmZTAwYzgz
OTJiM2FlMzY1MmJkYTJhYzUuLmIyMjQ3OTRlODA5YjQ3MTZiMjFkZTJhNGU3NDdlYmViMjgyYTdi
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5CbG9iKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJuYWxVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uVHlwZS5pc051bGwoKSA/IG1fdHlwZSA6IG1fZGVzdGluYXRpb25UeXBlOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTE2LDcgKzEx
Niw3IEBAIHByb3RlY3RlZDoKICAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3Ry
dWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0aWFsaXplZENvbnRydWN0b3Ig
eyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRy
dWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlKTsKKyAgICBCbG9iKFVuaW5pdGlhbGl6ZWRDb250
cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsK
IAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7IGRlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IgfTsKICAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9u
Zz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CkBAIC0xMzEsNiArMTMxLDcg
QEAgcHJpdmF0ZToKICAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIFN0cmluZyBtX3R5cGU7
CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25UeXBlOwogCiAgICAgbXV0YWJsZSBPcHRpb25hbDx1
bnNpZ25lZCBsb25nIGxvbmc+IG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRl
eCA4ZDZlMzg3Mzg1NTEzZGRkNDFlMDM3MjQwOThiNDMyZWFjZWNlYmMwLi4xZjU0YWE3NWQwZDEw
YzIwMzRhMDIzZDA3ZDkxOGUyZjY5NDgzMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAg
LTQ2LDIwICs0NiwyMSBAQCBSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdgogICAgIHJldHVybiBmaWxl
OwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUpCitSZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBlOwot
ICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUocGF0aCwgbmFtZU92ZXJyaWRlLCBuYW1lLCB0
eXBlKTsKKyAgICBTdHJpbmcgdHlwZSA9IGNvbnRlbnRUeXBlRm9yRmlsZShwYXRoLCBuYW1lT3Zl
cnJpZGUpOworICAgIFN0cmluZyBkZXN0aW5hdGlvblR5cGUgPSBkZXN0aW5hdGlvblR5cGVGb3JG
aWxlKHBhdGgsIHR5cGUsIGFsbG93ZWRUeXBlcyk7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lRm9y
RmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSk7CiAKICAgICBh
dXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBwYXRo
LCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5h
bFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IHBhdGggfSwgV1RGTW92ZShuYW1lKSkpOwor
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxV
UkwsIHBhdGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSk7CisKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxVUkwpLCBTdHJpbmcgeyBwYXRoIH0sIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZGVzdGluYXRpb25UeXBlKSkpOwog
fQogCi1GaWxlOjpGaWxlKFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIFdURk1v
dmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6OkZpbGUoVVJMJiYgdXJsLCBTdHJpbmcmJiBw
YXRoLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5
cGUpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdU
Rk1vdmUodHlwZSksIFdURk1vdmUoZGVzdGluYXRpb25UeXBlKSkKICAgICAsIG1fcGF0aChXVEZN
b3ZlKHBhdGgpKQogICAgICwgbV9uYW1lKFdURk1vdmUobmFtZSkpCiB7CkBAIC0xMjMsMzIgKzEy
NCw1MiBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdU
Rjo6dGltZUNsaXAocmVzdWx0KTsKIH0KIAotdm9pZCBGaWxlOjpjb21wdXRlTmFtZUFuZENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0
cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSkKK1N0cmlu
ZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSkKIHsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBp
ZiAoc2hvdWxkUmVwbGFjZUZpbGUocGF0aCkpIHsKLSAgICAgICAgY29tcHV0ZU5hbWVBbmRDb250
ZW50VHlwZUZvclJlcGxhY2VkRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUsIGVmZmVjdGl2ZU5hbWUs
IGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
ICAgIGVmZmVjdGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNFbXB0eSgpID8gRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOwotICAgIHNpemVfdCBpbmRleCA9
IGVmZmVjdGl2ZU5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBTdHJpbmcgbmFtZSA9IG5hbWVP
dmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBu
YW1lT3ZlcnJpZGU7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIHNpemVfdCBpbmRleCA9IG5h
bWUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZlZmZlY3RpdmVDb250ZW50VHlwZSwgJmVmZmVj
dGl2ZU5hbWUsIGluZGV4XSB7Ci0gICAgICAgICAgICBlZmZlY3RpdmVDb250ZW50VHlwZSA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGVmZmVjdGl2ZU5hbWUuc3Vi
c3RyaW5nKGluZGV4ICsgMSkpLmlzb2xhdGVkQ29weSgpOworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkQW5kV2FpdChbJm1pbWVUeXBlLCAmbmFtZSwgaW5kZXhdIHsKKyAgICAgICAgICAgIG1pbWVU
eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24obmFtZS5zdWJz
dHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgIH0pOwogICAgIH0KKyAg
ICByZXR1cm4gbWltZVR5cGU7CiB9CiAKLVN0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIEZpbGU6OmRlc3RpbmF0aW9uVHlwZUZvckZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBl
OwotICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUocGF0aCwgU3RyaW5nKCksIG5hbWUsIHR5
cGUpOwotCisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgaWYgKGlzRmlsZVR5cGVQ
YWNrYWdlKHBhdGgpKQorICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3ppcCJfczsKKworICAg
IGlmIChhbGxvd2VkVHlwZXMuY29udGFpbnModHlwZSkpCisgICAgICAgIHJldHVybiB0eXBlOwor
ICAgIAorICAgIGZvciAoYXV0byYgYWxsb3dlZFR5cGUgOiBhbGxvd2VkVHlwZXMpIHsKKyAgICAg
ICAgaWYgKGFsbG93ZWRUeXBlID09ICJpbWFnZS8qIikKKyAgICAgICAgICAgIHJldHVybiB0eXBl
OworICAgICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcoYWxsb3dlZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGFsbG93ZWRUeXBl
OworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiB0eXBlOwogfQogCitTdHJpbmcgRmlsZTo6bmFt
ZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkKK3sKKyAg
ICBTdHJpbmcgbmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CisjaWYgRU5BQkxFKEZJTEVfUkVQTEFD
RU1FTlQpCisgICAgaWYgKGRlc3RpbmF0aW9uVHlwZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQor
ICAgICAgICBuYW1lID0gbWFrZVN0cmluZyhuYW1lLCAiLnppcCJfcyk7CisgICAgZWxzZSBpZiAo
IWRlc3RpbmF0aW9uVHlwZS5pc0VtcHR5KCkgJiYgdHlwZSAhPSBkZXN0aW5hdGlvblR5cGUpIHsK
KyAgICAgICAgYXV0byBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9u
c0Zvck1JTUVUeXBlKGRlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIG5hbWUgPSBtYWtlU3RyaW5n
KG5hbWUsICIuIl9zLCBleHRlbnNpb25zWzBdKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4g
bmFtZTsKK30KKwogYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2lzRGlyZWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMmY5MzhiNDIwZDNhNjBmYjkz
Zjc0MGJjYjA0ZDc0MWY4M2VmZjc4Li44ZmRhYmMxZmNiZGI0MTJhZmQ3NzBlNzlkZjM3ZWU2NWQw
ZjNlODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9z
ZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVy
dGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlID0geyB9LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBl
cyA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNv
bnN0cnVjdG9yLgogICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZh
cmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
UHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQpAQCAtNzYsMjggKzc2LDI1IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGxhc3RNb2RpZmllZCgpIGNvbnN0OyAvLyBOdW1iZXIg
b2YgbWlsbGlzZWNvbmRzIHNpbmNlIEVwb2NoLgogICAgIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+
JiBsYXN0TW9kaWZpZWRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0
ZU92ZXJyaWRlOyB9IC8vIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgRXBvY2guCiAKLSAg
ICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwor
ICAgIHN0YXRpYyBTdHJpbmcgY29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOworICAgIHN0YXRpYyBTdHJpbmcgZGVz
dGluYXRpb25UeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdHlw
ZSA9IHsgfSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0pOworICAg
IHN0YXRpYyBTdHJpbmcgbmFtZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXBsYWNlRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpOworICAgIHN0YXRpYyBib29sIGlzRmlsZVR5cGVQYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0g
ICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFt
ZSk7CisgICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5n
JiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsKICAgICBGaWxlKFZlY3RvcjxCbG9i
UGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgUHJvcGVydHlCYWcmKTsKICAgICBGaWxlKGNvbnN0IEJsb2ImLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAg
ICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsKIAotICAgIHN0YXRpYyB2b2lk
IGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2
ZUNvbnRlbnRUeXBlKTsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBzdGF0aWMg
dm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFt
ZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7Ci0jZW5kaWYKLQogICAgIFN0cmluZyBt
X3BhdGg7CiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwogICAgIFN0cmluZyBtX25hbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCmluZGV4IDY2NGY5YTUzNjEzZGYyNmNhMTdjNzA3
YzIxYjUwYzY0NjQ1MjA0ZTYuLjEwNTQ5OGJlY2FmYTgwYjI3MTY3NGExYzMxNDQ3NDAzMTcxNWQw
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGaWxlOjpzaG91bGRSZXBsYWNlRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGU6OmlzRmlsZVR5cGVQYWNrYWdlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTU3LDEzICs1Nyw2IEBAIGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0
cmluZ1JlZil1dGksIGtVVFR5cGVQYWNrYWdlKTsKIH0KIAotdm9pZCBGaWxlOjpjb21wdXRlTmFt
ZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZl
Y3RpdmVDb250ZW50VHlwZSkKLXsKLSAgICBBU1NFUlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8gRXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0
aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3IgZGlyZWN0b3JpZXMuCi0gICAgZWZmZWN0aXZl
Q29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwotICAgIGVmZmVjdGl2ZU5hbWUgPSBt
YWtlU3RyaW5nKChuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGUpLCAiLnppcCJfcyk7Ci19Ci0KIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggNWUxZDRjMDBhOWMwNjhjODAzMWMy
NGNjZDYwYWIyMGE2YWZhMDYwYi4uMTNjODYyNzk3YTIzNDRjMWZlNzk1MjA2NjE2Yjc0MDJjMTVm
ZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgc3RhdGljIFRocmVhZFNwZWNpZmljPEJsb2JV
cmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAqbWFwOwogfQogCi12b2lkIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlKQogewogICAgIGlmIChpc01h
aW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsK
KyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgsIG5hbWUsIGNvbnRlbnRUeXBlLCBkZXN0aW5hdGlv
blR5cGUpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7Ci0g
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAgIGNhbGxPbk1haW5U
aHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5
KCksIG5hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBl
Lmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblR5cGUgPSBkZXN0aW5hdGlvblR5cGUuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1
cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgsIG5hbWUsIGRlc3RpbmF0aW9u
VHlwZSksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBhOWM3OWZlMjI5MmY4OTViMzFj
NjBmNzU2N2ZmZDA0OTNmZWRjODMyLi4wZTBmNmYzYmU4YTM5ZmM4Mzk2ZjFiOTNiYWE4M2M5Mzky
NzAzMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3Mg
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlKTsKICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1ZTRiODIwZWI2ODBmN2NjNDI2NTVmMGI5ZTJk
NmQuLjkwZWE2ZDA1MWRkODc0MzI3YjJmMDBkOTEyNTY3YWIyM2FiNDQ5MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgRmlsZUlu
cHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZpbGVzLCBSZXF1ZXN0SWNvbiBz
aG91bGRSZXF1ZXN0CiAgICAgcHJvdGVjdGVkSW5wdXRFbGVtZW50LT5zZXRDaGFuZ2VkU2luY2VM
YXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAKLXZvaWQgRmlsZUlucHV0VHlw
ZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQordm9pZCBGaWxlSW5wdXRU
eXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhz
LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcywgY29uc3QgU3RyaW5nJiBkaXNw
bGF5U3RyaW5nLCBJY29uKiBpY29uKQogewogICAgIGlmICghZGlzcGxheVN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlTdHJpbmc7CkBAIC00MTMsOCAr
NDEzLDggQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgICAgICBtX2RpcmVjdG9yeUZpbGVM
aXN0Q3JlYXRvci0+Y2FuY2VsKCk7CiAKICAgICBpZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsK
LSAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5mbykgewotICAg
ICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5kaXNw
bGF5TmFtZSk7CisgICAgICAgIGF1dG8gZmlsZXMgPSBwYXRocy5tYXAoWyZhbGxvd2VkVHlwZXNd
KGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJ
bmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lLCBhbGxvd2VkVHlwZXMpOwogICAgICAgICB9
KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVzKSksIGljb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oCmluZGV4IDA4ZjYyMWZlNWMzZDZkMzAzODY3YWU5ZjA3MTdlYWRkMzU2ZWNiYWEuLmQzNDkz
MWY2NTlkYjQ1NjZmNTk5MWJjY2IyNjUzYjY1YjM4OThmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJpbmcgZGVmYXVs
dFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nID0g
eyB9LCBJY29uKiA9IG51bGxwdHIpIGZpbmFsOworICAgIHZvaWQgZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxv
d2VkVHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiog
PSBudWxscHRyKSBmaW5hbDsKIAogICAgIC8vIEZpbGVJY29uTG9hZGVyQ2xpZW50IGltcGxlbWVu
dGF0aW9uLgogICAgIHZvaWQgaWNvbkxvYWRlZChSZWZQdHI8SWNvbj4mJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdiY2Y0NTM4ZmVk
ODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4uNTQxOWI4YWQ4OTA2MGJkYjNhYmRhODgzN2RiN2JmOTBh
YzU3MDUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtMjks
NiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgi
CiAKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRmlsZUNob29zZXI6OkZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQpAQCAtNDQsNiArNDYsMTkgQEAgUmVm
PEZpbGVDaG9vc2VyPiBGaWxlQ2hvb3Nlcjo6Y3JlYXRlKEZpbGVDaG9vc2VyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IEZpbGVDaG9vc2UKIAogRmlsZUNob29zZXI6On5GaWxlQ2hvb3NlcigpID0gZGVm
YXVsdDsKIAorSGFzaFNldDxTdHJpbmc+IEZpbGVDaG9vc2VyOjphbGxvd2VkVHlwZXMoKSBjb25z
dAoreworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXM7CisgICAgZm9yIChhdXRvJiB0
eXBlIDogbV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAgIGFsbG93ZWRUeXBlcy5h
ZGQodHlwZSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3NldHRpbmdzLmFjY2VwdEZp
bGVFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykgPyBleHRlbnNp
b24ucmlnaHQoZXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSkgOiBleHRlbnNpb24pOworICAgICAgICBp
ZiAoIXR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWxsb3dlZFR5cGVzLmFkZCh0eXBlKTsK
KyAgICB9CisgICAgcmV0dXJuIGFsbG93ZWRUeXBlczsKK30KKwogdm9pZCBGaWxlQ2hvb3Nlcjo6
aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTcwLDcgKzg1LDcgQEAg
dm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcykKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CiAgICAgZm9yIChh
dXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9v
c2VyRmlsZUluZm8oZmlsZW5hbWUpKTsKLSAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMp
OworICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgYWxsb3dlZFR5cGVzKCkpOwogfQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTg5LDcgKzEwNCw3IEBAIHZvaWQgRmlsZUNo
b29zZXI6OmNob29zZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywg
Y29uc3QgU3RyaW5nCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwogICAg
IGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCiAgICAgICAgIGZpbGVzLmFwcGVuZChG
aWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7Ci0gICAgbV9jbGllbnQtPmZpbGVzQ2hvc2Vu
KGZpbGVzLCBkaXNwbGF5U3RyaW5nLCBpY29uKTsKKyAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4o
ZmlsZXMsIHsgfSwgZGlzcGxheVN0cmluZywgaWNvbik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0Mzg3OTVhNzZmZWM5YTNkYmY3
YzZhMDg0ZWEwODg5NS4uN2Q5MTllYjljZDU1NjZiYTI3YzQ1YmI1NDFjOGMzNTdiZDVhMzA0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC0zMCw2ICszMCw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc2LDcgKzc3LDcg
QEAgY2xhc3MgRmlsZUNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbGVD
aG9vc2VyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2Vu
KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZp
bGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzID0geyB9LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJp
bmcgPSB7IH0sIEljb24qID0gbnVsbHB0cikgPSAwOwogfTsKIAogY2xhc3MgRmlsZUNob29zZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2hvb3Nlcj4gewpAQCAtMTAyLDYgKzEwMyw4IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgRmlsZUNob29zZXIoRmlsZUNob29zZXJDbGllbnQqLCBjb25z
dCBGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAKKyAgICBIYXNoU2V0PFN0cmluZz4gYWxsb3dlZFR5
cGVzKCkgY29uc3Q7CisKICAgICBGaWxlQ2hvb3NlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CiAgICAgRmlsZUNob29zZXJTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVkZTJhZGIwMWEx
NTUwZTJmZTUwZDUwNjQzYjNmYTNmLi4xM2UyNTE2Zjk2MTI2NTY3ZTE1OWVhZTVmNTVjMjI0YjA5
MGVkODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBi
ZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZv
ckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1
aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04gcmVzb3VyY2Uu
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggNWFi
ZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNi4uYTcyNmU3MjU1NzExNTk2NDg1
Y2RhYTE0OTk2YjM4YWYwZGRmNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAtMzIsMTUgKzMy
LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoKQorQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blR5cGUpCiAgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fbmFtZShuYW1lKQorICAgICwgbV90
eXBlKHR5cGUpCisgICAgLCBtX2Rlc3RpbmF0aW9uVHlwZShkZXN0aW5hdGlvblR5cGUpCiB7CiB9
CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7CiAj
aWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5p
c051bGwoKSkKKyAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpICYmIG1fZGVzdGlu
YXRpb25UeXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3MpCiAgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CkBAIC00OCw3ICs1MSw3IEBA
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiBjb25zdCBT
dHJpbmcmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCgpCiB7CiAjaWYgRU5BQkxFKEZJTEVf
UkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCkKKyAg
ICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpKQogICAgICAgICBnZW5lcmF0ZVJl
cGxhY2VtZW50RmlsZSgpOwogCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkK
QEAgLTYxLDcgKzY0LDcgQEAgY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBh
dGgoKQogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c2l6ZSgpCiB7
CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91
bGRCZUdlbmVyYXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpKQog
ICAgICAgICBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogI2VuZGlmCiAKQEAgLTczLDcgKzc2
LDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKCkKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICAvLyBX
ZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlvbnMgZm9yIGdlbmVyYXRlZCBmaWxl
cywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhp
cyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUgaGFuZGxpbmcgLSBGaWxlIG9iamVj
dHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJseWluZyBmaWxlcyBjaGFuZ2UuCi0g
ICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB8fCAhbV9yZXBsYWNlbWVudFBh
dGguaXNOdWxsKCkpCisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwoKSB8fCAhbV9y
ZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAj
ZW5kaWYKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBAIC04Niw3ICs4
OSw4IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0
aW9ucygpCiAgICAgLy8gdGhlIGNvc3Qgb2YgdHJhY2tpbmcgZmlsZSBtb2RpZmljYXRpb25zLgog
CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgbV9yZXBsYWNlbWVudFNob3VsZEJl
R2VuZXJhdGVkID0gRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUobV9wYXRoKTsKKyAgICBpZiAoRmls
ZTo6aXNGaWxlVHlwZVBhY2thZ2UobV9wYXRoKSkKKyAgICAgICAgbV9kZXN0aW5hdGlvblR5cGUg
PSAiYXBwbGljYXRpb24vemlwIl9zOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogU29tZSBwbGF0
Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lzdGVtIG9iamVj
dCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KQEAgLTk3LDcgKzEwMSw3IEBAIHZvaWQg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpCiAgICAg
bV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSBtZXRhZGF0YS52YWx1ZSgpLm1vZGlmaWNhdGlv
blRpbWU7CiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBpZiAobV9yZXBsYWNl
bWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChyZXBsYWNlbWVudFNob3VsZEJlR2VuZXJh
dGVkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAppbmRleCA2NTg4
MjlkMDdmY2ZiZDZiMDJhMjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li5iZGQxZWY4Mjk1MmVmNDE0MTE3
NmQzYzY5YjgxN2ExMzIyYzMxN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZV9oCi0jZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC0zNSw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoLCBuYW1lLCB0eXBlLCBkZXN0aW5h
dGlvblR5cGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVSZWZlcmVuY2Uo
KTsKQEAgLTUyLDIyICs1MSwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUZp
bGVBY2Nlc3MoKTsKIAogcHJvdGVjdGVkOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25z
dCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKIHByaXZhdGU6CiAjaWYg
RU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgYm9vbCByZXBsYWNlbWVudFNob3VsZEJlR2Vu
ZXJhdGVkKCkgY29uc3Q7CiAgICAgdm9pZCBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogI2Vu
ZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOworICAgIFN0cmluZyBtX25hbWU7CisgICAgU3RyaW5n
IG1fdHlwZTsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblR5cGU7CiAjaWYgRU5BQkxFKEZJTEVf
UkVQTEFDRU1FTlQpCiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRQYXRoOwotICAgIGJvb2wgbV9y
ZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBtX3NpemUgeyAwIH07CiAgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxU
aW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CiB9OwogCiB9
Ci0KLSNlbmRpZiAvLyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlTWFjLm1tCmluZGV4IDVlYzc3N2E4Njk5MDY3MTE4Y2JjZDU1MjhlOGY0ZmZlOTJhNDQ4NmIu
LjFlMWJjYzFiYjFhYmMyYjU2YTJhNTQxMmRjODk2Y2Y4OThmMTE5NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDI1ICsyOCw1OSBAQAogCiAjaWYgRU5BQkxFKEZJTEVf
UkVQTEFDRU1FTlQpCiAKKyNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCA8d3RmL0Zp
bGVNZXRhZGF0YS5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6cmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdHlwZSAhPSBtX2Rlc3RpbmF0aW9uVHlwZSAmJiBtX3JlcGxhY2VtZW50UGF0aC5p
c051bGwoKTsKK30KKwogdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFj
ZW1lbnRGaWxlKCkKIHsKLSAgICBBU1NFUlQobV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpOwot
ICAgIEFTU0VSVChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpOworICAgIEFTU0VSVChy
ZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKCkpOwogCiAgICAgcHJlcGFyZUZvckZpbGVBY2Nl
c3MoKTsKIAotICAgIGF1dG8gZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeVppcEFyY2hpdmUobV9wYXRoKTsKLSAgICBpZiAoIWdlbmVyYXRlZEZpbGUuaXNOdWxsKCkp
Ci0gICAgICAgIG1fcmVwbGFjZW1lbnRQYXRoID0gV1RGTW92ZShnZW5lcmF0ZWRGaWxlKTsKKyAg
ICBTdHJpbmcgZ2VuZXJhdGVkRmlsZTsKKyAgICBpZiAobV9kZXN0aW5hdGlvblR5cGUgPT0gImFw
cGxpY2F0aW9uL3ppcCJfcykKKyAgICAgICAgZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUobV9wYXRoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSAhPSBtX2Rlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIEFTU0VSVChtX2Rlc3Rp
bmF0aW9uVHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iX3MpKTsKKworICAgICAgICAvLyBDcmVhdGUg
dGhlIGltYWdlIHNvdXJjZS4KKyAgICAgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGF0aC5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICAg
ICAgYXV0byBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJj
ZVVSTC5nZXQoKSwgTlVMTCkpOworCisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxl
LgorICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgcGxhdGZvcm1GaWxlSGFu
ZGxlOworICAgICAgICBnZW5lcmF0ZWRGaWxlID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUobV9uYW1lLCBwbGF0Zm9ybUZpbGVIYW5kbGUpOwogCi0gICAgbV9yZXBsYWNlbWVudFNob3Vs
ZEJlR2VuZXJhdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwo
KSkgeworICAgICAgICAvLyBDcmVhdGUgdGhlIGRhdGEgY29uc3VtZXIuCisgICAgICAgIENHRGF0
YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgW10odm9pZCAqaW5mbywgY29uc3Qgdm9p
ZCogYnVmZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7CisgICAgICAgICAgICBhdXRvIHBs
YXRmb3JtRmlsZUhhbmRsZSA9ICpzdGF0aWNfY2FzdDxGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUqPihpbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShwbGF0Zm9ybUZpbGVIYW5kbGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBj
b3VudCk7CisgICAgICAgIH0sIE5VTEwgfTsKKworICAgICAgICBhdXRvIGNvbnN1bWVyID0gYWRv
cHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgmcGxhdGZvcm1GaWxlSGFuZGxlLCAmY2FsbGJhY2tz
KSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSBkZXN0aW5hdGlvbi4KKyAgICAgICAg
YXV0byB1dGkgPSBVVElGcm9tTUlNRVR5cGUobV9kZXN0aW5hdGlvblR5cGUpOworICAgICAgICBh
dXRvIGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0
YUNvbnN1bWVyKGNvbnN1bWVyLmdldCgpLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMSwg
TlVMTCkpOworCisgICAgICAgIC8vIFdyaXRlIHRoZSBpbWFnZSBzb3VyY2UgdG8gdGhlIGltYWdl
IGRlc3RpbmF0aW9uLgorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3Vy
Y2UoZGVzdGluYXRpb24uZ2V0KCksIHNvdXJjZS5nZXQoKSwgMCwgbnVsbHB0cik7CisgICAgICAg
IENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgfQorCisgICAg
aWYgKCFnZW5lcmF0ZWRGaWxlLmlzTnVsbCgpKSB7CisgICAgICAgIG1fcmVwbGFjZW1lbnRQYXRo
ID0gV1RGTW92ZShnZW5lcmF0ZWRGaWxlKTsKICAgICAgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBG
aWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0
aCkpCiAgICAgICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVycy5tbQppbmRleCBkOTAwZjllOGQ2NzU0MWNiOGMyOWVkNDI4YTFlOWIw
MDhiMTQ4ODIzLi44NmEyNDU4OGE3MWQzMGM1NjE1YjMzNmVmZGIwZDY2N2I3YjY5N2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW0KQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0
cnkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVNlcnZpY2VzU1BJLmg+CiAKICNpZiBQ
TEFURk9STShNQUMpCkBAIC02MiwxMSArNjQsMTMgQEAgc3RhdGljIE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkK
ICAgICAgICAgICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdENGKFVUVHlwZUNvcHlBbGxUYWdzV2l0
aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOworICAgICAgICAgICAg
aWYgKCFleHRlbnNpb25zIHx8ICFDRkFycmF5R2V0Q291bnQoZXh0ZW5zaW9ucy5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlN
RVR5cGUoKF9fYnJpZGdlIE5TU3RyaW5nICopbWltZVR5cGUuZ2V0KCksIChfX2JyaWRnZSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9ucy5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBBZGQgYWRkaXRpb25hbCBtaW1lIHR5cGVzIHdoaWNoIF9VVENvcHlEZWNsYXJlZFR5cGVJ
ZGVudGlmaWVycygpIG1heSBub3QgcmV0dXJuLgotICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1F
VHlwZShAImltYWdlL3dlYnAiLCBAIndlYnAiKTsKKyAgICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1J
TUVUeXBlKEAiaW1hZ2Uvd2VicCIsIEBbQCJ3ZWJwIl0pOwogCiAgICAgICAgIHJldHVybiBleHRl
bnNpb25zRm9yTUlNRVR5cGVNYXA7CiAgICAgfSgpKTsKQEAgLTc5LDYgKzgzLDE4IEBAIHN0YXRp
YyBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3RyaW5nICptaW1l
dHlwZSkKICAgICByZXR1cm4gW2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpIG9iamVjdEZvcktl
eTptaW1ldHlwZV07CiB9CiAKK3N0YXRpYyBOU1N0cmluZyAqbWltZVR5cGVGb3JFeHRlbnNpb24o
TlNTdHJpbmcgKmV4dGVuc2lvbikKK3sKKyAgICBOU1NldDxOU1N0cmluZyAqPiAqbWltZVR5cGVz
ID0gW2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpIGtleXNPZkVudHJpZXNQYXNzaW5nVGVzdDpe
Qk9PTChOU1N0cmluZyAqbWltZVR5cGUsIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zLCBC
T09MICopIHsKKyAgICAgICAgaWYgKFttaW1lVHlwZSBoYXNTdWZmaXg6QCIqIl0pCisgICAgICAg
ICAgICByZXR1cm4gTk87CisgICAgICAgIGlmIChbZXh0ZW5zaW9uIGNoYXJhY3RlckF0SW5kZXg6
MF0gPT0gJy4nKQorICAgICAgICAgICAgcmV0dXJuIFtleHRlbnNpb25zIGNvbnRhaW5zT2JqZWN0
OltleHRlbnNpb24gc3Vic3RyaW5nRnJvbUluZGV4OjFdXTsKKyAgICAgICAgcmV0dXJuIFtleHRl
bnNpb25zIGNvbnRhaW5zT2JqZWN0OmV4dGVuc2lvbl07CisgICAgfV07CisgICAgcmV0dXJuIFtt
aW1lVHlwZXMgYW55T2JqZWN0XTsKK30KKwogQGltcGxlbWVudGF0aW9uIFdLT3BlblBhbmVsUGFy
YW1ldGVycwogCiAtIChCT09MKWFsbG93c011bHRpcGxlU2VsZWN0aW9uCkBAIC0xMzYsMzYgKzE1
MiwxMTggQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUo
TlNTdHJpbmcgKm1pbWV0eXBlKQogICAgIHJldHVybiBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFs
bE9iamVjdHNdOwogfQogCi0tIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc1RpdGxlcworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxJbWFnZUZpbGVFeHRl
bnNpb25zCiB7Ci0gICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1J
TUVUeXBlc107Ci0gICAgYXV0byBhY2NlcHRlZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2Vw
dGVkRmlsZUV4dGVuc2lvbnNdOworICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKEAi
aW1hZ2UvKiIpIGFsbE9iamVjdHNdOworfQogCi0gICAgY29uc3RleHByIGF1dG8gQWxsRmlsZXNU
aXRsZSA9IEAiQWxsIEZpbGVzIjsKLSAgICBjb25zdGV4cHIgYXV0byBDdXN0b21GaWxlc1RpdGxl
ID0gQCJDdXN0b20gRmlsZXMiOworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmls
ZUV4dGVuc2lvbnNUaXRsZXMKK3sKKyAgICBOU1N0cmluZyAqYWxsRmlsZXNUaXRsZSA9IFdFQl9V
SV9TVFJJTkcoIkFsbCBGaWxlcyIsICJBbGwgRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAg
TlNTdHJpbmcgKmFsbEltYWdlRmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkltYWdlIEZpbGVz
IiwgIkltYWdlIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOworICAgIE5TU3RyaW5nICphbGxWaWRl
b0ZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJWaWRlbyBGaWxlcyIsICJWaWRlbyBGaWxlcyBp
biBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYWxsQXVkaW9GaWxlc1RpdGxlID0gV0VC
X1VJX1NUUklORygiQXVkaW8gRmlsZXMiLCAiQXVkaW8gRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7
CisgICAgTlNTdHJpbmcgKmN1c3RvbUZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJDdXN0b20g
RmlsZXMiLCAiQ3VzdG9tIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOworICAgIE5TU3RyaW5nICpp
bWFnZVRpdGxlID0gV0VCX1VJX1NUUklORygiJUAgaW1hZ2UiLCAiSW1hZ2UgZm9ybWF0IHR5cGUg
aW4gZmlsZSBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqdmlkZW9UaXRsZSA9IFdFQl9VSV9TVFJJ
TkcoIiVAIHZpZGVvIiwgIlZpZGVvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyIik7CisgICAg
TlNTdHJpbmcgKmF1ZGlvVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCIlQCBhdWRpbyIsICJBdWRpbyBm
b3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciIpOworICAgIAorICAgIGNvbnN0ZXhwciBhdXRvIGlt
YWdlVHlwZSA9IEAiaW1hZ2UiOworICAgIGNvbnN0ZXhwciBhdXRvIHZpZGVvVHlwZSA9IEAidmlk
ZW8iOworICAgIGNvbnN0ZXhwciBhdXRvIGF1ZGlvVHlwZSA9IEAiYXVkaW8iOworICAgIGNvbnN0
ZXhwciBhdXRvIGN1c3RvbVR5cGUgPSBAImN1c3RvbSI7CiAgICAgCi0gICAgaWYgKCFbYWNjZXB0
ZWRNSU1FVHlwZXMgY291bnRdICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0g
ICAgICAgIHJldHVybiBAW0FsbEZpbGVzVGl0bGVdOworICAgIGF1dG8gY29tcG9zZVRpdGxlcyA9
IF4oTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkg
eworICAgICAgICBOU011dGFibGVBcnJheSogdGl0bGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKworICAgICAgICAvLyBpZiB7IHR5cGUgc3ViVHlwZSB9ID09ICJpbWFnZS9wbmciIHRoZW4g
YWRkICJQTkcgSW1hZ2UiCisgICAgICAgIGlmIChbc3ViVHlwZSBsZW5ndGhdKSB7CisgICAgICAg
ICAgICBOU1N0cmluZyAqdHlwZVRpdGxlID0gW3R5cGUgaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlw
ZV0gPyBpbWFnZVRpdGxlIDogKFt0eXBlIGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVdID8gdmlk
ZW9UaXRsZSA6IGF1ZGlvVGl0bGUpOworICAgICAgICAgICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0g
PD0gNCkKKyAgICAgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDp0eXBlVGl0bGUsIFtzdWJUeXBlIHVwcGVyY2FzZVN0cmluZ11dXTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDp0eXBlVGl0bGUsIHN1YlR5cGVdXTsKKyAgICAgICAgfSBlbHNlIGlm
IChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6Y3VzdG9tVHlwZV0pIHsKKyAgICAgICAgICAgIC8vIGlm
IHsgdHlwZSBzdWJUeXBlIH0gPT0gIkN1c3RvbSBGaWxlcyIgdGhlbiBhZGQgIkN1c3RvbSBGaWxl
cyIKKyAgICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OmN1c3RvbUZpbGVzVGl0bGVdOworICAg
ICAgICB9CiAKLSAgICBpZiAoIShbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdID09IDEgJiYgIVth
Y2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZp
bGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOworICAgICAgICAvLyBpZiBhbGxUeXBlID09ICJpbWFn
ZSIgdGhlbiBhZGQgIkltYWdlIEZpbGVzIgorICAgICAgICBpZiAoW2FsbFR5cGUgbGVuZ3RoXSkg
eworICAgICAgICAgICAgTlNTdHJpbmcgKmFsbFR5cGVUaXRsZSA9IFthbGxUeXBlIGlzRXF1YWxU
b1N0cmluZzppbWFnZVR5cGVdID8gYWxsSW1hZ2VGaWxlc1RpdGxlIDogKFthbGxUeXBlIGlzRXF1
YWxUb1N0cmluZzp2aWRlb1R5cGVdID8gYWxsVmlkZW9GaWxlc1RpdGxlIDogYWxsQXVkaW9GaWxl
c1RpdGxlKTsKKyAgICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OmFsbFR5cGVUaXRsZV07Cisg
ICAgICAgIH0KIAotICAgIGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RP
YmplY3RdOwotICAgIGF1dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsK
LSAgICAKLSAgICBpZiAoIXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmls
ZXNUaXRsZSwgQWxsRmlsZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9
IFttaW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1p
bWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlv
biArIDFdOwotICAgIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAi
KiJdKQotICAgICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAg
RmlsZXMiLCBbW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3Ry
aW5nXSwgW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0
bGVdOworICAgICAgICAvLyBJbiBhbGwgY2FzZXMgYWRkICJBbGwgRmlsZXMiCisgICAgICAgIFt0
aXRsZXMgYWRkT2JqZWN0OmFsbEZpbGVzVGl0bGVdOworICAgICAgICByZXR1cm4gdGl0bGVzOwor
ICAgIH07CisKKyAgICAvLyBObyBhY2NlcHQgYXR0cmlidXRlOiA8aW5wdXQgdHlwZT0iZmlsZSI+
CisgICAgaWYgKCFbW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXSBjb3VudF0gJiYgIVtbc2VsZiBf
YWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc10gY291bnRdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRp
dGxlcyhAIiIsIEAiIiwgQCIiKTsKKworICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OltzZWxmIF9hY2NlcHRlZE1J
TUVUeXBlc11dKTsKKworICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBpbiBbc2VsZiBfYWNj
ZXB0ZWRGaWxlRXh0ZW5zaW9uc10pIHsKKyAgICAgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBtaW1lVHlwZUZv
ckV4dGVuc2lvbihbZXh0ZW5zaW9uIHN1YnN0cmluZ0Zyb21JbmRleDoxXSk7CisKKyAgICAgICAg
Ly8gVW5rbm93biBmaWxlIGV4dGVuc2lvbjogPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iLnh5
eiI+CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gY29tcG9zZVRp
dGxlcyhjdXN0b21UeXBlLCBAIiIsIEAiIik7CisKKyAgICAgICAgW2FjY2VwdGVkTUlNRVR5cGVz
IGFkZE9iamVjdDptaW1lVHlwZV07CisgICAgfQorCisgICAgTlNTdHJpbmcgKnR5cGUgPSBuaWw7
CisgICAgTlNTdHJpbmcgKnN1YlR5cGUgPSBuaWw7CisgICAgTlNTdHJpbmcgKmFsbFR5cGUgPSBu
aWw7CisKKyAgICBmb3IgKE5TU3RyaW5nICptaW1lVHlwZSBpbiBhY2NlcHRlZE1JTUVUeXBlcy5n
ZXQoKSkgeworICAgICAgICBOU1JhbmdlIHJhbmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6
QCIvIl07CisgICAgICAgIGlmICghcmFuZ2UubGVuZ3RoKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdUb0lu
ZGV4OnJhbmdlLmxvY2F0aW9uXTsKKyAgICAgICAgYXV0byBtaW1lVHlwZVN1ZmZpeCA9IFttaW1l
VHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRpb24gKyAxXTsKKworICAgICAgICAv
LyBPbmx5IGltYWdlLCB2aWRlbyBhbmQgYXVkaW8gbWltZSB0eXBlcyB3aWxsIGhhdmUgZGVzY3Jp
cHRpdmUgdGl0bGVzLiBPdGhlciB0eXBlcyB3aWxsIGJlIHNob3duCisgICAgICAgIC8vIGFzICJD
dXN0b20gRmlsZXMiLiAiQ3VzdG9tIEZpbGVzIiB3aWxsIGJlIHNob3duIGFsc28gaWYgbW9yZSB0
aGFuIGEgbWltZSB0eXBlIGlzIHNwZWNpZmllZC4KKyAgICAgICAgaWYgKCFbbWltZVR5cGVQcmVm
aXggaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlwZV0gJiYgIVttaW1lVHlwZVByZWZpeCBpc0VxdWFs
VG9TdHJpbmc6dmlkZW9UeXBlXSAmJiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzph
dWRpb1R5cGVdKQorICAgICAgICAgICAgdHlwZSA9IGN1c3RvbVR5cGU7CisgICAgICAgIGVsc2Ug
aWYgKCF0eXBlKQorICAgICAgICAgICAgdHlwZSA9IG1pbWVUeXBlUHJlZml4OworICAgICAgICBl
bHNlIGlmICghW3R5cGUgaXNFcXVhbFRvU3RyaW5nOm1pbWVUeXBlUHJlZml4XSkKKyAgICAgICAg
ICAgIHR5cGUgPSBjdXN0b21UeXBlOworCisgICAgICAgIC8vICJDdXN0b20gRmlsZXMiIGFsc28g
d2lsbCBiZSBzaG93biBpZiBtb3JlIHRoYW4gb25lIHN1Yi10eXBlIGlzIHNwZWNpZmllZCB1bmxl
c3MgIioiIGlzIHNwZWNpZmllZC4KKyAgICAgICAgaWYgKCFzdWJUeXBlIHx8IFttaW1lVHlwZVN1
ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCisgICAgICAgICAgICBzdWJUeXBlID0gbWltZVR5
cGVTdWZmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCIq
Il0gJiYgIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVN1ZmZpeF0pCisgICAgICAg
ICAgICBzdWJUeXBlID0gY3VzdG9tVHlwZTsKKworICAgICAgICAvLyBBZGQgIkltYWdlIEZpbGVz
IiB0aXRsZSBpZiBtaW1lVHlwZSBpcyBhbGxvd2VkIGRlc3RlbmF0aW9uIGltYWdlIGZvcm1hdC4K
KyAgICAgICAgaWYgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIGFsbFR5cGUgPSBpbWFn
ZVR5cGU7CisgICAgfQorCisgICAgLy8gQ3VzdG9tIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0i
YXVkaW8vKixpbWFnZS9wbmciIG9yIGFjY2VwdD0iYXBwbGljYXRpb24vcGRmIi4KKyAgICBpZiAo
W3R5cGUgaXNFcXVhbFRvU3RyaW5nOmN1c3RvbVR5cGVdKQorICAgICAgICByZXR1cm4gY29tcG9z
ZVRpdGxlcyhjdXN0b21UeXBlLCBAIiIsIEAiIik7CisKKyAgICAvLyAnVHlwZScgRmlsZXMsIEFs
bCBGaWxlczogYWNjZXB0PSJpbWFnZS8qIiBvciBhY2NlcHQ9ImF1ZGlvLyoiLgorICAgIGlmIChb
c3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0
bGVzKEAiIiwgQCIiLCB0eXBlKTsKIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggbGVuZ3RoXSA8
PSA0KQotICAgICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVA
IiwgW21pbWVUeXBlU3VmZml4IHVwcGVyY2FzZVN0cmluZ10sIG1pbWVUeXBlUHJlZml4XSwgQWxs
RmlsZXNUaXRsZV07CisgICAgLy8gQ3VzdG9tIEZpbGVzLCAnVHlwZScgRmlsZXMsIEFsbCBGaWxl
czogYWNjZXB0PSJpbWFnZS9qcGVnLGltYWdlL3BuZyIuCisgICAgaWYgKFtzdWJUeXBlIGlzRXF1
YWxUb1N0cmluZzpjdXN0b21UeXBlXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoY3Vz
dG9tVHlwZSwgQCIiLCBhbGxUeXBlKTsKIAotICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1lVHlwZVN1ZmZpeCwgbWltZVR5cGVQcmVmaXhdLCBBbGxG
aWxlc1RpdGxlXTsKKyAgICAvLyAnU3ViLXR5cGUgVHlwZScsICdUeXBlJyBGaWxlcywgQWxsIEZp
bGVzOiBhY2NlcHQ9ImltYWdlL3BuZyIuCisgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXModHlwZSwg
c3ViVHlwZSwgYWxsVHlwZSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0
ZS5oCmluZGV4IDI5ZWU4MTIwZTRhZjFiYWVhMjJjMDYyNGFjMmUyM2I0ZTFiZDRhZDYuLjdjMWZj
ZDFiMmE3MWVhNTVhZTZhNWM3NDk3NjQyZWI1MThjODg3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1l
dGVyc1ByaXZhdGUuaApAQCAtMzEsOCArMzEsOSBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZE1JTUVUeXBlcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkRmlsZUV4dGVuc2lv
bnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVu
c2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4
dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxv
d2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4g
Kl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZDEwZDk5MjQ5MWJkYmQ5ZDhhYTFiM2U4N2I4NDUwMDMy
NGM5OTQwLi42ZGQ3YjNjOThlNjk0YmMyNzVkYzI1MzE1NmU2NzdkM2MyNTQ0Y2NjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMjAtMDYtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmls
ZSBlbGVtZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRl
ZCB0byBhbnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGUgbnVtYmVyIG9mIHRoZSBm
aWxlIGV4dGVuc2lvbnMnIHRpdGxlcyBpcyB0aHJlZSwgc2VuZCBhbiBhcnJheSBvZiAKKyAgICAg
ICAgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB0byBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0LiBB
bHNvIHNldCB0aGUgaW5pdGlhbAorICAgICAgICBzZWxlY3Rpb24gb2YgdGhlIGZpbHRlciB0byB0
aGUgaXRlbSBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFj
L1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25z
UG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOmFsbElt
YWdlRmlsZUV4dGVuc2lvbnM6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJn
ZXQgcG9wdXBBY3Rpb246XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
IGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlh
dGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJh
bWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVF
eHRlbnNpb25zOl0pOiBEZWxldGVkLgorCiAyMDIwLTA2LTIxICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBha10gTmlnaHRseSBydW5uZXIg
ZmFpbHMgdG8gZXh0cmFjdCB6aXAgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggNTcwYWFhNTRkYjk3MGU0NzQyNDg5
NGY3YmQ4NzFhNzNmMmM3ZGQwZS4uZGJmOWQyYTYwNDQyY2NjMmQ2MmI4Nzg4NmViMGNhZTFmYzFh
NWZiYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KQEAgLTc3LDE1ICs3NywxNyBAQCBAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25z
UG9wdXBUYXJnZXQgOiBOU09iamVjdCB7CiBAcHJpdmF0ZQogICAgIE5TT3BlblBhbmVsICpfb3Bl
blBhbmVsOwogICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7
CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7CiB9CiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0gKGlk
KWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0
ZW5zaW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7Cist
IChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmls
ZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMg
YWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczogKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxJbWFnZUZp
bGVFeHRlbnNpb25zIHsKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAg
IF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7CiAgICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMg
PSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvcHldOworICAgICAgICBfYWxsSW1hZ2VGaWxlRXh0
ZW5zaW9ucyA9IFthbGxJbWFnZUZpbGVFeHRlbnNpb25zIGNvcHldOwogICAgIH0KICAgICByZXR1
cm4gc2VsZjsKIH0KQEAgLTEwMCw2ICsxMDIsMTIgQEAgLSAodm9pZClwb3B1cEFjdGlvbjooaWQp
c2VuZGVyIHsKICAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtA
IiJdXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZp
bGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBNaWRkbGUgaXRlbS4KKyAgICAgICAgaWYgKCFbX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY291
bnRdKQorICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1d
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5
cGVzOl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXTsKICAgICB9CiB9CiAKQEAgLTY0NCw3ICs2NTIs
NyBAQCAtIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0
bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaQogICAgIFtidXR0b24gc2V0VGFyZ2V0OnBvcHVw
VGFyZ2V0XTsKICAgICBbYnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rpb246KV07
CiAgICAgW2J1dHRvbiBzaXplVG9GaXRdOwotICAgIFtidXR0b24gc2VsZWN0SXRlbUF0SW5kZXg6
MF07CisgICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDpbdGl0bGVzIGNvdW50XSA8PSAyID8g
MCA6IDFdOwogICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwogICAgIAogICAg
IE5TVmlldyogZmlsdGVyVmlldyA9IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1pl
cm9SZWN0XSBhdXRvcmVsZWFzZV07CkBAIC02ODcsMTAgKzY5NSwxMyBAQCAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3Bl
blBhbmVsUGFyYQogCiAgICAgb3BlblBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gcGFy
YW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKIAorICAgIE5TQXJyYXkgKmFsbG93ZWRG
aWxlRXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1Rp
dGxlczsKKyAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBwYXJhbWV0ZXJzLl9h
bGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJheSAqYWxsSW1hZ2VGaWxlRXh0ZW5zaW9u
cyA9IFthbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgY291bnRdID09IDIgPyBAW10gOiBwYXJh
bWV0ZXJzLl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zOworICAgIAogICAgIFtfZmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9
IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9w
ZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc107CisgICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dl
ZEZpbGVFeHRlbnNpb25zOiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5z
aW9uczogYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmls
ZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRs
ZXM7CiAgICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxv
d2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBU
YXJnZXRdOwogICAgIGlmIChmaWx0ZXJWaWV3KQogICAgICAgICBbb3BlblBhbmVsIHNldEFjY2Vz
c29yeVZpZXc6ZmlsdGVyVmlld107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402452</attachid>
            <date>2020-06-22 01:31:32 -0700</date>
            <delta_ts>2020-06-22 02:03:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200622013131.patch</filename>
            <type>text/plain</type>
            <size>50788</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM4NDYxY2YwOTVmNDM0
NjE2NDVlMTA2NDNmMmRkYTIwMzE5MzcxMy4uZWFhOTA5MTUwNTljYjhiZTlhMDI4ZjU5OGE5ODY3
NjJkNjQ3NTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA2LTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XSBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBl
PSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0Nwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIHR5cGUgb2YgdGhlIHNlbGVjdGVkIGlt
YWdlIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQgdHlwZXMsIHRoZQorICAgICAgICBpbWFnZSB3
aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZmlyc3QgZGVzdGluYXRpb24gYWxsb3dlZCBpbWFnZSB0
eXBlIGFuZAorICAgICAgICBpdCB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZS4g
VGhpcyBmaWxlIGlzIGEgcmVwbGFjZW1lbnQgdG8gdGhlCisgICAgICAgIG9yaWdpbmFsIGltYWdl
LCBzbyB0aGUgdHlwZSwgdGhlIHNpemUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgcmVhZCBmcm9tIGl0
CisgICAgICAgIGluc3RlYWQgb2YgdGhlIHNlbGVjdGVkIGltYWdlLgorCisgICAgICAgICogZmls
ZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAq
IGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6dHlwZSBjb25zdCk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OmNvbnRlbnRUeXBlRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpkZXN0aW5h
dGlvblR5cGVGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6Om5hbWVGb3JGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmls
ZSk6IERlbGV0ZWQuCisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgor
ICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdCk6CisgICAgICAgICogaHRtbC9GaWxlTGlzdENy
ZWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
Q2hvb3Nlcjo6YWxsb3dlZFR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9v
c2VyOjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyQ2xpZW50OjpmaWxlc0Nob3Nlbik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNr
aW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKToKKworMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBG
aWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFs
bCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgQWRkIGxvY2Fs
aXphYmxlIHN0cmluZ3MgZm9yIHRoZSBPcGVuUGFuZWwgZmlsdGVyLgorCisgICAgICAgICogcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICBFeHBvcnQgYSBNSU1FVHlwZVJlZ2lz
dHJ5IEFQSSB0byBiZSByZWZlcmVuY2VkIGZyb20gV2ViS2l0IHByb2plY3QuCisKKwogMjAyMC0w
Ni0yMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBt
dWNoIG9mIHRoZSBTVkcgc3RyaW5nIHBhcnNpbmcgY29kZSB0byB1c2UgT3B0aW9uYWwgYmFzZWQg
cmV0dXJuIHZhbHVlcyByYXRoZXIgdGhhbiBvdXQtcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MDI0
YjEyNDYxYTVjNjJkMDMzNGJjZDlmMTBkNTVkNDg0MzIxZTgwLi5hN2Y1NjhjOTIxMGFkZGMyMzYx
MDI5MTY3MTYxMjgzMTdhNzkxYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA2
LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBh
bGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9m
IHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgb25lIG9mIHRoZSBtaW1lIHR5cGVzIGluIHRoZSAi
YWNjZXB0IiBhdHRyaWJ1dGUgaXMgYW4gYWxsb3dlZCBkZXN0ZW5hdGlvbgorICAgICAgICBpbWFn
ZSBmb3JtYXQsIGFkZCBhIG5ldyBpdGVtIGluIHRoZSBPcGVuUGFuZWwgZmlsdGVyIG5hbWVkICJJ
bWFnZSBGaWxlcyIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5tbToKKyAgICAgICAgKG1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXSk6CisgICAg
ICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVz
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQ
cml2YXRlLmg6CisKIDIwMjAtMDYtMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViS2l0IGZhaWxzIHRvIGxlYXZlIGF1ZGlvIHJvdXRpbmcgYXJiaXRyYXRp
b24gZHVyaW5nIG5hdmlnYXRpb24sIGNsb3NpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggNjBiMzJl
NDZmYzQyOTA4MjNhNjI5YmRhM2VkMjcyYTgzYjZhYjRhNi4uYmZlODQxMjk2ZDNjNmQ1MmE4YThh
ZjE1NWU2ZThlZThmOTEyMDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTQ1LDcgKzE0NSw3IEBA
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJl
IHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1
ZmZpeCA9IHsgfSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxlQWNjZXNzUGVybWlzc2lv
biA9IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IGZh
bHNlKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBhY2VkZjVmZGQxYjJlNzY4MjRmZmE4OWQ0ZGNk
ZjQwYWMxYjFiODdkLi5iYzUwMDQ5MmNhZDM3ZmExYTE3MDMwNTY4YTlhODllM2FjMmUwZmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysrIGIv
U291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC05Myw3ICs5Myw3IEBA
IFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJuIE5TSG9tZURpcmVjdG9yeSgp
OwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3Jt
RmlsZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CiAgICAgcGxhdGZvcm1GaWxlSGFu
ZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIApAQCAtMTEzLDkgKzExMywxMyBAQCBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYgcGxhdGZvcm1GaWxlSAogICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZpeC51
dGY4KCk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgpLCBw
cmVmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhYWFhY
WCIsIDYpOworCisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIGV4dGVuc2lvbi4KKyAgICBDU3RyaW5n
IHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVu
ZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAgICAgdGVtcG9yYXJ5
RmlsZVBhdGguYXBwZW5kKCdcMCcpOworICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXBz
KHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAKLSAgICBw
bGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CiAg
ICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCmluZGV4IDE2NDdkMjNmZmFhY2ZkMzhkNDUxMmIzZmY0NmI5MDA0ZGQ5
OTNmZTUuLmQzNjBhMDM4MDJkODJlZTljNDkxZDliNTQ1YWE2M2Y0ZDgyNzMxNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtNjEsNiArNjEsMTUg
QEAKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkg
aW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlwdG8gTWFzdGVyIEtleSIgPSAiJUAgV2ViQ3J5cHRv
IE1hc3RlciBLZXkiOwogCisvKiBBdWRpbyBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciAqLwor
IiVAIGF1ZGlvIiA9ICIlQCBhdWRpbyI7CisKKy8qIEltYWdlIGZvcm1hdCB0eXBlIGluIGZpbGUg
cGlja2VyICovCisiJUAgaW1hZ2UiID0gIiVAIGltYWdlIjsKKworLyogVmlkZW8gZm9ybWF0IHR5
cGUgaW4gZmlsZSBwaWNrZXIgKi8KKyIlQCB2aWRlbyIgPSAiJUAgdmlkZW8iOworCiAvKiBMYWJl
bCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxv
YWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyAqLwogIiVkIGZpbGVzIiA9ICIl
ZCBmaWxlcyI7CiAKQEAgLTExNSw2ICsxMjQsOSBAQAogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwog
IkFsaWduIFJpZ2h0IChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiQWxpZ24gUmlnaHQiOwogCisvKiBB
bGwgRmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisiQWxsIEZpbGVzIiA9ICJBbGwgRmlsZXMiOwor
CiAvKiBCdXR0b24gdGl0bGUgaW4gU3RvcmFnZSBBY2Nlc3MgQVBJIHByb21wdCAqLwogIkFsbG93
IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2VzcykiID0gIkFsbG93IjsK
IApAQCAtMTM2LDYgKzE0OCw5IEBACiAvKiBXS0Vycm9yQXR0cmlidXRlZFN0cmluZ0NvbnRlbnRG
YWlsZWRUb0xvYWQgZGVzY3JpcHRpb24gKi8KICJBdHRyaWJ1dGVkIHN0cmluZyBjb250ZW50IGZh
aWxlZCB0byBsb2FkIiA9ICJBdHRyaWJ1dGVkIHN0cmluZyBjb250ZW50IGZhaWxlZCB0byBsb2Fk
IjsKIAorLyogQXVkaW8gRmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisiQXVkaW8gRmlsZXMiID0g
IkF1ZGlvIEZpbGVzIjsKKwogLyogTWVudSBpdGVtIGxhYmVsIGZvciBhdXRvbWF0aWMgdHJhY2sg
c2VsZWN0aW9uIGJlaGF2aW9yICovCiAiQXV0byAoUmVjb21tZW5kZWQpIiA9ICJBdXRvIChSZWNv
bW1lbmRlZCkiOwogCkBAIC0yNjUsNiArMjgwLDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8K
ICJDcmVhdGUgTGluayAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkNyZWF0ZSBMaW5rIjsKIAorLyog
Q3VzdG9tIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkN1c3RvbSBGaWxlcyIgPSAiQ3VzdG9t
IEZpbGVzIjsKKwogLyogQ3V0IGNvbnRleHQgbWVudSBpdGVtICovCiAiQ3V0IiA9ICJDdXQiOwog
CkBAIC00MDksNiArNDI3LDkgQEAKIC8qIElnbm9yZSBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRl
bSAqLwogIklnbm9yZSBTcGVsbGluZyIgPSAiSWdub3JlIFNwZWxsaW5nIjsKIAorLyogSW1hZ2Ug
RmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisiSW1hZ2UgRmlsZXMiID0gIkltYWdlIEZpbGVzIjsK
KwogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIkluZGVudCAoVW5kbyBhY3Rpb24gbmFtZSkiID0g
IkluZGVudCI7CiAKQEAgLTk5MSw2ICsxMDEyLDkgQEAKIC8qIFZhbGlkYXRpb24gbWVzc2FnZSBm
b3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4
aW11bSAqLwogIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzIiA9ICJWYWx1
ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyI7CiAKKy8qIFZpZGVvIEZpbGVzIGlu
IGZpbGVyIHBpY2tlciAqLworIlZpZGVvIEZpbGVzIiA9ICJWaWRlbyBGaWxlcyI7CisKIC8qIFBo
aXNoaW5nIHdhcm5pbmcgZGVzY3JpcHRpb24gKi8KICJXYXJuaW5ncyBhcmUgc2hvd24gZm9yIHdl
YnNpdGVzIHRoYXQgaGF2ZSBiZWVuIHJlcG9ydGVkIGFzIGRlY2VwdGl2ZS4gRGVjZXB0aXZlIHdl
YnNpdGVzIHRyeSB0byB0cmljayB5b3UgaW50byBiZWxpZXZpbmcgdGhleSBhcmUgbGVnaXRpbWF0
ZSB3ZWJzaXRlcyB5b3UgdHJ1c3QuIiA9ICJXYXJuaW5ncyBhcmUgc2hvd24gZm9yIHdlYnNpdGVz
IHRoYXQgaGF2ZSBiZWVuIHJlcG9ydGVkIGFzIGRlY2VwdGl2ZS4gRGVjZXB0aXZlIHdlYnNpdGVz
IHRyeSB0byB0cmljayB5b3UgaW50byBiZWxpZXZpbmcgdGhleSBhcmUgbGVnaXRpbWF0ZSB3ZWJz
aXRlcyB5b3UgdHJ1c3QuIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMzJhM2I2OTg5
ZmFiNmVkNjQwNDFiOTBiOWRlYzQ5M2Y2NDAzMTE1Ni4uYjc3MjRlODFhZjgyOGEwMWUxNjg4YmFk
NjZlZTljZDA2YmNlMGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC03Miw5ICs3Miwx
MCBAQCBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQogCi1CbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBVUkwm
JiB1cmwsIFN0cmluZyYmIHR5cGUpCitCbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9y
LCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRlc3RpbmF0aW9uVHlwZSkKICAg
ICA6IG1faW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogICAgICwgbV90eXBlKFdURk1vdmUodHlw
ZSkpCisgICAgLCBtX2Rlc3RpbmF0aW9uVHlwZShXVEZNb3ZlKGRlc3RpbmF0aW9uVHlwZSkpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNjE0ZDgwOWQyMDg5M2Q1ZWZlMDBjODM5MmIz
YWUzNjUyYmRhMmFjNS4uYjIyNDc5NGU4MDliNDcxNmIyMWRlMmE0ZTc0N2ViZWIyODJhN2I1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkJsb2IoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cm5hbFVSTDsgfQotICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRp
b25UeXBlLmlzTnVsbCgpID8gbV90eXBlIDogbV9kZXN0aW5hdGlvblR5cGU7IH0KIAogICAgIFdF
QkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMTYsNyArMTE2LDcg
QEAgcHJvdGVjdGVkOgogICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3Rv
ciwgY29uc3QgQmxvYiYpOwogCiAgICAgZW51bSBVbmluaXRpYWxpemVkQ29udHJ1Y3RvciB7IHVu
aW5pdGlhbGl6ZWRDb250cnVjdG9yIH07Ci0gICAgQmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3Rv
ciwgVVJMJiYsIFN0cmluZyYmIHR5cGUpOworICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0
b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUpOwogCiAg
ICAgZW51bSBEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIHsgZGVzZXJpYWxpemF0aW9uQ29udHJ1
Y3RvciB9OwogICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBz
cmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBz
aXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKQEAgLTEzMSw2ICsxMzEsNyBAQCBw
cml2YXRlOgogICAgIFVSTCBtX2ludGVybmFsVVJMOwogCiAgICAgU3RyaW5nIG1fdHlwZTsKKyAg
ICBTdHJpbmcgbV9kZXN0aW5hdGlvblR5cGU7CiAKICAgICBtdXRhYmxlIE9wdGlvbmFsPHVuc2ln
bmVkIGxvbmcgbG9uZz4gbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IDhk
NmUzODczODU1MTNkZGQ0MWUwMzcyNDA5OGI0MzJlYWNlY2ViYzAuLmM1ZjVmMjE4NGIwMjFlYTUx
MDY5ZWFhYmI1NjYxMWU5ZjFjZTUwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNDYs
MjAgKzQ2LDIxIEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2CiAgICAgcmV0dXJuIGZpbGU7CiB9
CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBh
bGxvd2VkVHlwZXMpCiB7Ci0gICAgU3RyaW5nIG5hbWU7Ci0gICAgU3RyaW5nIHR5cGU7Ci0gICAg
Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUp
OworICAgIFN0cmluZyB0eXBlID0gY29udGVudFR5cGVGb3JGaWxlKHBhdGgsIG5hbWVPdmVycmlk
ZSk7CisgICAgU3RyaW5nIGRlc3RpbmF0aW9uVHlwZSA9IGRlc3RpbmF0aW9uVHlwZUZvckZpbGUo
cGF0aCwgdHlwZSwgYWxsb3dlZFR5cGVzKTsKKyAgICBTdHJpbmcgbmFtZSA9IG5hbWVGb3JGaWxl
KHBhdGgsIG5hbWVPdmVycmlkZSwgZGVzdGluYXRpb25UeXBlKTsKIAogICAgIGF1dG8gaW50ZXJu
YWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxVUkwsIHBhdGgsIHR5cGUpOwog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RG
TW92ZSh0eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVSTCwgcGF0aCwg
bmFtZSwgdHlwZSwgZGVzdGluYXRpb25UeXBlKTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFN0cmluZyB7IHBhdGggfSwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShkZXN0aW5hdGlvblR5cGUpKSk7CiB9CiAKLUZpbGU6
OkZpbGUoVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBu
YW1lKQotICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3RvciwgV1RGTW92ZSh1cmwpLCBX
VEZNb3ZlKHR5cGUpKQorRmlsZTo6RmlsZShVUkwmJiB1cmwsIFN0cmluZyYmIHBhdGgsIFN0cmlu
ZyYmIG5hbWUsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRlc3RpbmF0aW9uVHlwZSkKKyAgICA6
IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBl
KSwgV1RGTW92ZShkZXN0aW5hdGlvblR5cGUpKQogICAgICwgbV9wYXRoKFdURk1vdmUocGF0aCkp
CiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsKQEAgLTEyMywzMiArMTI0LDQ4IEBAIGlu
dDY0X3QgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKICAgICByZXR1cm4gV1RGOjp0aW1lQ2xp
cChyZXN1bHQpOwogfQogCi12b2lkIEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZl
Y3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQorU3RyaW5nIEZpbGU6OmNv
bnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92
ZXJyaWRlKQogewotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAgIGlmIChzaG91bGRS
ZXBsYWNlRmlsZShwYXRoKSkgewotICAgICAgICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9y
UmVwbGFjZWRGaWxlKHBhdGgsIG5hbWVPdmVycmlkZSwgZWZmZWN0aXZlTmFtZSwgZWZmZWN0aXZl
Q29udGVudFR5cGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgZWZmZWN0
aXZlTmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7Ci0gICAgc2l6ZV90IGluZGV4ID0gZWZmZWN0aXZl
TmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIFN0cmluZyBuYW1lID0gbmFtZU92ZXJyaWRlLmlz
RW1wdHkoKSA/IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSA6IG5hbWVPdmVycmlk
ZTsKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgc2l6ZV90IGluZGV4ID0gbmFtZS5yZXZlcnNl
RmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICBjYWxsT25N
YWluVGhyZWFkQW5kV2FpdChbJmVmZmVjdGl2ZUNvbnRlbnRUeXBlLCAmZWZmZWN0aXZlTmFtZSwg
aW5kZXhdIHsKLSAgICAgICAgICAgIGVmZmVjdGl2ZUNvbnRlbnRUeXBlID0gTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZWZmZWN0aXZlTmFtZS5zdWJzdHJpbmcoaW5k
ZXggKyAxKSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0
KFsmbWltZVR5cGUsICZuYW1lLCBpbmRleF0geworICAgICAgICAgICAgbWltZVR5cGUgPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihuYW1lLnN1YnN0cmluZyhpbmRl
eCArIDEpKS5pc29sYXRlZENvcHkoKTsKICAgICAgICAgfSk7CiAgICAgfQorICAgIHJldHVybiBt
aW1lVHlwZTsKIH0KIAotU3RyaW5nIEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCitTdHJpbmcgRmlsZTo6ZGVzdGluYXRpb25UeXBlRm9yRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxv
d2VkVHlwZXMpCiB7Ci0gICAgU3RyaW5nIG5hbWU7Ci0gICAgU3RyaW5nIHR5cGU7Ci0gICAgY29t
cHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBTdHJpbmcoKSwgbmFtZSwgdHlwZSk7Ci0KKyNp
ZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKKyAgICBpZiAoaXNGaWxlVHlwZVBhY2thZ2UocGF0
aCkpCisgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24vemlwIl9zOworCisgICAgaWYgKGFsbG93
ZWRUeXBlcy5jb250YWlucyh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgCisgICAg
Zm9yIChhdXRvJiBhbGxvd2VkVHlwZSA6IGFsbG93ZWRUeXBlcykgeworICAgICAgICBpZiAoYWxs
b3dlZFR5cGUgPT0gImltYWdlLyoiKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAg
IGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGlu
ZyhhbGxvd2VkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gYWxsb3dlZFR5cGU7CisgICAgfQor
I2VuZGlmCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKK1N0cmluZyBGaWxlOjpuYW1lRm9yRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVHlwZSkKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG5hbWVPdmVycmlkZS5p
c0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJp
ZGU7CisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgaWYgKGRlc3RpbmF0aW9uVHlw
ZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQorICAgICAgICBuYW1lID0gbWFrZVN0cmluZyhuYW1l
LCAiLnppcCJfcyk7CisjZW5kaWYKKyAgICByZXR1cm4gbmFtZTsKK30KKwogYm9vbCBGaWxlOjpp
c0RpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzRGlyZWN0b3J5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaAppbmRleCBkMmY5MzhiNDIwZDNhNjBmYjkzZjc0MGJjYjA0ZDc0MWY4M2VmZjc4Li4w
ZmFiM2E5ZmM2NzdmNDYyZjBjNzZiZDdlNmVlODM3M2E1YTg3MWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBh
IGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZp
bGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20g
dGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92
ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9LCBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcyA9IHsgfSk7CiAKICAgICAvLyBDcmVh
dGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNvbnN0cnVjdG9yLgogICAgIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50
cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFn
KQpAQCAtNzYsMjggKzc2LDI1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IGxhc3RNb2RpZmllZCgpIGNvbnN0OyAvLyBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIEVw
b2NoLgogICAgIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWRPdmVycmlkZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJyaWRlOyB9IC8vIE51bWJlciBv
ZiBtaWxsaXNlY29uZHMgc2luY2UgRXBvY2guCiAKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRU
eXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHN0YXRpYyBTdHJpbmcgY29udGVu
dFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJp
ZGUgPSB7IH0pOworICAgIHN0YXRpYyBTdHJpbmcgZGVzdGluYXRpb25UeXBlRm9yRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSA9IHsgfSwgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0pOworICAgIHN0YXRpYyBTdHJpbmcgbmFtZUZvckZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUgPSB7IH0pOwogCiAjaWYgRU5BQkxFKEZJTEVf
UkVQTEFDRU1FTlQpCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0ZpbGVUeXBlUGFja2FnZShjb25zdCBTdHJp
bmcmIHBhdGgpOwogI2VuZGlmCiAKICAgICBib29sIGlzRGlyZWN0b3J5KCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpOwotICAgIEZpbGUoVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmlu
ZyYmIG5hbWUpOworICAgIEZpbGUoVVJMJiYsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUs
IFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRlc3RpbmF0aW9uVHlwZSk7CiAgICAgRmlsZShWZWN0
b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7CiAgICAgRmlsZShjb25zdCBCbG9iJiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKICAgICBGaWxlKGNvbnN0IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUp
OwogCiAgICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CiAKLSAgICBzdGF0
aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBl
ZmZlY3RpdmVDb250ZW50VHlwZSk7Ci0jaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAg
c3RhdGljIHZvaWQgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVj
dGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUpOwotI2VuZGlmCi0KICAgICBT
dHJpbmcgbV9wYXRoOwogICAgIFN0cmluZyBtX3JlbGF0aXZlUGF0aDsKICAgICBTdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCA2NjRmOWE1MzYxM2RmMjZj
YTE3YzcwN2MyMWI1MGM2NDY0NTIwNGU2Li4xMDU0OThiZWNhZmE4MGIyNzE2NzRhMWMzMTQ0NzQw
MzE3MTVkMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQpAQCAtMzYsNyArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlOjppc0ZpbGVUeXBlUGFja2FnZShjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01NywxMyArNTcsNiBAQCBib29sIEZpbGU6OnNob3VsZFJlcGxhY2VGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gVVRUeXBlQ29uZm9ybXNUbygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpdXRpLCBrVVRUeXBlUGFja2FnZSk7CiB9CiAKLXZvaWQgRmlsZTo6Y29t
cHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmlu
ZyYgZWZmZWN0aXZlQ29udGVudFR5cGUpCi17Ci0gICAgQVNTRVJUKCFGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUocGF0aCkuZW5kc1dpdGgoJy8nKSk7IC8vIEV4cGVjdGluZyB0byBnZXQgYSBw
YXRoIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2gsIGV2ZW4gZm9yIGRpcmVjdG9yaWVzLgotICAgIGVm
ZmVjdGl2ZUNvbnRlbnRUeXBlID0gImFwcGxpY2F0aW9uL3ppcCJfczsKLSAgICBlZmZlY3RpdmVO
YW1lID0gbWFrZVN0cmluZygobmFtZU92ZXJyaWRlLmlzTnVsbCgpID8gRmlsZVN5c3RlbTo6cGF0
aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSwgIi56aXAiX3MpOwotfQotCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDVlMWQ0YzAwYTljMDY4
YzgwMzFjMjRjY2Q2MGFiMjBhNmFmYTA2MGIuLjEzYzg2Mjc5N2EyMzQ0YzFmZTc5NTIwNjYxNmI3
NDAyYzE1ZmZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTUgKzY0LDE1IEBAIHN0YXRpYyBUaHJlYWRTcGVjaWZp
YzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4gKm1hcDsKIH0KIAot
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkKIHsKICAgICBp
ZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxl
QmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50
VHlwZSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoLCBuYW1lLCBjb250ZW50VHlwZSwgZGVz
dGluYXRpb25UeXBlKSwgY29udGVudFR5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0
aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCBuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250
ZW50VHlwZS5pc29sYXRlZENvcHkoKSwgZGVzdGluYXRpb25UeXBlID0gZGVzdGluYXRpb25UeXBl
Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJs
b2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoLCBuYW1lLCBkZXN0
aW5hdGlvblR5cGUpLCBjb250ZW50VHlwZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYTljNzlmZTIyOTJm
ODk1YjMxYzYwZjc1NjdmZmQwNDkzZmVkYzgzMi4uMGUwZjZmM2JlOGEzOWZjODM5NmYxYjkzYmFh
ODNjOTM5MjcwMzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAK
IGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSk7
CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9i
UGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgc3JjVVJMKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBm
aWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBmM2M3MDk4Y2JmNWU0YjgyMGViNjgwZjdjYzQyNjU1
ZjBiOWUyZDZkLi45MGVhNmQwNTFkZDg3NDMyN2IyZjAwZDkxMjU2N2FiMjNhYjQ0OTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lk
IEZpbGVJbnB1dFR5cGU6OnNldEZpbGVzKFJlZlB0cjxGaWxlTGlzdD4mJiBmaWxlcywgUmVxdWVz
dEljb24gc2hvdWxkUmVxdWVzdAogICAgIHByb3RlY3RlZElucHV0RWxlbWVudC0+c2V0Q2hhbmdl
ZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwogfQogCi12b2lkIEZpbGVJ
bnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
cGF0aHMsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgSWNvbiogaWNvbikKK3ZvaWQgRmls
ZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
JiBwYXRocywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheVN0cmluZywgSWNvbiogaWNvbikKIHsKICAgICBpZiAoIWRpc3BsYXlTdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICBtX2Rpc3BsYXlTdHJpbmcgPSBkaXNwbGF5U3RyaW5nOwpAQCAt
NDEzLDggKzQxMyw4IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKICAgICAgICAgbV9kaXJlY3Rv
cnlGaWxlTGlzdENyZWF0b3ItPmNhbmNlbCgpOwogCiAgICAgaWYgKCFhbGxvd3NEaXJlY3Rvcmll
cygpKSB7Ci0gICAgICAgIGF1dG8gZmlsZXMgPSBwYXRocy5tYXAoW10oYXV0byYgZmlsZUluZm8p
IHsKLSAgICAgICAgICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZmlsZUluZm8ucGF0aCwgZmlsZUlu
Zm8uZGlzcGxheU5hbWUpOworICAgICAgICBhdXRvIGZpbGVzID0gcGF0aHMubWFwKFsmYWxsb3dl
ZFR5cGVzXShhdXRvJiBmaWxlSW5mbykgeworICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0
ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5kaXNwbGF5TmFtZSwgYWxsb3dlZFR5cGVzKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIGRpZENyZWF0ZUZpbGVMaXN0KEZpbGVMaXN0OjpjcmVhdGUoV1RG
TW92ZShmaWxlcykpLCBpY29uKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuaAppbmRleCAwOGY2MjFmZTVjM2Q2ZDMwMzg2N2FlOWYwNzE3ZWFkZDM1NmVjYmFh
Li5kMzQ5MzFmNjU5ZGI0NTY2ZjU5OTFiY2NiMjY1M2I2NWIzODk4ZmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgU3RyaW5n
IGRlZmF1bHRUb29sVGlwKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGZpbGVzQ2hvc2VuKGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0
cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSBmaW5hbDsKKyAgICB2b2lkIGZpbGVzQ2hvc2Vu
KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYWxsb3dlZFR5cGVzID0geyB9LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcgPSB7IH0s
IEljb24qID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAvLyBGaWxlSWNvbkxvYWRlckNsaWVudCBp
bXBsZW1lbnRhdGlvbi4KICAgICB2b2lkIGljb25Mb2FkZWQoUmVmUHRyPEljb24+JiYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmluZGV4IGFjN2Y1ZDQ3YmNm
NDUzOGZlZDgwYzYyYjk5YzI0NzM1MDQ3NDg4NWIuLjU0MTliOGFkODkwNjBiZGIzYWJkYTg4Mzdk
YjdiZjkwYWM1NzA1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVD
aG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAK
QEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlQ2hv
b3Nlci5oIgogCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEZpbGVDaG9vc2VyOjpGaWxlQ2hvb3NlcihGaWxlQ2hvb3NlckNsaWVudCogY2xp
ZW50LCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKQEAgLTQ0LDYgKzQ2LDE5
IEBAIFJlZjxGaWxlQ2hvb3Nlcj4gRmlsZUNob29zZXI6OmNyZWF0ZShGaWxlQ2hvb3NlckNsaWVu
dCogY2xpZW50LCBjb25zdCBGaWxlQ2hvb3NlCiAKIEZpbGVDaG9vc2VyOjp+RmlsZUNob29zZXIo
KSA9IGRlZmF1bHQ7CiAKK0hhc2hTZXQ8U3RyaW5nPiBGaWxlQ2hvb3Nlcjo6YWxsb3dlZFR5cGVz
KCkgY29uc3QKK3sKKyAgICBIYXNoU2V0PFN0cmluZz4gYWxsb3dlZFR5cGVzOworICAgIGZvciAo
YXV0byYgdHlwZSA6IG1fc2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzKQorICAgICAgICBhbGxvd2Vk
VHlwZXMuYWRkKHR5cGUpOworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogbV9zZXR0aW5ncy5h
Y2NlcHRGaWxlRXh0ZW5zaW9ucykgeworICAgICAgICBhdXRvIHR5cGUgPSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8g
ZXh0ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5ndGgoKSAtIDEpIDogZXh0ZW5zaW9uKTsKKyAg
ICAgICAgaWYgKCF0eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFsbG93ZWRUeXBlcy5hZGQo
dHlwZSk7CisgICAgfQorICAgIHJldHVybiBhbGxvd2VkVHlwZXM7Cit9CisKIHZvaWQgRmlsZUNo
b29zZXI6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CkBAIC03MCw3ICs4
NSw3IEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMpCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwogICAg
IGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCiAgICAgICAgIGZpbGVzLmFwcGVuZChG
aWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7Ci0gICAgbV9jbGllbnQtPmZpbGVzQ2hvc2Vu
KGZpbGVzKTsKKyAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMsIGFsbG93ZWRUeXBlcygp
KTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC04OSw3ICsxMDQsNyBAQCB2b2lk
IEZpbGVDaG9vc2VyOjpjaG9vc2VNZWRpYUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMsIGNvbnN0IFN0cmluZwogICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxl
czsKICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogZmlsZW5hbWVzKQogICAgICAgICBmaWxlcy5h
cHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZSkpOwotICAgIG1fY2xpZW50LT5maWxl
c0Nob3NlbihmaWxlcywgZGlzcGxheVN0cmluZywgaWNvbik7CisgICAgbV9jbGllbnQtPmZpbGVz
Q2hvc2VuKGZpbGVzLCB7IH0sIGRpc3BsYXlTdHJpbmcsIGljb24pOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCmluZGV4IGU1MWViOWU4NDM4Nzk1YTc2ZmVj
OWEzZGJmN2M2YTA4NGVhMDg4OTUuLjdkOTE5ZWI5Y2Q1NTY2YmEyN2M0NWJiNTQxYzhjMzU3YmQ1
YTMwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03Niw3
ICs3Nyw3IEBAIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5GaWxlQ2hvb3NlckNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBmaWxl
c0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlTdHJpbmcgPSB7IH0sIEljb24qID0gbnVsbHB0cikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mLCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcyA9IHsgfSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxwdHIpID0gMDsKIH07CiAKIGNsYXNzIEZpbGVD
aG9vc2VyIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZUNob29zZXI+IHsKQEAgLTEwMiw2ICsxMDMs
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50
KiwgY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYpOwogCisgICAgSGFzaFNldDxTdHJpbmc+IGFs
bG93ZWRUeXBlcygpIGNvbnN0OworCiAgICAgRmlsZUNob29zZXJDbGllbnQqIG1fY2xpZW50IHsg
bnVsbHB0ciB9OwogICAgIEZpbGVDaG9vc2VyU2V0dGluZ3MgbV9zZXR0aW5nczsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggOTk2ZWU3ODRlZGUy
YWRiMDFhMTU1MGUyZmU1MGQ1MDY0M2IzZmEzZi4uMTNlMjUxNmY5NjEyNjU2N2UxNTllYWU1ZjU1
YzIyNGIwOTBlZDg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNTdXBwb3J0ZWRJbWFnZVZpZGVvT3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJs
ZSBmb3IgYmVpbmcgZW5jb2RlZC4KLSAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlw
ZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEgSmF2YVNjcmlwdCBvciBKU09OIHJl
c291cmNlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSmF2YVNj
cmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmlu
ZGV4IDVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0ZDNiYzIyNTlhYWZmYTUyMjYuLmE3MjZlNzI1NTcx
MTU5NjQ4NWNkYWExNDk5NmIzOGFmMGRkZjQwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAgLTMy
LDE1ICszMiwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCkKK0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25UeXBlKQogICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX25hbWUobmFtZSkKKyAg
ICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9kZXN0aW5hdGlvblR5cGUoZGVzdGluYXRpb25UeXBl
KQogewogfQogCiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2Uo
KQogewogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAgIGlmICghbV9yZXBsYWNlbWVu
dFBhdGguaXNOdWxsKCkpCisgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSAmJiBt
X2Rlc3RpbmF0aW9uVHlwZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQogICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fcmVwbGFjZW1lbnRQYXRoKTsKICNlbmRpZgogfQpAQCAtNDgsNyAr
NTEsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UoKQog
Y29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQogewogI2lmIEVOQUJM
RShGSUxFX1JFUExBQ0VNRU5UKQotICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0
ZWQpCisgICAgaWYgKHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSkKICAgICAgICAgZ2Vu
ZXJhdGVSZXBsYWNlbWVudEZpbGUoKTsKIAogICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNO
dWxsKCkpCkBAIC02MSw3ICs2NCw3IEBAIGNvbnN0IFN0cmluZyYgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOjpwYXRoKCkKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNp
emUoKQogewogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAgIGlmIChtX3JlcGxhY2Vt
ZW50U2hvdWxkQmVHZW5lcmF0ZWQpCisgICAgaWYgKHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0
ZWQoKSkKICAgICAgICAgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKTsKICNlbmRpZgogCkBAIC03
Myw3ICs3Niw3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAg
ICAgLy8gV2UgZG8gbm90IGN1cnJlbnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0
ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRl
bHksIHRoaXMgaXMgaW5jb25zaXN0ZW50IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmls
ZSBvYmplY3RzIHNob3VsZCBiZSBpbnZhbGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hh
bmdlLgotICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFj
ZW1lbnRQYXRoLmlzTnVsbCgpKQorICAgIGlmICghbV9kZXN0aW5hdGlvblR5cGUuaXNOdWxsKCkg
fHwgIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogI2VuZGlmCiAgICAgcmV0dXJuIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwpAQCAt
ODYsNyArODksOCBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01v
ZGlmaWNhdGlvbnMoKQogICAgIC8vIHRoZSBjb3N0IG9mIHRyYWNraW5nIGZpbGUgbW9kaWZpY2F0
aW9ucy4KIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAgIG1fcmVwbGFjZW1lbnRT
aG91bGRCZUdlbmVyYXRlZCA9IEZpbGU6OnNob3VsZFJlcGxhY2VGaWxlKG1fcGF0aCk7CisgICAg
aWYgKEZpbGU6OmlzRmlsZVR5cGVQYWNrYWdlKG1fcGF0aCkpCisgICAgICAgIG1fZGVzdGluYXRp
b25UeXBlID0gImFwcGxpY2F0aW9uL3ppcCJfczsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFNv
bWUgcGxhdGZvcm1zIHByb3ZpZGUgYmV0dGVyIHdheXMgdG8gbGlzdGVuIGZvciBmaWxlIHN5c3Rl
bSBvYmplY3QgY2hhbmdlcywgY29uc2lkZXIgdXNpbmcgdGhlc2UuCkBAIC05Nyw3ICsxMDEsNyBA
QCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMo
KQogICAgIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lID0gbWV0YWRhdGEudmFsdWUoKS5tb2Rp
ZmljYXRpb25UaW1lOwogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1f
cmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRC
ZUdlbmVyYXRlZCgpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5k
ZXggNjU4ODI5ZDA3ZmNmYmQ2YjAyYTIwZTFjYjAxZmRjOWQ2ZGNjMDdjOS4uYmRkMWVmODI5NTJl
ZjQxNDExNzZkM2M2OWI4MTdhMTMyMmMzMTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VfaAotI2RlZmluZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2Vf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtMzUsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0
YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWUgPSB7IH0sIGNvbnN0IFN0cmluZyYgdHlwZSA9IHsgfSwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCwgbmFtZSwgdHlwZSwg
ZGVzdGluYXRpb25UeXBlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKCk7CkBAIC01MiwyMiArNTEsMjMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZXZva2VGaWxlQWNjZXNzKCk7CiAKIHByb3RlY3RlZDoKLSAgICBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUgPSB7IH0sIGNvbnN0IFN0cmluZyYgdHlw
ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUgPSB7IH0pOwogCiBwcml2YXRl
OgogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQorICAgIGJvb2wgcmVwbGFjZW1lbnRTaG91
bGRCZUdlbmVyYXRlZCgpIGNvbnN0OwogICAgIHZvaWQgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUo
KTsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1fcGF0aDsKKyAgICBTdHJpbmcgbV9uYW1lOworICAg
IFN0cmluZyBtX3R5cGU7CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25UeXBlOwogI2lmIEVOQUJM
RShGSUxFX1JFUExBQ0VNRU5UKQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKLSAgICBi
b29sIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbV9zaXplIHsgMCB9OwogICAgIE1hcmthYmxlPFdhbGxUaW1l
LCBXYWxsVGltZTo6TWFya2FibGVUcmFpdHM+IG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwog
fTsKIAogfQotCi0jZW5kaWYgLy8gQmxvYkRhdGFGaWxlUmVmZXJlbmNlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZU1hYy5tbQppbmRleCA1ZWM3NzdhODY5OTA2NzExOGNiY2Q1NTI4ZThmNGZmZTky
YTQ0ODZiLi45ZDRmYWI0YzhmMWJkYzIxNWM5MjA5OGY3ZDE4MzE0NmU5MTg3NWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCkBAIC0yOCwyNSArMjgsNjYgQEAKIAogI2lmIEVOQUJM
RShGSUxFX1JFUExBQ0VNRU5UKQogCisjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1w
b3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgPHd0Zi9GaWxlTWV0YWRhdGEuaD4KICNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnJlcGxhY2Vt
ZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgIT0gbV9k
ZXN0aW5hdGlvblR5cGUgJiYgbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCk7Cit9CisKIHZvaWQg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpCiB7Ci0gICAg
QVNTRVJUKG1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKTsKLSAgICBBU1NFUlQobV9yZXBsYWNl
bWVudFNob3VsZEJlR2VuZXJhdGVkKTsKKyAgICBBU1NFUlQocmVwbGFjZW1lbnRTaG91bGRCZUdl
bmVyYXRlZCgpKTsKIAogICAgIHByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAKLSAgICBhdXRvIGdl
bmVyYXRlZEZpbGUgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKG1fcGF0
aCk7Ci0gICAgaWYgKCFnZW5lcmF0ZWRGaWxlLmlzTnVsbCgpKQotICAgICAgICBtX3JlcGxhY2Vt
ZW50UGF0aCA9IFdURk1vdmUoZ2VuZXJhdGVkRmlsZSk7CisgICAgU3RyaW5nIGdlbmVyYXRlZEZp
bGU7CisgICAgaWYgKG1fZGVzdGluYXRpb25UeXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3MpCisg
ICAgICAgIGdlbmVyYXRlZEZpbGUgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlaaXBBcmNo
aXZlKG1fcGF0aCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gbV9kZXN0
aW5hdGlvblR5cGUpOworICAgICAgICBBU1NFUlQobV9kZXN0aW5hdGlvblR5cGUuc3RhcnRzV2l0
aCgiaW1hZ2UvIl9zKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSBzb3VyY2UuCisg
ICAgICAgIGF1dG8gc291cmNlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgICAgIGF1dG8gc291cmNlID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChzb3VyY2VVUkwuZ2V0KCksIE5VTEwpKTsK
KworICAgICAgICAvLyBDb21wdXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIHByZWZpeCBhbmQg
ZmlsZSBleHRlbnNpb24uCisgICAgICAgIGF1dG8gY29tcG9uZW50cyA9IG1fbmFtZS5zcGxpdCgn
LicpOworICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRl
bnNpb25zRm9yTUlNRVR5cGUobV9kZXN0aW5hdGlvblR5cGUpOworICAgICAgICBhdXRvIHByZWZp
eCA9IG1ha2VTdHJpbmcoY29tcG9uZW50cy5maXJzdCgpLCAiXyJfcyk7CisgICAgICAgIGF1dG8g
c3VmZml4ID0gbWFrZVN0cmluZygiLiJfcywgZXh0ZW5zaW9ucy5maXJzdCgpKTsKKworICAgICAg
ICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIHBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICAgICAgZ2VuZXJhdGVkRmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKHByZWZpeCwgcGxhdGZvcm1GaWxlSGFuZGxl
LCBzdWZmaXgpOwogCi0gICAgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7
Ci0gICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkgeworICAgICAgICAvLyBDcmVh
dGUgdGhlIGRhdGEgY29uc3VtZXIuCisgICAgICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNh
bGxiYWNrcyA9IHsgW10odm9pZCAqaW5mbywgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3QgY291
bnQpIC0+IHNpemVfdCB7CisgICAgICAgICAgICBhdXRvIHBsYXRmb3JtRmlsZUhhbmRsZSA9ICpz
dGF0aWNfY2FzdDxGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUqPihpbmZvKTsKKyAgICAg
ICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShwbGF0Zm9ybUZpbGVIYW5kbGUs
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBjb3VudCk7CisgICAgICAgIH0sIE5V
TEwgfTsKKworICAgICAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNy
ZWF0ZSgmcGxhdGZvcm1GaWxlSGFuZGxlLCAmY2FsbGJhY2tzKSk7CisKKyAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBpbWFnZSBkZXN0aW5hdGlvbi4KKyAgICAgICAgYXV0byB1dGkgPSBVVElGcm9tTUlN
RVR5cGUobV9kZXN0aW5hdGlvblR5cGUpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uID0gYWRv
cHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YUNvbnN1bWVyKGNvbnN1bWVyLmdl
dCgpLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMSwgTlVMTCkpOworCisgICAgICAgIC8v
IFdyaXRlIHRoZSBpbWFnZSBzb3VyY2UgdG8gdGhlIGltYWdlIGRlc3RpbmF0aW9uLgorICAgICAg
ICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3VyY2UoZGVzdGluYXRpb24uZ2V0KCks
IHNvdXJjZS5nZXQoKSwgMCwgbnVsbHB0cik7CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZp
bmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KHBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgfQorCisgICAgaWYgKCFnZW5lcmF0ZWRGaWxlLmlz
TnVsbCgpKSB7CisgICAgICAgIG1fcmVwbGFjZW1lbnRQYXRoID0gV1RGTW92ZShnZW5lcmF0ZWRG
aWxlKTsKICAgICAgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRh
dGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0aCkpCiAgICAgICAgICAgICBtX3Np
emUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpp
bmRleCBkOTAwZjllOGQ2NzU0MWNiOGMyOWVkNDI4YTFlOWIwMDhiMTQ4ODIzLi44NmEyNDU4OGE3
MWQzMGM1NjE1YjMzNmVmZGIwZDY2N2I3YjY5N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KQEAg
LTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS09wZW5QYW5l
bFBhcmFtZXRlcnNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvQ29yZVNlcnZpY2VzU1BJLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02Miwx
MSArNjQsMTMgQEAgc3RhdGljIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1NldDxOU1N0cmlu
ZyAqPiAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkKICAgICAgICAgICAgIGlmICghbWlt
ZVR5cGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhdXRvIGV4dGVu
c2lvbnMgPSBhZG9wdENGKFVUVHlwZUNvcHlBbGxUYWdzV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xh
c3NGaWxlbmFtZUV4dGVuc2lvbikpOworICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zIHx8ICFD
RkFycmF5R2V0Q291bnQoZXh0ZW5zaW9ucy5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKF9fYnJpZGdlIE5TU3Ry
aW5nICopbWltZVR5cGUuZ2V0KCksIChfX2JyaWRnZSBOU0FycmF5PE5TU3RyaW5nICo+ICopZXh0
ZW5zaW9ucy5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBZGQgYWRkaXRpb25hbCBt
aW1lIHR5cGVzIHdoaWNoIF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpIG1heSBub3Qg
cmV0dXJuLgotICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShAImltYWdlL3dlYnAiLCBA
IndlYnAiKTsKKyAgICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKEAiaW1hZ2Uvd2VicCIs
IEBbQCJ3ZWJwIl0pOwogCiAgICAgICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7
CiAgICAgfSgpKTsKQEAgLTc5LDYgKzgzLDE4IEBAIHN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAq
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3RyaW5nICptaW1ldHlwZSkKICAgICByZXR1cm4gW2V4
dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpIG9iamVjdEZvcktleTptaW1ldHlwZV07CiB9CiAKK3N0
YXRpYyBOU1N0cmluZyAqbWltZVR5cGVGb3JFeHRlbnNpb24oTlNTdHJpbmcgKmV4dGVuc2lvbikK
K3sKKyAgICBOU1NldDxOU1N0cmluZyAqPiAqbWltZVR5cGVzID0gW2V4dGVuc2lvbnNGb3JNSU1F
VHlwZU1hcCgpIGtleXNPZkVudHJpZXNQYXNzaW5nVGVzdDpeQk9PTChOU1N0cmluZyAqbWltZVR5
cGUsIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zLCBCT09MICopIHsKKyAgICAgICAgaWYg
KFttaW1lVHlwZSBoYXNTdWZmaXg6QCIqIl0pCisgICAgICAgICAgICByZXR1cm4gTk87CisgICAg
ICAgIGlmIChbZXh0ZW5zaW9uIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJy4nKQorICAgICAgICAg
ICAgcmV0dXJuIFtleHRlbnNpb25zIGNvbnRhaW5zT2JqZWN0OltleHRlbnNpb24gc3Vic3RyaW5n
RnJvbUluZGV4OjFdXTsKKyAgICAgICAgcmV0dXJuIFtleHRlbnNpb25zIGNvbnRhaW5zT2JqZWN0
OmV4dGVuc2lvbl07CisgICAgfV07CisgICAgcmV0dXJuIFttaW1lVHlwZXMgYW55T2JqZWN0XTsK
K30KKwogQGltcGxlbWVudGF0aW9uIFdLT3BlblBhbmVsUGFyYW1ldGVycwogCiAtIChCT09MKWFs
bG93c011bHRpcGxlU2VsZWN0aW9uCkBAIC0xMzYsMzYgKzE1MiwxMTggQEAgc3RhdGljIE5TU2V0
PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQog
ICAgIHJldHVybiBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbE9iamVjdHNdOwogfQogCi0tIChO
U0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcworLSAoTlNB
cnJheTxOU1N0cmluZyAqPiAqKV9hbGxJbWFnZUZpbGVFeHRlbnNpb25zCiB7Ci0gICAgYXV0byBh
Y2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAgYXV0byBh
Y2NlcHRlZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdOwor
ICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKEAiaW1hZ2UvKiIpIGFsbE9iamVjdHNd
OworfQogCi0gICAgY29uc3RleHByIGF1dG8gQWxsRmlsZXNUaXRsZSA9IEAiQWxsIEZpbGVzIjsK
LSAgICBjb25zdGV4cHIgYXV0byBDdXN0b21GaWxlc1RpdGxlID0gQCJDdXN0b20gRmlsZXMiOwor
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMKK3sK
KyAgICBOU1N0cmluZyAqYWxsRmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkFsbCBGaWxlcyIs
ICJBbGwgRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmFsbEltYWdlRmls
ZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkltYWdlIEZpbGVzIiwgIkltYWdlIEZpbGVzIGluIGZp
bGVyIHBpY2tlciIpOworICAgIE5TU3RyaW5nICphbGxWaWRlb0ZpbGVzVGl0bGUgPSBXRUJfVUlf
U1RSSU5HKCJWaWRlbyBGaWxlcyIsICJWaWRlbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAg
ICBOU1N0cmluZyAqYWxsQXVkaW9GaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiQXVkaW8gRmls
ZXMiLCAiQXVkaW8gRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmN1c3Rv
bUZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJDdXN0b20gRmlsZXMiLCAiQ3VzdG9tIEZpbGVz
IGluIGZpbGVyIHBpY2tlciIpOworICAgIE5TU3RyaW5nICppbWFnZVRpdGxlID0gV0VCX1VJX1NU
UklORygiJUAgaW1hZ2UiLCAiSW1hZ2UgZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAg
ICBOU1N0cmluZyAqdmlkZW9UaXRsZSA9IFdFQl9VSV9TVFJJTkcoIiVAIHZpZGVvIiwgIlZpZGVv
IGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmF1ZGlvVGl0bGUg
PSBXRUJfVUlfU1RSSU5HKCIlQCBhdWRpbyIsICJBdWRpbyBmb3JtYXQgdHlwZSBpbiBmaWxlIHBp
Y2tlciIpOworICAgIAorICAgIGNvbnN0ZXhwciBhdXRvIGltYWdlVHlwZSA9IEAiaW1hZ2UiOwor
ICAgIGNvbnN0ZXhwciBhdXRvIHZpZGVvVHlwZSA9IEAidmlkZW8iOworICAgIGNvbnN0ZXhwciBh
dXRvIGF1ZGlvVHlwZSA9IEAiYXVkaW8iOworICAgIGNvbnN0ZXhwciBhdXRvIGN1c3RvbVR5cGUg
PSBAImN1c3RvbSI7CiAgICAgCi0gICAgaWYgKCFbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdICYm
ICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0gICAgICAgIHJldHVybiBAW0FsbEZp
bGVzVGl0bGVdOworICAgIGF1dG8gY29tcG9zZVRpdGxlcyA9IF4oTlNTdHJpbmcgKnR5cGUsIE5T
U3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkgeworICAgICAgICBOU011dGFibGVB
cnJheSogdGl0bGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAgICAgICAvLyBpZiB7
IHR5cGUgc3ViVHlwZSB9ID09ICJpbWFnZS9wbmciIHRoZW4gYWRkICJQTkcgSW1hZ2UiCisgICAg
ICAgIGlmIChbc3ViVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqdHlwZVRp
dGxlID0gW3R5cGUgaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlwZV0gPyBpbWFnZVRpdGxlIDogKFt0
eXBlIGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVdID8gdmlkZW9UaXRsZSA6IGF1ZGlvVGl0bGUp
OworICAgICAgICAgICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0gPD0gNCkKKyAgICAgICAgICAgICAg
ICBbdGl0bGVzIGFkZE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDp0eXBlVGl0bGUs
IFtzdWJUeXBlIHVwcGVyY2FzZVN0cmluZ11dXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDp0eXBl
VGl0bGUsIHN1YlR5cGVdXTsKKyAgICAgICAgfSBlbHNlIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6Y3VzdG9tVHlwZV0pIHsKKyAgICAgICAgICAgIC8vIGlmIHsgdHlwZSBzdWJUeXBlIH0gPT0g
IkN1c3RvbSBGaWxlcyIgdGhlbiBhZGQgIkN1c3RvbSBGaWxlcyIKKyAgICAgICAgICAgIFt0aXRs
ZXMgYWRkT2JqZWN0OmN1c3RvbUZpbGVzVGl0bGVdOworICAgICAgICB9CiAKLSAgICBpZiAoIShb
YWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdID09IDEgJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25z
IGNvdW50XSkpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0
bGVdOworICAgICAgICAvLyBpZiBhbGxUeXBlID09ICJpbWFnZSIgdGhlbiBhZGQgIkltYWdlIEZp
bGVzIgorICAgICAgICBpZiAoW2FsbFR5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgTlNTdHJp
bmcgKmFsbFR5cGVUaXRsZSA9IFthbGxUeXBlIGlzRXF1YWxUb1N0cmluZzppbWFnZVR5cGVdID8g
YWxsSW1hZ2VGaWxlc1RpdGxlIDogKFthbGxUeXBlIGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVd
ID8gYWxsVmlkZW9GaWxlc1RpdGxlIDogYWxsQXVkaW9GaWxlc1RpdGxlKTsKKyAgICAgICAgICAg
IFt0aXRsZXMgYWRkT2JqZWN0OmFsbFR5cGVUaXRsZV07CisgICAgICAgIH0KIAotICAgIGF1dG8g
bWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmplY3RdOwotICAgIGF1dG8gcmFu
Z2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAgICAKLSAgICBpZiAoIXJhbmdl
Lmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRs
ZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdU
b0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVU
eXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOwotICAgIAotICAgIGlm
IChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQotICAgICAgICByZXR1cm4g
QFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW21pbWVUeXBlUHJl
Zml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21pbWVUeXBlUHJlZml4
IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVdOworICAgICAgICAvLyBJbiBh
bGwgY2FzZXMgYWRkICJBbGwgRmlsZXMiCisgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OmFsbEZp
bGVzVGl0bGVdOworICAgICAgICByZXR1cm4gdGl0bGVzOworICAgIH07CisKKyAgICAvLyBObyBh
Y2NlcHQgYXR0cmlidXRlOiA8aW5wdXQgdHlwZT0iZmlsZSI+CisgICAgaWYgKCFbW3NlbGYgX2Fj
Y2VwdGVkTUlNRVR5cGVzXSBjb3VudF0gJiYgIVtbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
c10gY291bnRdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgQCIiKTsK
KworICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFs
bG9jXSBpbml0V2l0aEFycmF5OltzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc11dKTsKKworICAgIGZv
ciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBpbiBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc10p
IHsKKyAgICAgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihbZXh0ZW5zaW9u
IHN1YnN0cmluZ0Zyb21JbmRleDoxXSk7CisKKyAgICAgICAgLy8gVW5rbm93biBmaWxlIGV4dGVu
c2lvbjogPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iLnh5eiI+CisgICAgICAgIGlmICghbWlt
ZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0b21UeXBlLCBAIiIs
IEAiIik7CisKKyAgICAgICAgW2FjY2VwdGVkTUlNRVR5cGVzIGFkZE9iamVjdDptaW1lVHlwZV07
CisgICAgfQorCisgICAgTlNTdHJpbmcgKnR5cGUgPSBuaWw7CisgICAgTlNTdHJpbmcgKnN1YlR5
cGUgPSBuaWw7CisgICAgTlNTdHJpbmcgKmFsbFR5cGUgPSBuaWw7CisKKyAgICBmb3IgKE5TU3Ry
aW5nICptaW1lVHlwZSBpbiBhY2NlcHRlZE1JTUVUeXBlcy5nZXQoKSkgeworICAgICAgICBOU1Jh
bmdlIHJhbmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07CisgICAgICAgIGlmICgh
cmFuZ2UubGVuZ3RoKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBtaW1l
VHlwZVByZWZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsK
KyAgICAgICAgYXV0byBtaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9tSW5k
ZXg6cmFuZ2UubG9jYXRpb24gKyAxXTsKKworICAgICAgICAvLyBPbmx5IGltYWdlLCB2aWRlbyBh
bmQgYXVkaW8gbWltZSB0eXBlcyB3aWxsIGhhdmUgZGVzY3JpcHRpdmUgdGl0bGVzLiBPdGhlciB0
eXBlcyB3aWxsIGJlIHNob3duCisgICAgICAgIC8vIGFzICJDdXN0b20gRmlsZXMiLiAiQ3VzdG9t
IEZpbGVzIiB3aWxsIGJlIHNob3duIGFsc28gaWYgbW9yZSB0aGFuIGEgbWltZSB0eXBlIGlzIHNw
ZWNpZmllZC4KKyAgICAgICAgaWYgKCFbbWltZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOmlt
YWdlVHlwZV0gJiYgIVttaW1lVHlwZVByZWZpeCBpc0VxdWFsVG9TdHJpbmc6dmlkZW9UeXBlXSAm
JiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzphdWRpb1R5cGVdKQorICAgICAgICAg
ICAgdHlwZSA9IGN1c3RvbVR5cGU7CisgICAgICAgIGVsc2UgaWYgKCF0eXBlKQorICAgICAgICAg
ICAgdHlwZSA9IG1pbWVUeXBlUHJlZml4OworICAgICAgICBlbHNlIGlmICghW3R5cGUgaXNFcXVh
bFRvU3RyaW5nOm1pbWVUeXBlUHJlZml4XSkKKyAgICAgICAgICAgIHR5cGUgPSBjdXN0b21UeXBl
OworCisgICAgICAgIC8vICJDdXN0b20gRmlsZXMiIGFsc28gd2lsbCBiZSBzaG93biBpZiBtb3Jl
IHRoYW4gb25lIHN1Yi10eXBlIGlzIHNwZWNpZmllZCB1bmxlc3MgIioiIGlzIHNwZWNpZmllZC4K
KyAgICAgICAgaWYgKCFzdWJUeXBlIHx8IFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6
QCIqIl0pCisgICAgICAgICAgICBzdWJUeXBlID0gbWltZVR5cGVTdWZmaXg7CisgICAgICAgIGVs
c2UgaWYgKCFbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCIqIl0gJiYgIVtzdWJUeXBlIGlzRXF1
YWxUb1N0cmluZzptaW1lVHlwZVN1ZmZpeF0pCisgICAgICAgICAgICBzdWJUeXBlID0gY3VzdG9t
VHlwZTsKKworICAgICAgICAvLyBBZGQgIkltYWdlIEZpbGVzIiB0aXRsZSBpZiBtaW1lVHlwZSBp
cyBhbGxvd2VkIGRlc3RlbmF0aW9uIGltYWdlIGZvcm1hdC4KKyAgICAgICAgaWYgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1p
bWVUeXBlKSkKKyAgICAgICAgICAgIGFsbFR5cGUgPSBpbWFnZVR5cGU7CisgICAgfQorCisgICAg
Ly8gQ3VzdG9tIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iYXVkaW8vKixpbWFnZS9wbmciIG9y
IGFjY2VwdD0iYXBwbGljYXRpb24vcGRmIi4KKyAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5n
OmN1c3RvbVR5cGVdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0b21UeXBlLCBA
IiIsIEAiIik7CisKKyAgICAvLyAnVHlwZScgRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJpbWFn
ZS8qIiBvciBhY2NlcHQ9ImF1ZGlvLyoiLgorICAgIGlmIChbc3ViVHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCIqIl0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCB0eXBlKTsK
IAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggbGVuZ3RoXSA8PSA0KQotICAgICAgICByZXR1cm4g
QFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW21pbWVUeXBlU3VmZml4IHVw
cGVyY2FzZVN0cmluZ10sIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07CisgICAgLy8g
Q3VzdG9tIEZpbGVzLCAnVHlwZScgRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJpbWFnZS9qcGVn
LGltYWdlL3BuZyIuCisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpjdXN0b21UeXBl
XSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoY3VzdG9tVHlwZSwgQCIiLCBhbGxUeXBl
KTsKIAotICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBt
aW1lVHlwZVN1ZmZpeCwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAvLyAn
U3ViLXR5cGUgVHlwZScsICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdlL3Bu
ZyIuCisgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXModHlwZSwgc3ViVHlwZSwgYWxsVHlwZSk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCmluZGV4IDI5ZWU4MTIwZTRh
ZjFiYWVhMjJjMDYyNGFjMmUyM2I0ZTFiZDRhZDYuLjdjMWZjZDFiMmE3MWVhNTVhZTZhNWM3NDk3
NjQyZWI1MThjODg3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaApAQCAtMzEs
OCArMzEsOSBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZE1JTUVUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxJbWFnZUZpbGVFeHRlbnNp
b25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVF
eHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOwogCiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA5ZDEwZDk5MjQ5MWJkYmQ5ZDhhYTFiM2U4N2I4NDUwMDMyNGM5OTQwLi42ZGQ3YjNjOThlNjk0
YmMyNzVkYzI1MzE1NmU2NzdkM2MyNTQ0Y2NjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDYtMjEgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1Nd
OiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVj
dGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2Nl
cHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJZiB0aGUgbnVtYmVyIG9mIHRoZSBmaWxlIGV4dGVuc2lvbnMnIHRpdGxl
cyBpcyB0aHJlZSwgc2VuZCBhbiBhcnJheSBvZiAKKyAgICAgICAgYWxsSW1hZ2VGaWxlRXh0ZW5z
aW9ucyB0byBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0LiBBbHNvIHNldCB0aGUgaW5pdGlhbAor
ICAgICAgICBzZWxlY3Rpb24gb2YgdGhlIGZpbHRlciB0byB0aGUgaXRlbSBuYW1lZCAiSW1hZ2Ug
RmlsZXMiLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm06CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgaW5pdFdpdGhP
cGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOmFsbEltYWdlRmlsZUV4dGVuc2lvbnM6XSk6
CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246XSk6Cisg
ICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9w
dXBUYXJnZXQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZp
ZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9u
SGFuZGxlcjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJh
bWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBU
YXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOl0pOiBEZWxldGVk
LgorCiAyMDIwLTA2LTIxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbRmxhdHBha10gTmlnaHRseSBydW5uZXIgZmFpbHMgdG8gZXh0cmFjdCB6aXAg
ZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KaW5kZXggNTcwYWFhNTRkYjk3MGU0NzQyNDg5NGY3YmQ4NzFhNzNmMmM3ZGQwZS4u
ZGJmOWQyYTYwNDQyY2NjMmQ2MmI4Nzg4NmViMGNhZTFmYzFhNWZiYyAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTc3LDE1
ICs3NywxNyBAQCBAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVj
dCB7CiBAcHJpdmF0ZQogICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOwogICAgIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7CiB9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihO
U09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7CistIChpZClpbml0V2l0aE9wZW5QYW5l
bDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9u
czogKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHsKICAgICBp
ZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFu
ZWw7CiAgICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNp
b25zIGNvcHldOworICAgICAgICBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxJbWFnZUZp
bGVFeHRlbnNpb25zIGNvcHldOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEwMCw2
ICsxMDIsMTIgQEAgLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKICAgICAgICAgICAg
IFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVF
eHRlbnNpb25zXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBNaWRkbGUgaXRlbS4KKyAgICAg
ICAgaWYgKCFbX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAgICAgW19v
cGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxJbWFnZUZpbGVFeHRl
bnNpb25zXTsKICAgICB9CiB9CiAKQEAgLTY0NCw3ICs2NTIsNyBAQCAtIChudWxsYWJsZSBOU1Zp
ZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxl
RXh0ZW5zaQogICAgIFtidXR0b24gc2V0VGFyZ2V0OnBvcHVwVGFyZ2V0XTsKICAgICBbYnV0dG9u
IHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rpb246KV07CiAgICAgW2J1dHRvbiBzaXplVG9G
aXRdOwotICAgIFtidXR0b24gc2VsZWN0SXRlbUF0SW5kZXg6MF07CisgICAgW2J1dHRvbiBzZWxl
Y3RJdGVtQXRJbmRleDpbdGl0bGVzIGNvdW50XSA8PSAyID8gMCA6IDFdOwogICAgIFtwb3B1cFRh
cmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwogICAgIAogICAgIE5TVmlldyogZmlsdGVyVmlldyA9
IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07
CkBAIC02ODcsMTAgKzY5NSwxMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogCiAgICAgb3Bl
blBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBs
ZVNlbGVjdGlvbjsKIAorICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9
IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKKyAgICBOU0FycmF5ICph
bGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7
CisgICAgTlNBcnJheSAqYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXMgY291bnRdID09IDIgPyBAW10gOiBwYXJhbWV0ZXJzLl9hbGxJbWFnZUZpbGVF
eHRlbnNpb25zOworICAgIAogICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNl
XTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4
dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgX2ZpbGVF
eHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2Nd
IGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBhbGxv
d2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczogYWxsSW1hZ2VGaWxlRXh0
ZW5zaW9uc107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBw
YXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7CiAgICAgTlNWaWV3ICpmaWx0
ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRs
ZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOwogICAgIGlmIChmaWx0
ZXJWaWV3KQogICAgICAgICBbb3BlblBhbmVsIHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402453</attachid>
            <date>2020-06-22 02:03:52 -0700</date>
            <delta_ts>2020-06-22 13:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200622020351.patch</filename>
            <type>text/plain</type>
            <size>53925</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkZDkxNGQwMjNjODc1MjlmMzE2NWUw
YTJjZmVjMDZkYTRmODIyZmYuLjVmODExMDlmMDJiNDNhYzNiNzA0NjQ5MTI3NDY2NDRhYmQ5ODE5
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDYtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNr
ZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMg
d2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBm
b3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI0ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAg
KiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRl
bXBvcmFyeUZpbGUpOgorCiAyMDIwLTA2LTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gQ2hlY2sgR2lnYWNhZ2UgdXNhZ2UgYmVmb3JlIGxhdW5j
aGluZyBWTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRjODQ2MWNmMDk1ZjQzNDYxNjQ1ZTEwNjQzZjJkZGEyMDMx
OTM3MTMuLmVhYTkwOTE1MDU5Y2I4YmU5YTAyOGY1OThhOTg2NzYyZDY0NzUwYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3NCBAQAorMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU2VsZWN0aW5nIGEgbm9uLWFj
Y2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hv
dWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIElmIHRoZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBpbWFnZSBpcyBub3Qgb25lIG9mIHRo
ZSBhbGxvd2VkIHR5cGVzLCB0aGUKKyAgICAgICAgaW1hZ2Ugd2lsbCBiZSBjb252ZXJ0ZWQgdG8g
dGhlIGZpcnN0IGRlc3RpbmF0aW9uIGFsbG93ZWQgaW1hZ2UgdHlwZSBhbmQKKyAgICAgICAgaXQg
d2lsbCBiZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUuIFRoaXMgZmlsZSBpcyBhIHJlcGxh
Y2VtZW50IHRvIHRoZQorICAgICAgICBvcmlnaW5hbCBpbWFnZSwgc28gdGhlIHR5cGUsIHRoZSBz
aXplIGFuZCB0aGUgZGF0YSB3aWxsIGJlIHJlYWQgZnJvbSBpdAorICAgICAgICBpbnN0ZWFkIG9m
IHRoZSBzZWxlY3RlZCBpbWFnZS4KKworICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2I6OnR5cGUgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvRmls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZTo6RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjb250ZW50VHlwZUZvckZp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6ZGVzdGluYXRpb25UeXBlRm9yRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlOjpuYW1lRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGU6OmlzRmlsZVR5cGVQYWNrYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6
OnNob3VsZFJlcGxhY2VGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNv
bXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAg
KiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9z
ZW4pOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvRmls
ZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Rmls
ZUxpc3RDcmVhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRl
RmlsZUxpc3QpOgorICAgICAgICAqIGh0bWwvRmlsZUxpc3RDcmVhdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmFsbG93ZWRUeXBl
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
Q2hvb3NlckNsaWVudDo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2Vt
ZW50RmlsZSk6CisKKzIwMjAtMDYtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxp
bnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJl
IGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVuLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgIEFkZCBsb2NhbGl6YWJsZSBzdHJpbmdzIGZvciB0
aGUgT3BlblBhbmVsIGZpbHRlci4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaDoKKyAgICAgICAgRXhwb3J0IGEgTUlNRVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJl
bmNlZCBmcm9tIFdlYktpdCBwcm9qZWN0LgorCisKIDIwMjAtMDYtMjEgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgbXVjaCBvZiB0aGUgU1ZHIHN0cmlu
ZyBwYXJzaW5nIGNvZGUgdG8gdXNlIE9wdGlvbmFsIGJhc2VkIHJldHVybiB2YWx1ZXMgcmF0aGVy
IHRoYW4gb3V0LXBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTAyNGIxMjQ2MWE1YzYyZDAzMzRiY2Q5
ZjEwZDU1ZDQ4NDMyMWU4MC4uYTdmNTY4YzkyMTBhZGRjMjM2MTAyOTE2NzE2MTI4MzE3YTc5MWMy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxl
IFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBm
aWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmli
dXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBlcyBpbiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGlz
IGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAgICAgICAgaW1hZ2UgZm9ybWF0LCBhZGQgYSBuZXcg
aXRlbSBpbiB0aGUgT3BlblBhbmVsIGZpbHRlciBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAg
ICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1l
dGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBh
cmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOgorCiAyMDIwLTA2
LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBm
YWlscyB0byBsZWF2ZSBhdWRpbyByb3V0aW5nIGFyYml0cmF0aW9uIGR1cmluZyBuYXZpZ2F0aW9u
LCBjbG9zaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDYwYjMyZTQ2ZmM0MjkwODIzYTYyOWJkYTNl
ZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQzYzZkNTJhOGE4YWYxNTVlNmU4ZWU4ZjkxMjAxMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciopOwog
aW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAogLy8g
UHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3Qg
dGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwg
UGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwogV1RGX0VY
UE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxlQWNjZXNzUGVybWlz
c2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSBmYWxzZSk7CiBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiAvLyBSZXR1cm5zIHRo
ZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNj
ZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9G
aWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2Eu
bW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0ZmZhODlkNGRjZGY0MGFjMWIxYjg3ZC4uYmM1MDA0
OTJjYWQzN2ZhMWExNzAzMDU2OGE5YTg5ZTNhYzJlMGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcgaG9tZURpcmVjdG9y
eVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKIH0KIAotU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBs
YXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IFN0
cmluZyYgc3VmZml4KQogewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7CiAKQEAgLTExMyw5ICsxMTMsMTMgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmls
ZUgKICAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgpOwogICAgIHRlbXBvcmFy
eUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4VXRmOC5sZW5ndGgoKSk7
CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2KTsKKworICAgIC8vIEFw
cGVuZCB0aGUgZmlsZSBleHRlbnNpb24uCisgICAgQ1N0cmluZyBzdWZmaXhVdGY4ID0gc3VmZml4
LnV0ZjgoKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoc3VmZml4VXRmOC5kYXRhKCks
IHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAn
KTsKKyAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wcyh0ZW1wb3JhcnlGaWxlUGF0aC5k
YXRhKCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0g
bWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOwogICAgIGlmIChwbGF0Zm9ybUZpbGVI
YW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGU0YWIwMGZi
ZGFkOWZmYjcxYjUwMjJjY2VjNDFjMTBiNWNhMGY1ZGYuLmZhMGI1MzFmZTEwZmY3NGViYWI4NjVm
M2NhMDkxNWRhMWQ5NTc1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
CkBAIC0zMjYsNyArMzI2LDcgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwog
fQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikK
IHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMi
LCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpKTsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIG51bGxwdHIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGM5ZjUwMTQzNmFiY2M4MDk0ZTg0
MTQ4MGQyMWZlMzZhNDcxZTgxZmYuLmIzYzA0MDFiNTA2ZmRjZTMyMzJlZDZmZWZiYmJmMGU1MmQx
MDAzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDQy
LDcgKzQ0Miw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwg
dWludDY0X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBvcGVu
VGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGNoYXIgYnVm
ZmVyW1BBVEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDY1OWRmZDUyNzI3ZGM5ZWY2
OTliN2Y5MjRkNWQyZTcyZDg0ZTBhZTcuLmI2MzE0OTU3M2E0ODQxZmU2MDAxZWVmYWZkZDAwOTJj
ZmM3NDFhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQwNCw3ICs0
MDQsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAgIHJldHVybiBwcm9wb3NlZFBhdGg7
CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBoYW5k
bGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MKaW5kZXggMTY0N2QyM2ZmYWFjZmQzOGQ0NTEyYjNmZjQ2YjkwMDRk
ZDk5M2ZlNS4uZDM2MGEwMzgwMmQ4MmVlOWM0OTFkOWI1NDVhYTYzZjRkODI3MzE2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9T
b3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC02MSw2ICs2MSwx
NSBAQAogLyogTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtl
eSBpbiBLZXljaGFpbiAqLwogIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiA9ICIlQCBXZWJDcnlw
dG8gTWFzdGVyIEtleSI7CiAKKy8qIEF1ZGlvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyICov
CisiJUAgYXVkaW8iID0gIiVAIGF1ZGlvIjsKKworLyogSW1hZ2UgZm9ybWF0IHR5cGUgaW4gZmls
ZSBwaWNrZXIgKi8KKyIlQCBpbWFnZSIgPSAiJUAgaW1hZ2UiOworCisvKiBWaWRlbyBmb3JtYXQg
dHlwZSBpbiBmaWxlIHBpY2tlciAqLworIiVAIHZpZGVvIiA9ICIlQCB2aWRlbyI7CisKIC8qIExh
YmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVw
bG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzICovCiAiJWQgZmlsZXMiID0g
IiVkIGZpbGVzIjsKIApAQCAtMTE1LDYgKzEyNCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICov
CiAiQWxpZ24gUmlnaHQgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJBbGlnbiBSaWdodCI7CiAKKy8q
IEFsbCBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJBbGwgRmlsZXMiID0gIkFsbCBGaWxlcyI7
CisKIC8qIEJ1dHRvbiB0aXRsZSBpbiBTdG9yYWdlIEFjY2VzcyBBUEkgcHJvbXB0ICovCiAiQWxs
b3cgKGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzKSIgPSAiQWxsb3ci
OwogCkBAIC0xMzYsNiArMTQ4LDkgQEAKIC8qIFdLRXJyb3JBdHRyaWJ1dGVkU3RyaW5nQ29udGVu
dEZhaWxlZFRvTG9hZCBkZXNjcmlwdGlvbiAqLwogIkF0dHJpYnV0ZWQgc3RyaW5nIGNvbnRlbnQg
ZmFpbGVkIHRvIGxvYWQiID0gIkF0dHJpYnV0ZWQgc3RyaW5nIGNvbnRlbnQgZmFpbGVkIHRvIGxv
YWQiOwogCisvKiBBdWRpbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJBdWRpbyBGaWxlcyIg
PSAiQXVkaW8gRmlsZXMiOworCiAvKiBNZW51IGl0ZW0gbGFiZWwgZm9yIGF1dG9tYXRpYyB0cmFj
ayBzZWxlY3Rpb24gYmVoYXZpb3IgKi8KICJBdXRvIChSZWNvbW1lbmRlZCkiID0gIkF1dG8gKFJl
Y29tbWVuZGVkKSI7CiAKQEAgLTI2NSw2ICsyODAsOSBAQAogLyogVW5kbyBhY3Rpb24gbmFtZSAq
LwogIkNyZWF0ZSBMaW5rIChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiQ3JlYXRlIExpbmsiOwogCisv
KiBDdXN0b20gRmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisiQ3VzdG9tIEZpbGVzIiA9ICJDdXN0
b20gRmlsZXMiOworCiAvKiBDdXQgY29udGV4dCBtZW51IGl0ZW0gKi8KICJDdXQiID0gIkN1dCI7
CiAKQEAgLTQwOSw2ICs0MjcsOSBAQAogLyogSWdub3JlIFNwZWxsaW5nIGNvbnRleHQgbWVudSBp
dGVtICovCiAiSWdub3JlIFNwZWxsaW5nIiA9ICJJZ25vcmUgU3BlbGxpbmciOwogCisvKiBJbWFn
ZSBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJJbWFnZSBGaWxlcyIgPSAiSW1hZ2UgRmlsZXMi
OworCiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiSW5kZW50IChVbmRvIGFjdGlvbiBuYW1lKSIg
PSAiSW5kZW50IjsKIApAQCAtOTkxLDYgKzEwMTIsOSBAQAogLyogVmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBt
YXhpbXVtICovCiAiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMiID0gIlZh
bHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzIjsKIAorLyogVmlkZW8gRmlsZXMg
aW4gZmlsZXIgcGlja2VyICovCisiVmlkZW8gRmlsZXMiID0gIlZpZGVvIEZpbGVzIjsKKwogLyog
UGhpc2hpbmcgd2FybmluZyBkZXNjcmlwdGlvbiAqLwogIldhcm5pbmdzIGFyZSBzaG93biBmb3Ig
d2Vic2l0ZXMgdGhhdCBoYXZlIGJlZW4gcmVwb3J0ZWQgYXMgZGVjZXB0aXZlLiBEZWNlcHRpdmUg
d2Vic2l0ZXMgdHJ5IHRvIHRyaWNrIHlvdSBpbnRvIGJlbGlldmluZyB0aGV5IGFyZSBsZWdpdGlt
YXRlIHdlYnNpdGVzIHlvdSB0cnVzdC4iID0gIldhcm5pbmdzIGFyZSBzaG93biBmb3Igd2Vic2l0
ZXMgdGhhdCBoYXZlIGJlZW4gcmVwb3J0ZWQgYXMgZGVjZXB0aXZlLiBEZWNlcHRpdmUgd2Vic2l0
ZXMgdHJ5IHRvIHRyaWNrIHlvdSBpbnRvIGJlbGlldmluZyB0aGV5IGFyZSBsZWdpdGltYXRlIHdl
YnNpdGVzIHlvdSB0cnVzdC4iOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCAzMmEzYjY5
ODlmYWI2ZWQ2NDA0MWI5MGI5ZGVjNDkzZjY0MDMxMTU2Li5iNzcyNGU4MWFmODI4YTAxZTE2ODhi
YWQ2NmVlOWNkMDZiY2UwZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTcyLDkgKzcy
LDEwIEBAIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CiAKLUJsb2I6OkJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFVS
TCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKK0Jsb2I6OkJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0
b3IsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKQog
ICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3R5cGUoV1RGTW92ZSh0
eXBlKSkKKyAgICAsIG1fZGVzdGluYXRpb25UeXBlKFdURk1vdmUoZGVzdGluYXRpb25UeXBlKSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA2MTRkODA5ZDIwODkzZDVlZmUwMGM4Mzky
YjNhZTM2NTJiZGEyYWM1Li5iMjI0Nzk0ZTgwOWI0NzE2YjIxZGUyYTRlNzQ3ZWJlYjI4MmE3YjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+QmxvYigpOwogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsVVJMOyB9Ci0gICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvblR5cGUuaXNOdWxsKCkgPyBtX3R5cGUgOiBtX2Rlc3RpbmF0aW9uVHlwZTsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTExNiw3ICsxMTYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgQmxvYihSZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVj
dG9yLCBjb25zdCBCbG9iJik7CiAKICAgICBlbnVtIFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yIHsg
dW5pbml0aWFsaXplZENvbnRydWN0b3IgfTsKLSAgICBCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVj
dG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CisgICAgQmxvYihVbmluaXRpYWxpemVkQ29udHJ1
Y3RvciwgVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRlc3RpbmF0aW9uVHlwZSk7CiAK
ICAgICBlbnVtIERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IgeyBkZXNlcmlhbGl6YXRpb25Db250
cnVjdG9yIH07CiAgICAgQmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwm
IHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+
IHNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpOwpAQCAtMTMxLDYgKzEzMSw3IEBA
IHByaXZhdGU6CiAgICAgVVJMIG1faW50ZXJuYWxVUkw7CiAKICAgICBTdHJpbmcgbV90eXBlOwor
ICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uVHlwZTsKIAogICAgIG11dGFibGUgT3B0aW9uYWw8dW5z
aWduZWQgbG9uZyBsb25nPiBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXgg
OGQ2ZTM4NzM4NTUxM2RkZDQxZTAzNzI0MDk4YjQzMmVhY2VjZWJjMC4uYzVmNWYyMTg0YjAyMWVh
NTEwNjllYWFiYjU2NjExZTlmMWNlNTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC00
NiwyMCArNDYsMjEgQEAgUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXYKICAgICByZXR1cm4gZmlsZTsK
IH0KIAotUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbmFtZU92ZXJyaWRlKQorUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGFsbG93ZWRUeXBlcykKIHsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBTdHJpbmcgdHlwZTsKLSAg
ICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKHBhdGgsIG5hbWVPdmVycmlkZSwgbmFtZSwgdHlw
ZSk7CisgICAgU3RyaW5nIHR5cGUgPSBjb250ZW50VHlwZUZvckZpbGUocGF0aCwgbmFtZU92ZXJy
aWRlKTsKKyAgICBTdHJpbmcgZGVzdGluYXRpb25UeXBlID0gZGVzdGluYXRpb25UeXBlRm9yRmls
ZShwYXRoLCB0eXBlLCBhbGxvd2VkVHlwZXMpOworICAgIFN0cmluZyBuYW1lID0gbmFtZUZvckZp
bGUocGF0aCwgbmFtZU92ZXJyaWRlLCBkZXN0aW5hdGlvblR5cGUpOwogCiAgICAgYXV0byBpbnRl
cm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgdHlwZSk7
CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxVUkwpLCBX
VEZNb3ZlKHR5cGUpLCBTdHJpbmcgeyBwYXRoIH0sIFdURk1vdmUobmFtZSkpKTsKKyAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBwYXRo
LCBuYW1lLCB0eXBlLCBkZXN0aW5hdGlvblR5cGUpOworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKGRlc3RpbmF0aW9uVHlwZSkpKTsKIH0KIAotRmls
ZTo6RmlsZShVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYm
IG5hbWUpCi0gICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBXVEZNb3ZlKHVybCks
IFdURk1vdmUodHlwZSkpCitGaWxlOjpGaWxlKFVSTCYmIHVybCwgU3RyaW5nJiYgcGF0aCwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKQorICAg
IDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3RvciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHR5
cGUpLCBXVEZNb3ZlKGRlc3RpbmF0aW9uVHlwZSkpCiAgICAgLCBtX3BhdGgoV1RGTW92ZShwYXRo
KSkKICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogewpAQCAtMTIzLDMyICsxMjQsNDggQEAg
aW50NjRfdCBGaWxlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAogICAgIHJldHVybiBXVEY6OnRpbWVD
bGlwKHJlc3VsdCk7CiB9CiAKLXZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVm
ZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUpCitTdHJpbmcgRmlsZTo6
Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1l
T3ZlcnJpZGUpCiB7Ci0jaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKHNob3Vs
ZFJlcGxhY2VGaWxlKHBhdGgpKSB7Ci0gICAgICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVG
b3JSZXBsYWNlZEZpbGUocGF0aCwgbmFtZU92ZXJyaWRlLCBlZmZlY3RpdmVOYW1lLCBlZmZlY3Rp
dmVDb250ZW50VHlwZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBlZmZl
Y3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlzRW1wdHkoKSA/IEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShwYXRoKSA6IG5hbWVPdmVycmlkZTsKLSAgICBzaXplX3QgaW5kZXggPSBlZmZlY3Rp
dmVOYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lT3ZlcnJpZGUu
aXNFbXB0eSgpID8gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJy
aWRlOworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBzaXplX3QgaW5kZXggPSBuYW1lLnJldmVy
c2VGaW5kKCcuJyk7CiAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFsmZWZmZWN0aXZlQ29udGVudFR5cGUsICZlZmZlY3RpdmVOYW1l
LCBpbmRleF0gewotICAgICAgICAgICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhp
bmRleCArIDEpKS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdh
aXQoWyZtaW1lVHlwZSwgJm5hbWUsIGluZGV4XSB7CisgICAgICAgICAgICBtaW1lVHlwZSA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKG5hbWUuc3Vic3RyaW5nKGlu
ZGV4ICsgMSkpLmlzb2xhdGVkQ29weSgpOwogICAgICAgICB9KTsKICAgICB9CisgICAgcmV0dXJu
IG1pbWVUeXBlOwogfQogCi1TdHJpbmcgRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkKK1N0cmluZyBGaWxlOjpkZXN0aW5hdGlvblR5cGVGb3JGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFs
bG93ZWRUeXBlcykKIHsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBTdHJpbmcgdHlwZTsKLSAgICBj
b21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKHBhdGgsIFN0cmluZygpLCBuYW1lLCB0eXBlKTsKLQor
I2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQorICAgIGlmIChpc0ZpbGVUeXBlUGFja2FnZShw
YXRoKSkKKyAgICAgICAgcmV0dXJuICJhcHBsaWNhdGlvbi96aXAiX3M7CisKKyAgICBpZiAoYWxs
b3dlZFR5cGVzLmNvbnRhaW5zKHR5cGUpKQorICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAKKyAg
ICBmb3IgKGF1dG8mIGFsbG93ZWRUeXBlIDogYWxsb3dlZFR5cGVzKSB7CisgICAgICAgIGlmIChh
bGxvd2VkVHlwZSA9PSAiaW1hZ2UvKiIpCisgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAg
ICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29k
aW5nKGFsbG93ZWRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBhbGxvd2VkVHlwZTsKKyAgICB9
CisjZW5kaWYKICAgICByZXR1cm4gdHlwZTsKIH0KIAorU3RyaW5nIEZpbGU6Om5hbWVGb3JGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25UeXBlKQoreworICAgIFN0cmluZyBuYW1lID0gbmFtZU92ZXJyaWRl
LmlzRW1wdHkoKSA/IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSA6IG5hbWVPdmVy
cmlkZTsKKyNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKKyAgICBpZiAoZGVzdGluYXRpb25U
eXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3MpCisgICAgICAgIG5hbWUgPSBtYWtlU3RyaW5nKG5h
bWUsICIuemlwIl9zKTsKKyNlbmRpZgorICAgIHJldHVybiBuYW1lOworfQorCiBib29sIEZpbGU6
OmlzRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNEaXJlY3RvcnkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5oCmluZGV4IGQyZjkzOGI0MjBkM2E2MGZiOTNmNzQwYmNiMDRkNzQxZjgzZWZmNzgu
LjBmYWIzYTlmYzY3N2Y0NjJmMGM3NmJkN2U2ZWU4MzczYTVhODcxZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gQ3JlYXRl
IGEgZmlsZSB3aXRoIGFuIG9wdGlvbmFsIG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9yICh2aWEg
RmlsZS5uYW1lIGFuZCBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZlcnMgZnJv
bSB0aGUgb25lIHByb3ZpZGVkIGluIHRoZSBwYXRoLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1l
T3ZlcnJpZGUgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RmlsZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0s
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzID0geyB9KTsKIAogICAgIC8vIENy
ZWF0ZSBhIEZpbGUgdXNpbmcgdGhlICduZXcgRmlsZScgY29uc3RydWN0b3IuCiAgICAgc3RhdGlj
IFJlZjxGaWxlPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlh
bnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlC
YWcpCkBAIC03NiwyOCArNzYsMjUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0
X3QgbGFzdE1vZGlmaWVkKCkgY29uc3Q7IC8vIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2Ug
RXBvY2guCiAgICAgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZE92ZXJyaWRl
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGU7IH0gLy8gTnVtYmVy
IG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBFcG9jaC4KIAotICAgIHN0YXRpYyBTdHJpbmcgY29udGVu
dFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgc3RhdGljIFN0cmluZyBjb250
ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVy
cmlkZSA9IHsgfSk7CisgICAgc3RhdGljIFN0cmluZyBkZXN0aW5hdGlvblR5cGVGb3JGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBjb25zdCBIYXNoU2V0
PFN0cmluZz4mIGFsbG93ZWRUeXBlcyA9IHsgfSk7CisgICAgc3RhdGljIFN0cmluZyBuYW1lRm9y
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKICNpZiBFTkFCTEUoRklM
RV9SRVBMQUNFTUVOVCkKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXBsYWNlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpOworICAgIHN0YXRpYyBib29sIGlzRmlsZVR5cGVQYWNrYWdlKGNvbnN0IFN0
cmluZyYgcGF0aCk7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci0gICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3Ry
aW5nJiYgbmFtZSk7CisgICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFt
ZSwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsKICAgICBGaWxlKFZl
Y3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKICAgICBGaWxlKGNvbnN0IEJsb2ImLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwogICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKICAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsKIAotICAgIHN0
YXRpYyB2b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcm
IGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAg
ICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZm
ZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7Ci0jZW5kaWYKLQogICAg
IFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwogICAgIFN0cmluZyBt
X25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCmluZGV4IDY2NGY5YTUzNjEzZGYy
NmNhMTdjNzA3YzIxYjUwYzY0NjQ1MjA0ZTYuLjEwNTQ5OGJlY2FmYTgwYjI3MTY3NGExYzMxNDQ3
NDAzMTcxNWQwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGaWxlOjpzaG91bGRSZXBsYWNl
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGU6OmlzRmlsZVR5cGVQYWNrYWdlKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTU3LDEzICs1Nyw2IEBAIGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBVVFR5cGVDb25mb3Jtc1RvKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZil1dGksIGtVVFR5cGVQYWNrYWdlKTsKIH0KIAotdm9pZCBGaWxlOjpj
b21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3Ry
aW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSkKLXsKLSAgICBBU1NFUlQoIUZpbGVTeXN0ZW06OnBh
dGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8gRXhwZWN0aW5nIHRvIGdldCBh
IHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3IgZGlyZWN0b3JpZXMuCi0gICAg
ZWZmZWN0aXZlQ29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwotICAgIGVmZmVjdGl2
ZU5hbWUgPSBtYWtlU3RyaW5nKChuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGUpLCAiLnppcCJfcyk7Ci19Ci0KIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggNWUxZDRjMDBhOWMw
NjhjODAzMWMyNGNjZDYwYWIyMGE2YWZhMDYwYi4uMTNjODYyNzk3YTIzNDRjMWZlNzk1MjA2NjE2
Yjc0MDJjMTVmZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgc3RhdGljIFRocmVhZFNwZWNp
ZmljPEJsb2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAqbWFwOwogfQog
Ci12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
K3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlKQogewogICAg
IGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZp
bGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRl
bnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmws
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgsIG5hbWUsIGNvbnRlbnRUeXBlLCBk
ZXN0aW5hdGlvblR5cGUpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBw
YXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNv
bGF0ZWRDb3B5KCksIG5hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNv
bnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblR5cGUgPSBkZXN0aW5hdGlvblR5
cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxl
QmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgsIG5hbWUsIGRl
c3RpbmF0aW9uVHlwZSksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBhOWM3OWZlMjI5
MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi4wZTBmNmYzYmU4YTM5ZmM4Mzk2ZjFiOTNi
YWE4M2M5MzkyNzAzMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBl
KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1ZTRiODIwZWI2ODBmN2NjNDI2
NTVmMGI5ZTJkNmQuLjkwZWE2ZDA1MWRkODc0MzI3YjJmMDBkOTEyNTY3YWIyM2FiNDQ5MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZpbGVzLCBSZXF1
ZXN0SWNvbiBzaG91bGRSZXF1ZXN0CiAgICAgcHJvdGVjdGVkSW5wdXRFbGVtZW50LT5zZXRDaGFu
Z2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAKLXZvaWQgRmls
ZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
JiBwYXRocywgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQordm9pZCBG
aWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcywgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQogewogICAgIGlmICghZGlzcGxheVN0cmlu
Zy5pc0VtcHR5KCkpCiAgICAgICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlTdHJpbmc7CkBA
IC00MTMsOCArNDEzLDggQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBW
ZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgICAgICBtX2RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci0+Y2FuY2VsKCk7CiAKICAgICBpZiAoIWFsbG93c0RpcmVjdG9y
aWVzKCkpIHsKLSAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5m
bykgewotICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxl
SW5mby5kaXNwbGF5TmFtZSk7CisgICAgICAgIGF1dG8gZmlsZXMgPSBwYXRocy5tYXAoWyZhbGxv
d2VkVHlwZXNdKGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3Jl
YXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lLCBhbGxvd2VkVHlwZXMpOwog
ICAgICAgICB9KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVzKSksIGljb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCmluZGV4IDA4ZjYyMWZlNWMzZDZkMzAzODY3YWU5ZjA3MTdlYWRkMzU2ZWNi
YWEuLmQzNDkzMWY2NTlkYjQ1NjZmNTk5MWJjY2IyNjUzYjY1YjM4OThmZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJp
bmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZmlsZXNDaG9zZW4o
Y29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxwdHIpIGZpbmFsOworICAgIHZvaWQgZmlsZXNDaG9z
ZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9IHsg
fSwgSWNvbiogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIC8vIEZpbGVJY29uTG9hZGVyQ2xpZW50
IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgaWNvbkxvYWRlZChSZWZQdHI8SWNvbj4mJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdi
Y2Y0NTM4ZmVkODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4uNTQxOWI4YWQ4OTA2MGJkYjNhYmRhODgz
N2RiN2JmOTBhYzU3MDUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVD
aG9vc2VyLmgiCiAKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRmlsZUNob29zZXI6OkZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQpAQCAtNDQsNiArNDYs
MTkgQEAgUmVmPEZpbGVDaG9vc2VyPiBGaWxlQ2hvb3Nlcjo6Y3JlYXRlKEZpbGVDaG9vc2VyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IEZpbGVDaG9vc2UKIAogRmlsZUNob29zZXI6On5GaWxlQ2hvb3Nl
cigpID0gZGVmYXVsdDsKIAorSGFzaFNldDxTdHJpbmc+IEZpbGVDaG9vc2VyOjphbGxvd2VkVHlw
ZXMoKSBjb25zdAoreworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXM7CisgICAgZm9y
IChhdXRvJiB0eXBlIDogbV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAgIGFsbG93
ZWRUeXBlcy5hZGQodHlwZSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3NldHRpbmdz
LmFjY2VwdEZpbGVFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IE1JTUVUeXBlUmVn
aXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykg
PyBleHRlbnNpb24ucmlnaHQoZXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSkgOiBleHRlbnNpb24pOwor
ICAgICAgICBpZiAoIXR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWxsb3dlZFR5cGVzLmFk
ZCh0eXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbG93ZWRUeXBlczsKK30KKwogdm9pZCBGaWxl
Q2hvb3Nlcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTcwLDcg
Kzg1LDcgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CiAg
ICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5k
KEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWUpKTsKLSAgICBtX2NsaWVudC0+ZmlsZXNDaG9z
ZW4oZmlsZXMpOworICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgYWxsb3dlZFR5cGVz
KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTg5LDcgKzEwNCw3IEBAIHZv
aWQgRmlsZUNob29zZXI6OmNob29zZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcywgY29uc3QgU3RyaW5nCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZp
bGVzOwogICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCiAgICAgICAgIGZpbGVz
LmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7Ci0gICAgbV9jbGllbnQtPmZp
bGVzQ2hvc2VuKGZpbGVzLCBkaXNwbGF5U3RyaW5nLCBpY29uKTsKKyAgICBtX2NsaWVudC0+Zmls
ZXNDaG9zZW4oZmlsZXMsIHsgfSwgZGlzcGxheVN0cmluZywgaWNvbik7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0Mzg3OTVhNzZm
ZWM5YTNkYmY3YzZhMDg0ZWEwODg5NS4uN2Q5MTllYjljZDU1NjZiYTI3YzQ1YmI1NDFjOGMzNTdi
ZDVhMzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc2
LDcgKzc3LDcgQEAgY2xhc3MgRmlsZUNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgfkZpbGVDaG9vc2VyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGZp
bGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzID0geyB9LCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlTdHJpbmcgPSB7IH0sIEljb24qID0gbnVsbHB0cikgPSAwOwogfTsKIAogY2xhc3MgRmls
ZUNob29zZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2hvb3Nlcj4gewpAQCAtMTAyLDYgKzEw
Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRmlsZUNob29zZXIoRmlsZUNob29zZXJDbGll
bnQqLCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAKKyAgICBIYXNoU2V0PFN0cmluZz4g
YWxsb3dlZFR5cGVzKCkgY29uc3Q7CisKICAgICBGaWxlQ2hvb3NlckNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CiAgICAgRmlsZUNob29zZXJTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVk
ZTJhZGIwMWExNTUwZTJmZTUwZDUwNjQzYjNmYTNmLi4xM2UyNTE2Zjk2MTI2NTY3ZTE1OWVhZTVm
NTVjMjI0YjA5MGVkODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRh
YmxlIGZvciBiZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0
eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04g
cmVzb3VyY2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAK
aW5kZXggNWFiZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNi4uYTcyNmU3MjU1
NzExNTk2NDg1Y2RhYTE0OTk2YjM4YWYwZGRmNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAt
MzIsMTUgKzMyLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoKQorQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblR5cGUpCiAgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fbmFtZShuYW1lKQor
ICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX2Rlc3RpbmF0aW9uVHlwZShkZXN0aW5hdGlvblR5
cGUpCiB7CiB9CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKCFtX3JlcGxhY2Vt
ZW50UGF0aC5pc051bGwoKSkKKyAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpICYm
IG1fZGVzdGluYXRpb25UeXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3MpCiAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CkBAIC00OCw3
ICs1MSw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgp
CiBjb25zdCBTdHJpbmcmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCgpCiB7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpKQogICAgICAgICBn
ZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5p
c051bGwoKSkKQEAgLTYxLDcgKzY0LDcgQEAgY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnBhdGgoKQogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
c2l6ZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCgpKQogICAgICAgICBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogI2VuZGlmCiAKQEAg
LTczLDcgKzc2LDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkK
ICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlvbnMgZm9yIGdlbmVy
YXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAgLy8gVW5mb3J0dW5h
dGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUgaGFuZGxpbmcgLSBG
aWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJseWluZyBmaWxlcyBj
aGFuZ2UuCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB8fCAhbV9yZXBs
YWNlbWVudFBhdGguaXNOdWxsKCkpCisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwo
KSB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAjZW5kaWYKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBA
IC04Niw3ICs4OSw4IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5n
TW9kaWZpY2F0aW9ucygpCiAgICAgLy8gdGhlIGNvc3Qgb2YgdHJhY2tpbmcgZmlsZSBtb2RpZmlj
YXRpb25zLgogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgbV9yZXBsYWNlbWVu
dFNob3VsZEJlR2VuZXJhdGVkID0gRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUobV9wYXRoKTsKKyAg
ICBpZiAoRmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UobV9wYXRoKSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvblR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTog
U29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lz
dGVtIG9iamVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KQEAgLTk3LDcgKzEwMSw3
IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9u
cygpCiAgICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSBtZXRhZGF0YS52YWx1ZSgpLm1v
ZGlmaWNhdGlvblRpbWU7CiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBpZiAo
bV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChyZXBsYWNlbWVudFNob3Vs
ZEJlR2VuZXJhdGVkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaApp
bmRleCA2NTg4MjlkMDdmY2ZiZDZiMDJhMjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li5iZGQxZWY4Mjk1
MmVmNDE0MTE3NmQzYzY5YjgxN2ExMzIyYzMxN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCi0jZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNSw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAg
c3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoLCBuYW1lLCB0eXBl
LCBkZXN0aW5hdGlvblR5cGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UoKTsKQEAgLTUyLDIyICs1MSwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJldm9rZUZpbGVBY2Nlc3MoKTsKIAogcHJvdGVjdGVkOgotICAgIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0
eXBlID0geyB9LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKIHByaXZh
dGU6CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgYm9vbCByZXBsYWNlbWVudFNo
b3VsZEJlR2VuZXJhdGVkKCkgY29uc3Q7CiAgICAgdm9pZCBnZW5lcmF0ZVJlcGxhY2VtZW50Rmls
ZSgpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOworICAgIFN0cmluZyBtX25hbWU7Cisg
ICAgU3RyaW5nIG1fdHlwZTsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblR5cGU7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRQYXRoOwotICAg
IGJvb2wgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3NpemUgeyAwIH07CiAgICAgTWFya2FibGU8V2FsbFRp
bWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7
CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVlYzc3N2E4Njk5MDY3MTE4Y2JjZDU1MjhlOGY0ZmZl
OTJhNDQ4NmIuLjlkNGZhYjRjOGYxYmRjMjE1YzkyMDk4ZjdkMTgzMTQ2ZTkxODc1YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9C
bG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDI1ICsyOCw2NiBAQAogCiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKKyNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNp
bXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSAhPSBt
X2Rlc3RpbmF0aW9uVHlwZSAmJiBtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKTsKK30KKwogdm9p
ZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIHsKLSAg
ICBBU1NFUlQobV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpOwotICAgIEFTU0VSVChtX3JlcGxh
Y2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpOworICAgIEFTU0VSVChyZXBsYWNlbWVudFNob3VsZEJl
R2VuZXJhdGVkKCkpOwogCiAgICAgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKIAotICAgIGF1dG8g
Z2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUobV9w
YXRoKTsKLSAgICBpZiAoIWdlbmVyYXRlZEZpbGUuaXNOdWxsKCkpCi0gICAgICAgIG1fcmVwbGFj
ZW1lbnRQYXRoID0gV1RGTW92ZShnZW5lcmF0ZWRGaWxlKTsKKyAgICBTdHJpbmcgZ2VuZXJhdGVk
RmlsZTsKKyAgICBpZiAobV9kZXN0aW5hdGlvblR5cGUgPT0gImFwcGxpY2F0aW9uL3ppcCJfcykK
KyAgICAgICAgZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUobV9wYXRoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSAhPSBtX2Rl
c3RpbmF0aW9uVHlwZSk7CisgICAgICAgIEFTU0VSVChtX2Rlc3RpbmF0aW9uVHlwZS5zdGFydHNX
aXRoKCJpbWFnZS8iX3MpKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIGltYWdlIHNvdXJjZS4K
KyAgICAgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICAgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwgTlVMTCkp
OworCisgICAgICAgIC8vIENvbXB1dGUgdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUgcHJlZml4IGFu
ZCBmaWxlIGV4dGVuc2lvbi4KKyAgICAgICAgYXV0byBjb21wb25lbnRzID0gbV9uYW1lLnNwbGl0
KCcuJyk7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4
dGVuc2lvbnNGb3JNSU1FVHlwZShtX2Rlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIGF1dG8gcHJl
Zml4ID0gbWFrZVN0cmluZyhjb21wb25lbnRzLmZpcnN0KCksICJfIl9zKTsKKyAgICAgICAgYXV0
byBzdWZmaXggPSBtYWtlU3RyaW5nKCIuIl9zLCBleHRlbnNpb25zLmZpcnN0KCkpOworCisgICAg
ICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgorICAgICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgcGxhdGZvcm1GaWxlSGFuZGxlOworICAgICAgICBnZW5lcmF0ZWRGaWxl
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUocHJlZml4LCBwbGF0Zm9ybUZpbGVIYW5k
bGUsIHN1ZmZpeCk7CiAKLSAgICBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgPSBmYWxz
ZTsKLSAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgIC8vIENy
ZWF0ZSB0aGUgZGF0YSBjb25zdW1lci4KKyAgICAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3Mg
Y2FsbGJhY2tzID0geyBbXSh2b2lkICppbmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBj
b3VudCkgLT4gc2l6ZV90IHsKKyAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1GaWxlSGFuZGxlID0g
KnN0YXRpY19jYXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAg
ICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKHBsYXRmb3JtRmlsZUhhbmRs
ZSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICAgICAgfSwg
TlVMTCB9OworCisgICAgICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVy
Q3JlYXRlKCZwbGF0Zm9ybUZpbGVIYW5kbGUsICZjYWxsYmFja3MpKTsKKworICAgICAgICAvLyBD
cmVhdGUgdGhlIGltYWdlIGRlc3RpbmF0aW9uLgorICAgICAgICBhdXRvIHV0aSA9IFVUSUZyb21N
SU1FVHlwZShtX2Rlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBh
ZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhQ29uc3VtZXIoY29uc3VtZXIu
Z2V0KCksIHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAxLCBOVUxMKSk7CisKKyAgICAgICAg
Ly8gV3JpdGUgdGhlIGltYWdlIHNvdXJjZSB0byB0aGUgaW1hZ2UgZGVzdGluYXRpb24uCisgICAg
ICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlRnJvbVNvdXJjZShkZXN0aW5hdGlvbi5nZXQo
KSwgc291cmNlLmdldCgpLCAwLCBudWxscHRyKTsKKyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUocGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICB9CisKKyAgICBpZiAoIWdlbmVyYXRlZEZpbGUu
aXNOdWxsKCkpIHsKKyAgICAgICAgbV9yZXBsYWNlbWVudFBhdGggPSBXVEZNb3ZlKGdlbmVyYXRl
ZEZpbGUpOwogICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKICAgICAgICAgICAgIG1f
c2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1t
CmluZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIxNDg4MjMuLjg2YTI0NTg4
YTcxZDMwYzU2MTViMzM2ZWZkYjBkNjY3YjdiNjk3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpA
QCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLT3BlblBh
bmVsUGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTYy
LDExICs2NCwxMyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3Ry
aW5nICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFt
aW1lVHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gZXh0
ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMgfHwg
IUNGQXJyYXlHZXRDb3VudChleHRlbnNpb25zLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNT
dHJpbmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcgKj4gKill
eHRlbnNpb25zLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFkZCBhZGRpdGlvbmFs
IG1pbWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkgbWF5IG5v
dCByZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKEAiaW1hZ2Uvd2VicCIs
IEAid2VicCIpOworICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJw
IiwgQFtAIndlYnAiXSk7CiAKICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cDsKICAgICB9KCkpOwpAQCAtNzksNiArODMsMTggQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+
ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQogICAgIHJldHVybiBb
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKIH0KIAor
c3RhdGljIE5TU3RyaW5nICptaW1lVHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9u
KQoreworICAgIE5TU2V0PE5TU3RyaW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1J
TUVUeXBlTWFwKCkga2V5c09mRW50cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1l
VHlwZSwgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBp
ZiAoW21pbWVUeXBlIGhhc1N1ZmZpeDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAg
ICAgICAgaWYgKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAg
ICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJp
bmdGcm9tSW5kZXg6MV1dOworICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmpl
Y3Q6ZXh0ZW5zaW9uXTsKKyAgICB9XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3Rd
OworfQorCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wp
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTEzNiwzNiArMTUyLDExOCBAQCBzdGF0aWMgTlNT
ZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUp
CiAgICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAKLS0g
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCistIChO
U0FycmF5PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBhdXRv
IGFjY2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRv
IGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107
CisgICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0
c107Cit9CiAKLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMi
OwotICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7
CistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcwor
eworICAgIE5TU3RyaW5nICphbGxGaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiQWxsIEZpbGVz
IiwgIkFsbCBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYWxsSW1hZ2VG
aWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiSW1hZ2UgRmlsZXMiLCAiSW1hZ2UgRmlsZXMgaW4g
ZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmFsbFZpZGVvRmlsZXNUaXRsZSA9IFdFQl9V
SV9TVFJJTkcoIlZpZGVvIEZpbGVzIiwgIlZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOwor
ICAgIE5TU3RyaW5nICphbGxBdWRpb0ZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJBdWRpbyBG
aWxlcyIsICJBdWRpbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqY3Vz
dG9tRmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkN1c3RvbSBGaWxlcyIsICJDdXN0b20gRmls
ZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmltYWdlVGl0bGUgPSBXRUJfVUlf
U1RSSU5HKCIlQCBpbWFnZSIsICJJbWFnZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciIpOwor
ICAgIE5TU3RyaW5nICp2aWRlb1RpdGxlID0gV0VCX1VJX1NUUklORygiJUAgdmlkZW8iLCAiVmlk
ZW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYXVkaW9UaXRs
ZSA9IFdFQl9VSV9TVFJJTkcoIiVAIGF1ZGlvIiwgIkF1ZGlvIGZvcm1hdCB0eXBlIGluIGZpbGUg
cGlja2VyIik7CisgICAgCisgICAgY29uc3RleHByIGF1dG8gaW1hZ2VUeXBlID0gQCJpbWFnZSI7
CisgICAgY29uc3RleHByIGF1dG8gdmlkZW9UeXBlID0gQCJ2aWRlbyI7CisgICAgY29uc3RleHBy
IGF1dG8gYXVkaW9UeXBlID0gQCJhdWRpbyI7CisgICAgY29uc3RleHByIGF1dG8gY3VzdG9tVHlw
ZSA9IEAiY3VzdG9tIjsKICAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0g
JiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxs
RmlsZXNUaXRsZV07CisgICAgYXV0byBjb21wb3NlVGl0bGVzID0gXihOU1N0cmluZyAqdHlwZSwg
TlNTdHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSB7CisgICAgICAgIE5TTXV0YWJs
ZUFycmF5KiB0aXRsZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgICAgIC8vIGlm
IHsgdHlwZSBzdWJUeXBlIH0gPT0gImltYWdlL3BuZyIgdGhlbiBhZGQgIlBORyBJbWFnZSIKKyAg
ICAgICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0eXBl
VGl0bGUgPSBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSA/IGltYWdlVGl0bGUgOiAo
W3R5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gPyB2aWRlb1RpdGxlIDogYXVkaW9UaXRs
ZSk7CisgICAgICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAg
ICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVUaXRs
ZSwgW3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5nXV1dOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5
cGVUaXRsZSwgc3ViVHlwZV1dOworICAgICAgICB9IGVsc2UgaWYgKFt0eXBlIGlzRXF1YWxUb1N0
cmluZzpjdXN0b21UeXBlXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9
PSAiQ3VzdG9tIEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZpbGVzIgorICAgICAgICAgICAgW3Rp
dGxlcyBhZGRPYmplY3Q6Y3VzdG9tRmlsZXNUaXRsZV07CisgICAgICAgIH0KIAotICAgIGlmICgh
KFthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lv
bnMgY291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNU
aXRsZV07CisgICAgICAgIC8vIGlmIGFsbFR5cGUgPT0gImltYWdlIiB0aGVuIGFkZCAiSW1hZ2Ug
RmlsZXMiCisgICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAgICBOU1N0
cmluZyAqYWxsVHlwZVRpdGxlID0gW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlwZV0g
PyBhbGxJbWFnZUZpbGVzVGl0bGUgOiAoW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlw
ZV0gPyBhbGxWaWRlb0ZpbGVzVGl0bGUgOiBhbGxBdWRpb0ZpbGVzVGl0bGUpOworICAgICAgICAg
ICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxsVHlwZVRpdGxlXTsKKyAgICAgICAgfQogCi0gICAgYXV0
byBtaW1lVHlwZSA9IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byBy
YW5nZSA9IFttaW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFu
Z2UubGVuZ3RoKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1Rp
dGxlXTsKLSAgICAKLSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmlu
Z1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWlt
ZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAg
aWYgKFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVy
biBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQ
cmVmaXggc3Vic3RyaW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVm
aXggc3Vic3RyaW5nRnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRsZV07CisgICAgICAgIC8vIElu
IGFsbCBjYXNlcyBhZGQgIkFsbCBGaWxlcyIKKyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxs
RmlsZXNUaXRsZV07CisgICAgICAgIHJldHVybiB0aXRsZXM7CisgICAgfTsKKworICAgIC8vIE5v
IGFjY2VwdCBhdHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4KKyAgICBpZiAoIVtbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNp
b25zXSBjb3VudF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCBAIiIp
OworCisgICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQg
YWxsb2NdIGluaXRXaXRoQXJyYXk6W3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXV0pOworCisgICAg
Zm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25z
XSkgeworICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKFtleHRlbnNp
b24gc3Vic3RyaW5nRnJvbUluZGV4OjFdKTsKKworICAgICAgICAvLyBVbmtub3duIGZpbGUgZXh0
ZW5zaW9uOiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIueHl6Ij4KKyAgICAgICAgaWYgKCFt
aW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAi
IiwgQCIiKTsKKworICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBl
XTsKKyAgICB9CisKKyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3Vi
VHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKworICAgIGZvciAoTlNT
dHJpbmcgKm1pbWVUeXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzLmdldCgpKSB7CisgICAgICAgIE5T
UmFuZ2UgcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKyAgICAgICAgaWYg
KCFyYW5nZS5sZW5ndGgpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIG1p
bWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25d
OworICAgICAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21J
bmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOworCisgICAgICAgIC8vIE9ubHkgaW1hZ2UsIHZpZGVv
IGFuZCBhdWRpbyBtaW1lIHR5cGVzIHdpbGwgaGF2ZSBkZXNjcmlwdGl2ZSB0aXRsZXMuIE90aGVy
IHR5cGVzIHdpbGwgYmUgc2hvd24KKyAgICAgICAgLy8gYXMgIkN1c3RvbSBGaWxlcyIuICJDdXN0
b20gRmlsZXMiIHdpbGwgYmUgc2hvd24gYWxzbyBpZiBtb3JlIHRoYW4gYSBtaW1lIHR5cGUgaXMg
c3BlY2lmaWVkLgorICAgICAgICBpZiAoIVttaW1lVHlwZVByZWZpeCBpc0VxdWFsVG9TdHJpbmc6
aW1hZ2VUeXBlXSAmJiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVd
ICYmICFbbWltZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOmF1ZGlvVHlwZV0pCisgICAgICAg
ICAgICB0eXBlID0gY3VzdG9tVHlwZTsKKyAgICAgICAgZWxzZSBpZiAoIXR5cGUpCisgICAgICAg
ICAgICB0eXBlID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbdHlwZSBpc0Vx
dWFsVG9TdHJpbmc6bWltZVR5cGVQcmVmaXhdKQorICAgICAgICAgICAgdHlwZSA9IGN1c3RvbVR5
cGU7CisKKyAgICAgICAgLy8gIkN1c3RvbSBGaWxlcyIgYWxzbyB3aWxsIGJlIHNob3duIGlmIG1v
cmUgdGhhbiBvbmUgc3ViLXR5cGUgaXMgc3BlY2lmaWVkIHVubGVzcyAiKiIgaXMgc3BlY2lmaWVk
LgorICAgICAgICBpZiAoIXN1YlR5cGUgfHwgW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmlu
ZzpAIioiXSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAg
ZWxzZSBpZiAoIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNF
cXVhbFRvU3RyaW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBjdXN0
b21UeXBlOworCisgICAgICAgIC8vIEFkZCAiSW1hZ2UgRmlsZXMiIHRpdGxlIGlmIG1pbWVUeXBl
IGlzIGFsbG93ZWQgZGVzdGVuYXRpb24gaW1hZ2UgZm9ybWF0LgorICAgICAgICBpZiAoV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rpbmco
bWltZVR5cGUpKQorICAgICAgICAgICAgYWxsVHlwZSA9IGltYWdlVHlwZTsKKyAgICB9CisKKyAg
ICAvLyBDdXN0b20gRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJhdWRpby8qLGltYWdlL3BuZyIg
b3IgYWNjZXB0PSJhcHBsaWNhdGlvbi9wZGYiLgorICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6Y3VzdG9tVHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUs
IEAiIiwgQCIiKTsKKworICAgIC8vICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9Imlt
YWdlLyoiIG9yIGFjY2VwdD0iYXVkaW8vKiIuCisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0
cmluZzpAIioiXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIHR5cGUp
OwogCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVy
biBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXgg
dXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAv
LyBDdXN0b20gRmlsZXMsICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdlL2pw
ZWcsaW1hZ2UvcG5nIi4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOmN1c3RvbVR5
cGVdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0b21UeXBlLCBAIiIsIGFsbFR5
cGUpOwogCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIs
IG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIC8v
ICdTdWItdHlwZSBUeXBlJywgJ1R5cGUnIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2Uv
cG5nIi4KKyAgICByZXR1cm4gY29tcG9zZVRpdGxlcyh0eXBlLCBzdWJUeXBlLCBhbGxUeXBlKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgxMjBl
NGFmMWJhZWEyMmMwNjI0YWMyZTIzYjRlMWJkNGFkNi4uN2MxZmNkMWIyYTcxZWE1NWFlNmE1Yzc0
OTc2NDJlYjUxOGM4ODc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0z
MSw4ICszMSw5IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVu
c2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmls
ZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAK
IEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDlkMTBkOTkyNDkxYmRiZDlkOGFhMWIzZTg3Yjg0NTAwMzI0Yzk5NDAuLjZkZDdiM2M5OGU2
OTRiYzI3NWRjMjUzMTU2ZTY3N2QzYzI1NDRjY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNi0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2Vs
ZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFj
Y2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIElmIHRoZSBudW1iZXIgb2YgdGhlIGZpbGUgZXh0ZW5zaW9ucycgdGl0
bGVzIGlzIHRocmVlLCBzZW5kIGFuIGFycmF5IG9mIAorICAgICAgICBhbGxJbWFnZUZpbGVFeHRl
bnNpb25zIHRvIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQuIEFsc28gc2V0IHRoZSBpbml0aWFs
CisgICAgICAgIHNlbGVjdGlvbiBvZiB0aGUgZmlsdGVyIHRvIHRoZSBpdGVtIG5hbWVkICJJbWFn
ZSBGaWxlcyIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0
aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6YWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczpd
KToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKToK
KyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpw
b3B1cFRhcmdldDpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0
ZWQuCisKIDIwMjAtMDYtMjEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrXSBOaWdodGx5IHJ1bm5lciBmYWlscyB0byBleHRyYWN0IHpp
cCBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQppbmRleCA1NzBhYWE1NGRiOTcwZTQ3NDI0ODk0ZjdiZDg3MWE3M2YyYzdkZDBl
Li5kYmY5ZDJhNjA0NDJjY2MyZDYyYjg3ODg2ZWIwY2FlMWZjMWE1ZmJjIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNzcs
MTUgKzc3LDE3IEBAIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2Jq
ZWN0IHsKIEBwcml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7CiAgICAgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKIH0KIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKIAotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6
KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5T
U3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKKy0gKGlkKWluaXRXaXRoT3BlblBh
bmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJh
eTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNp
b25zOiAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbEltYWdlRmlsZUV4dGVuc2lvbnMgewogICAg
IGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5QYW5lbCA9IG9wZW5Q
YW5lbDsKICAgICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVu
c2lvbnMgY29weV07CisgICAgICAgIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbEltYWdl
RmlsZUV4dGVuc2lvbnMgY29weV07CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTAw
LDYgKzEwMiwxMiBAQCAtICh2b2lkKXBvcHVwQWN0aW9uOihpZClzZW5kZXIgewogICAgICAgICAg
ICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxvd2VkRmls
ZUV4dGVuc2lvbnNdOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE1pZGRsZSBpdGVtLgorICAg
ICAgICBpZiAoIVtfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCisgICAgICAgICAgICBb
X29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2FsbEltYWdlRmlsZUV4
dGVuc2lvbnNdOwogICAgIH0KIH0KIApAQCAtNjQ0LDcgKzY1Miw3IEBAIC0gKG51bGxhYmxlIE5T
VmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZp
bGVFeHRlbnNpCiAgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwogICAgIFtidXR0
b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKICAgICBbYnV0dG9uIHNpemVU
b0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsKKyAgICBbYnV0dG9uIHNl
bGVjdEl0ZW1BdEluZGV4Olt0aXRsZXMgY291bnRdIDw9IDIgPyAwIDogMV07CiAgICAgW3BvcHVw
VGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07CiAgICAgCiAgICAgTlNWaWV3KiBmaWx0ZXJWaWV3
ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNl
XTsKQEAgLTY4NywxMCArNjk1LDEzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAKICAgICBv
cGVuUGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRp
cGxlU2VsZWN0aW9uOwogCisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVz
ID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOworICAgIE5TQXJyYXkg
KmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
czsKKyAgICBOU0FycmF5ICphbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc1RpdGxlcyBjb3VudF0gPT0gMiA/IEBbXSA6IHBhcmFtZXRlcnMuX2FsbEltYWdlRmls
ZUV4dGVuc2lvbnM7CisgICAgCiAgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVh
c2VdOwotICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxl
RXh0ZW5zaW9uczogcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICBfZmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxv
Y10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IGFs
bG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNpb25zOiBhbGxJbWFnZUZpbGVF
eHRlbnNpb25zXTsKIAotICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9
IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKICAgICBOU1ZpZXcgKmZp
bHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1Rp
dGxlcyBwb3B1cFRhcmdldDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CiAgICAgaWYgKGZp
bHRlclZpZXcpCiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0ZXJWaWV3
XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402456</attachid>
            <date>2020-06-22 02:41:03 -0700</date>
            <delta_ts>2020-06-22 13:57:00 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>213347_2.patch</filename>
            <type>text/plain</type>
            <size>33055</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggM2RkOTE0ZDAyM2MuLjVmODExMDlmMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIw
LTA2LTIyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVu
dCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55
IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5t
bToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAg
ICAgICAgKiB3dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9y
YXJ5RmlsZSk6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAg
KFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKwogMjAyMC0wNi0xOSAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIENoZWNr
IEdpZ2FjYWdlIHVzYWdlIGJlZm9yZSBsYXVuY2hpbmcgVk0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2
MGIzMmU0NmZjNC4uYmZlODQxMjk2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsxNDUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3Vs
ZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5n
JiBzdWZmaXggPSB7IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBv
cGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1p
c3Npb24gPSBGaWxlQWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMg
PSBmYWxzZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlJik7CiAvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIuLmJjNTAwNDkyY2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC05Myw3ICs5Myw3
IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJuIE5TSG9tZURpcmVjdG9y
eSgpOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRm
b3JtRmlsZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CiAgICAgcGxhdGZvcm1GaWxl
SGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIApAQCAtMTEzLDkgKzExMywxMyBA
QCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSAogICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZp
eC51dGY4KCk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgp
LCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhY
WFhYWCIsIDYpOworCisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIGV4dGVuc2lvbi4KKyAgICBDU3Ry
aW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFw
cGVuZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAgICAgdGVtcG9y
YXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOworICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3Rl
bXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAKLSAg
ICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7
CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQuLmZhMGI1MzFmZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIFZlY3RvcjxTdHJpbmc+
IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikK
ICAgICByZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVu
VGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUo
Z19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
dGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgp
LCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRl
eCBjOWY1MDE0MzZhYi4uYjNjMDQwMWI1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNl
KGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwg
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJp
bmcmKQogewogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBE
aXIgPSBnZXRlbnYoIlRNUERJUiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmlu
ZGV4IDY1OWRmZDUyNzI3Li5iNjMxNDk1NzNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVUZW1wb3Jh
cnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rpb24pCiAgICAg
cmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBT
dHJpbmcmKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggY2QxYjg5OWFhOTkuLmVhYTkwOTE1MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMjAtMDYtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbbWFjT1NdIFNlbGVjdGluZyBhIG5vbi1hY2NlcHRlZCBpbWFnZSBmb3Jt
YXQgdG8gYW4gPGlucHV0IHR5cGU9ImZpbGUiPiBlbGVtZW50IHNob3VsZCBjb252ZXJ0IGl0IHRv
IGFuIGFjY2VwdGVkIGZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1ODQ2ND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGUgdHlw
ZSBvZiB0aGUgc2VsZWN0ZWQgaW1hZ2UgaXMgbm90IG9uZSBvZiB0aGUgYWxsb3dlZCB0eXBlcywg
dGhlCisgICAgICAgIGltYWdlIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBmaXJzdCBkZXN0aW5h
dGlvbiBhbGxvd2VkIGltYWdlIHR5cGUgYW5kCisgICAgICAgIGl0IHdpbGwgYmUgd3JpdHRlbiB0
byBhIHRlbXBvcmFyeSBmaWxlLiBUaGlzIGZpbGUgaXMgYSByZXBsYWNlbWVudCB0byB0aGUKKyAg
ICAgICAgb3JpZ2luYWwgaW1hZ2UsIHNvIHRoZSB0eXBlLCB0aGUgc2l6ZSBhbmQgdGhlIGRhdGEg
d2lsbCBiZSByZWFkIGZyb20gaXQKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgc2VsZWN0ZWQgaW1h
Z2UuCisKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
Yjo6QmxvYik6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGU6OmRlc3RpbmF0aW9uVHlwZUZvckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZTo6bmFtZUZvckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y29tcHV0ZU5hbWVB
bmRDb250ZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjppc0Zp
bGVUeXBlUGFja2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpzaG91bGRSZXBsYWNlRmls
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjb21wdXRlTmFtZUFuZENvbnRl
bnRUeXBlRm9yUmVwbGFjZWRGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBmaWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVMaXN0Q3JlYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RD
cmVhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjphbGxvd2VkVHlwZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJDbGllbnQ6OmZp
bGVzQ2hvc2VuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpwYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOgorCiAyMDIw
LTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVu
dCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55
IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAK
aW5kZXggMzJhM2I2OTg5ZmEuLmI3NzI0ZTgxYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAK
QEAgLTcyLDkgKzcyLDEwIEBAIFVSTFJlZ2lzdHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5
KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLUJsb2I6OkJsb2IoVW5pbml0aWFsaXplZENv
bnRydWN0b3IsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKK0Jsb2I6OkJsb2IoVW5pbml0aWFs
aXplZENvbnRydWN0b3IsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGlu
YXRpb25UeXBlKQogICAgIDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3R5
cGUoV1RGTW92ZSh0eXBlKSkKKyAgICAsIG1fZGVzdGluYXRpb25UeXBlKFdURk1vdmUoZGVzdGlu
YXRpb25UeXBlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA2MTRkODA5ZDIwOC4u
YjIyNDc5NGU4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5CbG9iKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwoKSA/IG1fdHlwZSA6IG1fZGVzdGluYXRpb25UeXBl
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
MTE2LDcgKzExNiw3IEBAIHByb3RlY3RlZDoKICAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdC
bG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0aWFsaXplZENv
bnRydWN0b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoVW5pbml0aWFs
aXplZENvbnRydWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlKTsKKyAgICBCbG9iKFVuaW5pdGlh
bGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRp
b25UeXBlKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB7IGRlc2VyaWFs
aXphdGlvbkNvbnRydWN0b3IgfTsKICAgICBCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3Is
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CkBAIC0xMzEs
NiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIFN0cmlu
ZyBtX3R5cGU7CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25UeXBlOwogCiAgICAgbXV0YWJsZSBP
cHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcAppbmRleCA4ZDZlMzg3Mzg1NS4uYzVmNWYyMTg0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcApAQCAtNDYsMjAgKzQ2LDIxIEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRp
dmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2CiAgICAgcmV0
dXJuIGZpbGU7CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMpCiB7Ci0gICAgU3RyaW5nIG5hbWU7Ci0gICAgU3RyaW5n
IHR5cGU7Ci0gICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUs
IG5hbWUsIHR5cGUpOworICAgIFN0cmluZyB0eXBlID0gY29udGVudFR5cGVGb3JGaWxlKHBhdGgs
IG5hbWVPdmVycmlkZSk7CisgICAgU3RyaW5nIGRlc3RpbmF0aW9uVHlwZSA9IGRlc3RpbmF0aW9u
VHlwZUZvckZpbGUocGF0aCwgdHlwZSwgYWxsb3dlZFR5cGVzKTsKKyAgICBTdHJpbmcgbmFtZSA9
IG5hbWVGb3JGaWxlKHBhdGgsIG5hbWVPdmVycmlkZSwgZGVzdGluYXRpb25UeXBlKTsKIAogICAg
IGF1dG8gaW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxVUkwsIHBh
dGgsIHR5cGUpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGludGVy
bmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7
CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5h
bFVSTCwgcGF0aCwgbmFtZSwgdHlwZSwgZGVzdGluYXRpb25UeXBlKTsKKworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFN0cmluZyB7IHBhdGggfSwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShkZXN0aW5hdGlvblR5cGUpKSk7
CiB9CiAKLUZpbGU6OkZpbGUoVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRo
LCBTdHJpbmcmJiBuYW1lKQotICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3RvciwgV1RG
TW92ZSh1cmwpLCBXVEZNb3ZlKHR5cGUpKQorRmlsZTo6RmlsZShVUkwmJiB1cmwsIFN0cmluZyYm
IHBhdGgsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRlc3RpbmF0aW9u
VHlwZSkKKyAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIFdURk1vdmUodXJsKSwg
V1RGTW92ZSh0eXBlKSwgV1RGTW92ZShkZXN0aW5hdGlvblR5cGUpKQogICAgICwgbV9wYXRoKFdU
Rk1vdmUocGF0aCkpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsKQEAgLTEyMywzMiAr
MTI0LDQ4IEBAIGludDY0X3QgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKICAgICByZXR1cm4g
V1RGOjp0aW1lQ2xpcChyZXN1bHQpOwogfQogCi12b2lkIEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29u
dGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwg
U3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQorU3Ry
aW5nIEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbmFtZU92ZXJyaWRlKQogewotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAg
IGlmIChzaG91bGRSZXBsYWNlRmlsZShwYXRoKSkgewotICAgICAgICBjb21wdXRlTmFtZUFuZENv
bnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKHBhdGgsIG5hbWVPdmVycmlkZSwgZWZmZWN0aXZlTmFt
ZSwgZWZmZWN0aXZlQ29udGVudFR5cGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0gICAgZWZmZWN0aXZlTmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVt
OjpwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7Ci0gICAgc2l6ZV90IGluZGV4
ID0gZWZmZWN0aXZlTmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIFN0cmluZyBuYW1lID0gbmFt
ZU92ZXJyaWRlLmlzRW1wdHkoKSA/IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSA6
IG5hbWVPdmVycmlkZTsKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgc2l6ZV90IGluZGV4ID0g
bmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgewotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJmVmZmVjdGl2ZUNvbnRlbnRUeXBlLCAmZWZm
ZWN0aXZlTmFtZSwgaW5kZXhdIHsKLSAgICAgICAgICAgIGVmZmVjdGl2ZUNvbnRlbnRUeXBlID0g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZWZmZWN0aXZlTmFtZS5z
dWJzdHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWRBbmRXYWl0KFsmbWltZVR5cGUsICZuYW1lLCBpbmRleF0geworICAgICAgICAgICAgbWlt
ZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihuYW1lLnN1
YnN0cmluZyhpbmRleCArIDEpKS5pc29sYXRlZENvcHkoKTsKICAgICAgICAgfSk7CiAgICAgfQor
ICAgIHJldHVybiBtaW1lVHlwZTsKIH0KIAotU3RyaW5nIEZpbGU6OmNvbnRlbnRUeXBlRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCitTdHJpbmcgRmlsZTo6ZGVzdGluYXRpb25UeXBlRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkVHlwZXMpCiB7Ci0gICAgU3RyaW5nIG5hbWU7Ci0gICAgU3RyaW5nIHR5
cGU7Ci0gICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBTdHJpbmcoKSwgbmFtZSwg
dHlwZSk7Ci0KKyNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKKyAgICBpZiAoaXNGaWxlVHlw
ZVBhY2thZ2UocGF0aCkpCisgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24vemlwIl9zOworCisg
ICAgaWYgKGFsbG93ZWRUeXBlcy5jb250YWlucyh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHR5cGU7
CisgICAgCisgICAgZm9yIChhdXRvJiBhbGxvd2VkVHlwZSA6IGFsbG93ZWRUeXBlcykgeworICAg
ICAgICBpZiAoYWxsb3dlZFR5cGUgPT0gImltYWdlLyoiKQorICAgICAgICAgICAgcmV0dXJuIHR5
cGU7CisgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5
cGVGb3JFbmNvZGluZyhhbGxvd2VkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gYWxsb3dlZFR5
cGU7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKK1N0cmluZyBGaWxlOjpu
YW1lRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRl
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG5h
bWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkg
OiBuYW1lT3ZlcnJpZGU7CisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgaWYgKGRl
c3RpbmF0aW9uVHlwZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQorICAgICAgICBuYW1lID0gbWFr
ZVN0cmluZyhuYW1lLCAiLnppcCJfcyk7CisjZW5kaWYKKyAgICByZXR1cm4gbmFtZTsKK30KKwog
Ym9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzRGlyZWN0b3J5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMmY5MzhiNDIwZC4uMGZhYjNhOWZjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
Ly8gQ3JlYXRlIGEgZmlsZSB3aXRoIGFuIG9wdGlvbmFsIG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0
aG9yICh2aWEgRmlsZS5uYW1lIGFuZCBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRp
ZmZlcnMgZnJvbSB0aGUgb25lIHByb3ZpZGVkIGluIHRoZSBwYXRoLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJp
ZGUgPSB7IH0sIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzID0geyB9KTsKIAog
ICAgIC8vIENyZWF0ZSBhIEZpbGUgdXNpbmcgdGhlICduZXcgRmlsZScgY29uc3RydWN0b3IuCiAg
ICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9i
UGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYg
cHJvcGVydHlCYWcpCkBAIC03NiwyOCArNzYsMjUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGludDY0X3QgbGFzdE1vZGlmaWVkKCkgY29uc3Q7IC8vIE51bWJlciBvZiBtaWxsaXNlY29u
ZHMgc2luY2UgRXBvY2guCiAgICAgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmll
ZE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGU7IH0g
Ly8gTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBFcG9jaC4KIAotICAgIHN0YXRpYyBTdHJp
bmcgY29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgc3RhdGljIFN0
cmluZyBjb250ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWVPdmVycmlkZSA9IHsgfSk7CisgICAgc3RhdGljIFN0cmluZyBkZXN0aW5hdGlvblR5cGVG
b3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcyA9IHsgfSk7CisgICAgc3RhdGljIFN0cmlu
ZyBuYW1lRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJy
aWRlID0geyB9LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKICNpZiBF
TkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXBsYWNlRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHN0YXRpYyBib29sIGlzRmlsZVR5cGVQYWNrYWdl
KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCk7Ci0gICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYg
cGF0aCwgU3RyaW5nJiYgbmFtZSk7CisgICAgRmlsZShVUkwmJiwgU3RyaW5nJiYgcGF0aCwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsKICAg
ICBGaWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKICAgICBGaWxlKGNvbnN0IEJs
b2ImLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAKICAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkKTsK
IAotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1l
LCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFj
ZWRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0
cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7Ci0jZW5k
aWYKLQogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fcmVsYXRpdmVQYXRoOwogICAg
IFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCmluZGV4IDY2NGY5
YTUzNjEzLi4xMDU0OThiZWNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAg
LTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZpbGU6OnNob3Vs
ZFJlcGxhY2VGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZTo6aXNGaWxlVHlwZVBh
Y2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTcsMTMgKzU3LDYgQEAgYm9vbCBGaWxlOjpzaG91bGRS
ZXBsYWNlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIFVUVHlwZUNvbmZvcm1z
VG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXV0aSwga1VUVHlwZVBhY2thZ2UpOwogfQogCi12b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVO
YW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQotewotICAgIEFTU0VSVCghRmlsZVN5
c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3Rpbmcg
dG8gZ2V0IGEgcGF0aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmll
cy4KLSAgICBlZmZlY3RpdmVDb250ZW50VHlwZSA9ICJhcHBsaWNhdGlvbi96aXAiX3M7Ci0gICAg
ZWZmZWN0aXZlTmFtZSA9IG1ha2VTdHJpbmcoKG5hbWVPdmVycmlkZS5pc051bGwoKSA/IEZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSA6IG5hbWVPdmVycmlkZSksICIuemlwIl9zKTsK
LX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA1ZTFk
NGMwMGE5Yy4uMTNjODYyNzk3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTUgKzY0LDE1IEBAIHN0YXRpYyBUaHJl
YWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4gKm1h
cDsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkK
IHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgp
LCBjb250ZW50VHlwZSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JV
UkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoLCBuYW1lLCBjb250ZW50
VHlwZSwgZGVzdGluYXRpb25UeXBlKSwgY29udGVudFR5cGUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBw
YXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBw
YXRoLmlzb2xhdGVkQ29weSgpLCBuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgY29udGVudFR5
cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKSwgZGVzdGluYXRpb25UeXBlID0gZGVzdGlu
YXRpb25UeXBlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoLCBu
YW1lLCBkZXN0aW5hdGlvblR5cGUpLCBjb250ZW50VHlwZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggYTlj
NzlmZTIyOTIuLjBlMGY2ZjNiZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1Ro
cmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
RmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25UeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVj
dG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1Li45MGVhNmQwNTFk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC00MDQsNyArNDA0LDcg
QEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxlcyhSZWZQdHI8RmlsZUxpc3Q+JiYgZmlsZXMs
IFJlcXVlc3RJY29uIHNob3VsZFJlcXVlc3QKICAgICBwcm90ZWN0ZWRJbnB1dEVsZW1lbnQtPnNl
dENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGZhbHNlKTsKIH0KIAotdm9p
ZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mIHBhdGhzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIEljb24qIGljb24pCit2
b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZp
bGVJbmZvPiYgcGF0aHMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzLCBjb25z
dCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIEljb24qIGljb24pCiB7CiAgICAgaWYgKCFkaXNwbGF5
U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgbV9kaXNwbGF5U3RyaW5nID0gZGlzcGxheVN0cmlu
ZzsKQEAgLTQxMyw4ICs0MTMsOCBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0CiAgICAgICAgIG1f
ZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5jYW5jZWwoKTsKIAogICAgIGlmICghYWxsb3dzRGly
ZWN0b3JpZXMoKSkgewotICAgICAgICBhdXRvIGZpbGVzID0gcGF0aHMubWFwKFtdKGF1dG8mIGZp
bGVJbmZvKSB7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJbmZvLnBhdGgs
IGZpbGVJbmZvLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChb
JmFsbG93ZWRUeXBlc10oYXV0byYgZmlsZUluZm8pIHsKKyAgICAgICAgICAgIHJldHVybiBGaWxl
OjpjcmVhdGUoZmlsZUluZm8ucGF0aCwgZmlsZUluZm8uZGlzcGxheU5hbWUsIGFsbG93ZWRUeXBl
cyk7CiAgICAgICAgIH0pOwogICAgICAgICBkaWRDcmVhdGVGaWxlTGlzdChGaWxlTGlzdDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZXMpKSwgaWNvbik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggMDhmNjIxZmU1YzMuLmQzNDkzMWY2NTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAg
U3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGZpbGVzQ2hv
c2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmluZyYgZGlz
cGxheVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSBmaW5hbDsKKyAgICB2b2lkIGZpbGVz
Q2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgYWxsb3dlZFR5cGVzID0geyB9LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcg
PSB7IH0sIEljb24qID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAvLyBGaWxlSWNvbkxvYWRlckNs
aWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2b2lkIGljb25Mb2FkZWQoUmVmUHRyPEljb24+JiYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmluZGV4IGFjN2Y1
ZDQ3YmNmLi41NDE5YjhhZDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2Vy
LmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZp
bGVDaG9vc2VyLmgiCiAKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRmlsZUNob29zZXI6OkZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQpAQCAtNDQsNiAr
NDYsMTkgQEAgUmVmPEZpbGVDaG9vc2VyPiBGaWxlQ2hvb3Nlcjo6Y3JlYXRlKEZpbGVDaG9vc2Vy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IEZpbGVDaG9vc2UKIAogRmlsZUNob29zZXI6On5GaWxlQ2hv
b3NlcigpID0gZGVmYXVsdDsKIAorSGFzaFNldDxTdHJpbmc+IEZpbGVDaG9vc2VyOjphbGxvd2Vk
VHlwZXMoKSBjb25zdAoreworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXM7CisgICAg
Zm9yIChhdXRvJiB0eXBlIDogbV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAgIGFs
bG93ZWRUeXBlcy5hZGQodHlwZSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3NldHRp
bmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IE1JTUVUeXBl
UmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbi5zdGFydHNXaXRoKCcu
JykgPyBleHRlbnNpb24ucmlnaHQoZXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSkgOiBleHRlbnNpb24p
OworICAgICAgICBpZiAoIXR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWxsb3dlZFR5cGVz
LmFkZCh0eXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbG93ZWRUeXBlczsKK30KKwogdm9pZCBG
aWxlQ2hvb3Nlcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTcw
LDcgKzg1LDcgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcykKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7
CiAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBw
ZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWUpKTsKLSAgICBtX2NsaWVudC0+ZmlsZXND
aG9zZW4oZmlsZXMpOworICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgYWxsb3dlZFR5
cGVzKCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTg5LDcgKzEwNCw3IEBA
IHZvaWQgRmlsZUNob29zZXI6OmNob29zZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcywgY29uc3QgU3RyaW5nCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
IGZpbGVzOwogICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCiAgICAgICAgIGZp
bGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7Ci0gICAgbV9jbGllbnQt
PmZpbGVzQ2hvc2VuKGZpbGVzLCBkaXNwbGF5U3RyaW5nLCBpY29uKTsKKyAgICBtX2NsaWVudC0+
ZmlsZXNDaG9zZW4oZmlsZXMsIHsgfSwgZGlzcGxheVN0cmluZywgaWNvbik7CiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0MzguLjdk
OTE5ZWI5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NzYsNyArNzcsNyBAQCBjbGFzcyBGaWxlQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RmlsZUNob29zZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxwdHIpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+Jiwg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYg
ZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSA9IDA7CiB9OwogCiBjbGFzcyBG
aWxlQ2hvb3NlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVDaG9vc2VyPiB7CkBAIC0xMDIsNiAr
MTAzLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGaWxlQ2hvb3NlcihGaWxlQ2hvb3NlckNs
aWVudCosIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIAorICAgIEhhc2hTZXQ8U3RyaW5n
PiBhbGxvd2VkVHlwZXMoKSBjb25zdDsKKwogICAgIEZpbGVDaG9vc2VyQ2xpZW50KiBtX2NsaWVu
dCB7IG51bGxwdHIgfTsKICAgICBGaWxlQ2hvb3NlclNldHRpbmdzIG1fc2V0dGluZ3M7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuY3BwCmluZGV4IDVhYmZkNzVjYjQ5Li5hNzI2ZTcyNTU3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlLmNwcApAQCAtMzIsMTUgKzMyLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5n
JiBwYXRoKQorQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUpCiAgICAgOiBtX3BhdGgocGF0aCkKKyAgICAs
IG1fbmFtZShuYW1lKQorICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX2Rlc3RpbmF0aW9uVHlw
ZShkZXN0aW5hdGlvblR5cGUpCiB7CiB9CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JE
YXRhRmlsZVJlZmVyZW5jZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAg
aWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKKyAgICBpZiAoIW1fcmVwbGFjZW1lbnRQ
YXRoLmlzTnVsbCgpICYmIG1fZGVzdGluYXRpb25UeXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3Mp
CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2Vu
ZGlmCiB9CkBAIC00OCw3ICs1MSw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRh
RmlsZVJlZmVyZW5jZSgpCiBjb25zdCBTdHJpbmcmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0
aCgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFjZW1l
bnRTaG91bGRCZUdlbmVyYXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRl
ZCgpKQogICAgICAgICBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogCiAgICAgaWYgKCFtX3Jl
cGxhY2VtZW50UGF0aC5pc051bGwoKSkKQEAgLTYxLDcgKzY0LDcgQEAgY29uc3QgU3RyaW5nJiBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6c2l6ZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0g
ICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCkKKyAgICBpZiAocmVwbGFjZW1l
bnRTaG91bGRCZUdlbmVyYXRlZCgpKQogICAgICAgICBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgp
OwogI2VuZGlmCiAKQEAgLTczLDcgKzc2LDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkKICNpZiBFTkFCTEUoRklM
RV9SRVBMQUNFTUVOVCkKICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNh
dGlvbnMgZm9yIGdlbmVyYXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAg
ICAgLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZp
bGUgaGFuZGxpbmcgLSBGaWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5k
ZXJseWluZyBmaWxlcyBjaGFuZ2UuCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCisgICAgaWYgKCFtX2Rlc3RpbmF0
aW9uVHlwZS5pc051bGwoKSB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlm
aWNhdGlvblRpbWU7CkBAIC04Niw3ICs4OSw4IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
OjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpCiAgICAgLy8gdGhlIGNvc3Qgb2YgdHJhY2tp
bmcgZmlsZSBtb2RpZmljYXRpb25zLgogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0g
ICAgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkID0gRmlsZTo6c2hvdWxkUmVwbGFjZUZp
bGUobV9wYXRoKTsKKyAgICBpZiAoRmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UobV9wYXRoKSkKKyAg
ICAgICAgbV9kZXN0aW5hdGlvblR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwogI2VuZGlmCiAK
ICAgICAvLyBGSVhNRTogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0
ZW4gZm9yIGZpbGUgc3lzdGVtIG9iamVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4K
QEAgLTk3LDcgKzEwMSw3IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNr
aW5nTW9kaWZpY2F0aW9ucygpCiAgICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSBtZXRh
ZGF0YS52YWx1ZSgpLm1vZGlmaWNhdGlvblRpbWU7CiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKLSAgICBpZiAobV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChy
ZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaAppbmRleCA2NTg4MjlkMDdmYy4uYmRkMWVmODI5NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgQmxvYkRhdGFGaWxlUmVmZXJlbmNlX2gKLSNkZWZpbmUgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL01hcmthYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDkgKzM0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lID0geyB9LCBjb25zdCBTdHJpbmcm
IHR5cGUgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlID0geyB9KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBh
dGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpOwpAQCAtNTIsMjIgKzUxLDIzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lID0geyB9LCBj
b25zdCBTdHJpbmcmIHR5cGUgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBlID0g
eyB9KTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKKyAgICBib29s
IHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSBjb25zdDsKICAgICB2b2lkIGdlbmVyYXRl
UmVwbGFjZW1lbnRGaWxlKCk7CiAjZW5kaWYKIAogICAgIFN0cmluZyBtX3BhdGg7CisgICAgU3Ry
aW5nIG1fbmFtZTsKKyAgICBTdHJpbmcgbV90eXBlOworICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9u
VHlwZTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBTdHJpbmcgbV9yZXBsYWNl
bWVudFBhdGg7Ci0gICAgYm9vbCBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgeyBmYWxz
ZSB9OwogI2VuZGlmCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fc2l6ZSB7IDAgfTsKICAgICBN
YXJrYWJsZTxXYWxsVGltZSwgV2FsbFRpbWU6Ok1hcmthYmxlVHJhaXRzPiBtX2V4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZTsKIH07CiAKIH0KLQotI2VuZGlmIC8vIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KaW5kZXggNWVjNzc3YTg2OTkuLjlkNGZh
YjRjOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9C
bG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCkBAIC0yOCwyNSArMjgsNjYg
QEAKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogCisjaW1wb3J0ICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCisjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgPHd0Zi9GaWxlTWV0
YWRhdGEuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3R5cGUgIT0gbV9kZXN0aW5hdGlvblR5cGUgJiYgbV9yZXBsYWNlbWVudFBhdGguaXNOdWxs
KCk7Cit9CisKIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpnZW5lcmF0ZVJlcGxhY2VtZW50
RmlsZSgpCiB7Ci0gICAgQVNTRVJUKG1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKTsKLSAgICBB
U1NFUlQobV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKTsKKyAgICBBU1NFUlQocmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpKTsKIAogICAgIHByZXBhcmVGb3JGaWxlQWNjZXNzKCk7
CiAKLSAgICBhdXRvIGdlbmVyYXRlZEZpbGUgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3Jhcnla
aXBBcmNoaXZlKG1fcGF0aCk7Ci0gICAgaWYgKCFnZW5lcmF0ZWRGaWxlLmlzTnVsbCgpKQotICAg
ICAgICBtX3JlcGxhY2VtZW50UGF0aCA9IFdURk1vdmUoZ2VuZXJhdGVkRmlsZSk7CisgICAgU3Ry
aW5nIGdlbmVyYXRlZEZpbGU7CisgICAgaWYgKG1fZGVzdGluYXRpb25UeXBlID09ICJhcHBsaWNh
dGlvbi96aXAiX3MpCisgICAgICAgIGdlbmVyYXRlZEZpbGUgPSBGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlaaXBBcmNoaXZlKG1fcGF0aCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgIT0gbV9kZXN0aW5hdGlvblR5cGUpOworICAgICAgICBBU1NFUlQobV9kZXN0aW5hdGlv
blR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIl9zKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBp
bWFnZSBzb3VyY2UuCisgICAgICAgIGF1dG8gc291cmNlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgICAgIGF1
dG8gc291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChzb3VyY2VVUkwu
Z2V0KCksIE5VTEwpKTsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBu
YW1lIHByZWZpeCBhbmQgZmlsZSBleHRlbnNpb24uCisgICAgICAgIGF1dG8gY29tcG9uZW50cyA9
IG1fbmFtZS5zcGxpdCgnLicpOworICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUobV9kZXN0aW5hdGlvblR5cGUpOworICAg
ICAgICBhdXRvIHByZWZpeCA9IG1ha2VTdHJpbmcoY29tcG9uZW50cy5maXJzdCgpLCAiXyJfcyk7
CisgICAgICAgIGF1dG8gc3VmZml4ID0gbWFrZVN0cmluZygiLiJfcywgZXh0ZW5zaW9ucy5maXJz
dCgpKTsKKworICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KKyAgICAgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICAgICAg
Z2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKHByZWZpeCwgcGxh
dGZvcm1GaWxlSGFuZGxlLCBzdWZmaXgpOwogCi0gICAgbV9yZXBsYWNlbWVudFNob3VsZEJlR2Vu
ZXJhdGVkID0gZmFsc2U7Ci0gICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkgewor
ICAgICAgICAvLyBDcmVhdGUgdGhlIGRhdGEgY29uc3VtZXIuCisgICAgICAgIENHRGF0YUNvbnN1
bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgW10odm9pZCAqaW5mbywgY29uc3Qgdm9pZCogYnVm
ZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7CisgICAgICAgICAgICBhdXRvIHBsYXRmb3Jt
RmlsZUhhbmRsZSA9ICpzdGF0aWNfY2FzdDxGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUq
PihpbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShwbGF0
Zm9ybUZpbGVIYW5kbGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBjb3VudCk7
CisgICAgICAgIH0sIE5VTEwgfTsKKworICAgICAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihD
R0RhdGFDb25zdW1lckNyZWF0ZSgmcGxhdGZvcm1GaWxlSGFuZGxlLCAmY2FsbGJhY2tzKSk7CisK
KyAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSBkZXN0aW5hdGlvbi4KKyAgICAgICAgYXV0byB1
dGkgPSBVVElGcm9tTUlNRVR5cGUobV9kZXN0aW5hdGlvblR5cGUpOworICAgICAgICBhdXRvIGRl
c3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YUNvbnN1
bWVyKGNvbnN1bWVyLmdldCgpLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMSwgTlVMTCkp
OworCisgICAgICAgIC8vIFdyaXRlIHRoZSBpbWFnZSBzb3VyY2UgdG8gdGhlIGltYWdlIGRlc3Rp
bmF0aW9uLgorICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3VyY2UoZGVz
dGluYXRpb24uZ2V0KCksIHNvdXJjZS5nZXQoKSwgMCwgbnVsbHB0cik7CisgICAgICAgIENHSW1h
Z2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKHBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgfQorCisgICAgaWYgKCFn
ZW5lcmF0ZWRGaWxlLmlzTnVsbCgpKSB7CisgICAgICAgIG1fcmVwbGFjZW1lbnRQYXRoID0gV1RG
TW92ZShnZW5lcmF0ZWRGaWxlKTsKICAgICAgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lz
dGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0aCkpCiAg
ICAgICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402510</attachid>
            <date>2020-06-22 13:57:02 -0700</date>
            <delta_ts>2020-06-22 15:13:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200622135701.patch</filename>
            <type>text/plain</type>
            <size>62059</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkZDkxNGQwMjNjODc1MjlmMzE2NWUw
YTJjZmVjMDZkYTRmODIyZmYuLjc4YmJhNzA2ZTQ3NGE3ZDhkMWEyNDEwOWE1NTc0Njg0YWY1MjNh
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNr
ZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMg
d2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBm
b3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI0ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGFuIG9wdGlvbmFsIHN1ZmZp
eCBpbiB0aGUgbmFtZSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUgbmFtZS4gVGhpcworICAgICAgICBt
YWtlcyBpdCBlYXNpZXIgdG8gdmVyaWZ5IHRoZSBjb252ZXJzaW9uIG9mIHRoZSBpbWFnZSB0byBh
IGRpZmZlcmVudCB0eXBlCisgICAgICAgIGJ5IHNldHRpbmcgdGhlIHN1ZmZpeCB0byBiZSB0aGUg
ZXh0ZW5zaW9uIG9mIHRoZSBkZXN0aW5hdGlvbiB0eXBlLgorCisgICAgICAgICogd3RmL0ZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxl
KToKKyAgICAgICAgKiB3dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5U
ZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoK
KyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAg
ICAgKiB3dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorCiAyMDIwLTA2LTE5ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQ2hlY2sgR2lnYWNhZ2UgdXNhZ2Ug
YmVmb3JlIGxhdW5jaGluZyBWTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRjODQ2MWNmMDk1ZjQzNDYxNjQ1ZTEw
NjQzZjJkZGEyMDMxOTM3MTMuLjUzZmViYTgwOWMwOGIxY2U2MTk4YTNlZTE1NGU4MjdlMGY0ZGJm
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAyMC0wNi0yMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU2VsZWN0
aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+
IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIElmIHRoZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBpbWFnZSBpcyBu
b3Qgb25lIG9mIHRoZSBhbGxvd2VkIHR5cGVzLCB0aGUKKyAgICAgICAgaW1hZ2Ugd2lsbCBiZSBj
b252ZXJ0ZWQgdG8gdGhlIGZpcnN0IGRlc3RpbmF0aW9uIGFsbG93ZWQgaW1hZ2UgdHlwZSBhbmQK
KyAgICAgICAgaXQgd2lsbCBiZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUuIFRoaXMgZmls
ZSBpcyBhIHJlcGxhY2VtZW50IHRvIHRoZQorICAgICAgICBvcmlnaW5hbCBpbWFnZSwgc28gdGhl
IHR5cGUsIHRoZSBzaXplIGFuZCB0aGUgZGF0YSB3aWxsIGJlIHJlYWQgZnJvbSBpdAorICAgICAg
ICBpbnN0ZWFkIG9mIHRoZSBzZWxlY3RlZCBpbWFnZS4KKworICAgICAgICAqIGVuLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYjo6dHlwZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlOjpGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpkZXN0aW5hdGlvblR5cGVGb3JGaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6Om5hbWVGb3JGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6
OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGZpbGVhcGkv
RmlsZS5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6c2hv
dWxkUmVwbGFjZUZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y29tcHV0
ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZSk6IERlbGV0ZWQuCisgICAgICAgICog
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAqIGZp
bGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6
CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmFsbG93ZWRUeXBl
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZU1lZGlhRmlsZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nl
ckNsaWVudDo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpyZXBsYWNlbWVudFNob3VsZEJlR2Vu
ZXJhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUpOgorCisyMDIwLTA2LTIxICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUg
UGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZp
bGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1
dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAgICAgICBBZGQgbG9jYWxpemFi
bGUgc3RyaW5ncyBmb3IgdGhlIE9wZW5QYW5lbCBmaWx0ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5Lmg6CisgICAgICAgIEV4cG9ydCBhIE1JTUVUeXBlUmVnaXN0cnkg
QVBJIHRvIGJlIHJlZmVyZW5jZWQgZnJvbSBXZWJLaXQgcHJvamVjdC4KKworCiAyMDIwLTA2LTIx
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IG11Y2gg
b2YgdGhlIFNWRyBzdHJpbmcgcGFyc2luZyBjb2RlIHRvIHVzZSBPcHRpb25hbCBiYXNlZCByZXR1
cm4gdmFsdWVzIHJhdGhlciB0aGFuIG91dC1wYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwMjRiMTI0
NjFhNWM2MmQwMzM0YmNkOWYxMGQ1NWQ0ODQzMjFlODAuLmE3ZjU2OGM5MjEwYWRkYzIzNjEwMjkx
NjcxNjEyODMxN2E3OTFjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMjEg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93
IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhl
ICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJZiBvbmUgb2YgdGhlIG1pbWUgdHlwZXMgaW4gdGhlICJhY2Nl
cHQiIGF0dHJpYnV0ZSBpcyBhbiBhbGxvd2VkIGRlc3RlbmF0aW9uCisgICAgICAgIGltYWdlIGZv
cm1hdCwgYWRkIGEgbmV3IGl0ZW0gaW4gdGhlIE9wZW5QYW5lbCBmaWx0ZXIgbmFtZWQgIkltYWdl
IEZpbGVzIi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLm1tOgorICAgICAgICAobWltZVR5cGVGb3JFeHRlbnNpb24pOgorICAgICAgICAoLVtX
S09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbEltYWdlRmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAg
KC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXNdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZh
dGUuaDoKKwogMjAyMC0wNi0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWJLaXQgZmFpbHMgdG8gbGVhdmUgYXVkaW8gcm91dGluZyBhcmJpdHJhdGlvbiBk
dXJpbmcgbmF2aWdhdGlvbiwgY2xvc2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2MGIzMmU0NmZj
NDI5MDgyM2E2MjliZGEzZWQyNzJhODNiNmFiNGE2Li5iZmU4NDEyOTZkM2M2ZDUyYThhOGFmMTU1
ZTZlOGVlOGY5MTIwMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1G
aWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJl
Zml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4
ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0g
RmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2Up
OwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYp
OwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2Ev
RmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGFjZWRmNWZkZDFiMmU3NjgyNGZmYTg5ZDRkY2RmNDBh
YzFiMWI4N2QuLmJjNTAwNDkyY2FkMzdmYTFhMTcwMzA1NjhhOWE4OWUzYWMyZTBmYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTkzLDcgKzkzLDcgQEAgU3Ry
aW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKICAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CiB9
CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZv
cm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxl
SGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUg
PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCkBAIC0xMTMsOSArMTEzLDEzIEBAIFN0cmlu
ZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiBwbGF0Zm9ybUZpbGVICiAgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0Zjgo
KTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZp
eFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwg
Nik7CisKKyAgICAvLyBBcHBlbmQgdGhlIGZpbGUgZXh0ZW5zaW9uLgorICAgIENTdHJpbmcgc3Vm
Zml4VXRmOCA9IHN1ZmZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHN1
ZmZpeFV0ZjguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxl
UGF0aC5hcHBlbmQoJ1wwJyk7CisgICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gbWtzdGVtcHModGVt
cG9yYXJ5RmlsZVBhdGguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgpKTsKIAotICAgIHBsYXRm
b3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKICAgICBp
ZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNw
cAppbmRleCBlNGFiMDBmYmRhZDlmZmI3MWI1MDIyY2NlYzQxYzEwYjVjYTBmNWRmLi5mYTBiNTMx
ZmUxMGZmNzRlYmFiODY1ZjNjYTA5MTVkYTFkOTU3NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIFZlY3RvcjxTdHJpbmc+IGxpc3RE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKICAgICBy
ZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJk
dXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBh
dGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBudWxs
cHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBjOWY1
MDE0MzZhYmNjODA5NGU4NDE0ODBkMjFmZTM2YTQ3MWU4MWZmLi5iM2MwNDAxYjUwNmZkY2UzMjMy
ZWQ2ZmVmYmJiZjBlNTJkMTAwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1Q
T1NJWC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25z
dCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikK
IHsKICAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CiAgICAgY29uc3QgY2hhciogdG1wRGlyID0g
Z2V0ZW52KCJUTVBESVIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2
NTlkZmQ1MjcyN2RjOWVmNjk5YjdmOTI0ZDVkMmU3MmQ4NGUwYWU3Li5iNjMxNDk1NzNhNDg0MWZl
NjAwMWVlZmFmZGQwMDkyY2ZjNzQxYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBh
dGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikKICAgICByZXR1
cm4gcHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3Ry
aW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2Vi
Q29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IDE2NDdkMjNmZmFhY2ZkMzhk
NDUxMmIzZmY0NmI5MDA0ZGQ5OTNmZTUuLmQzNjBhMDM4MDJkODJlZTljNDkxZDliNTQ1YWE2M2Y0
ZDgyNzMxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
cwpAQCAtNjEsNiArNjEsMTUgQEAKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2Vi
Q3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlwdG8gTWFzdGVyIEtl
eSIgPSAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiOwogCisvKiBBdWRpbyBmb3JtYXQgdHlwZSBp
biBmaWxlIHBpY2tlciAqLworIiVAIGF1ZGlvIiA9ICIlQCBhdWRpbyI7CisKKy8qIEltYWdlIGZv
cm1hdCB0eXBlIGluIGZpbGUgcGlja2VyICovCisiJUAgaW1hZ2UiID0gIiVAIGltYWdlIjsKKwor
LyogVmlkZW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIgKi8KKyIlQCB2aWRlbyIgPSAiJUAg
dmlkZW8iOworCiAvKiBMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVj
dGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyAq
LwogIiVkIGZpbGVzIiA9ICIlZCBmaWxlcyI7CiAKQEAgLTExNSw2ICsxMjQsOSBAQAogLyogVW5k
byBhY3Rpb24gbmFtZSAqLwogIkFsaWduIFJpZ2h0IChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiQWxp
Z24gUmlnaHQiOwogCisvKiBBbGwgRmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisiQWxsIEZpbGVz
IiA9ICJBbGwgRmlsZXMiOworCiAvKiBCdXR0b24gdGl0bGUgaW4gU3RvcmFnZSBBY2Nlc3MgQVBJ
IHByb21wdCAqLwogIkFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFj
Y2VzcykiID0gIkFsbG93IjsKIApAQCAtMTM2LDYgKzE0OCw5IEBACiAvKiBXS0Vycm9yQXR0cmli
dXRlZFN0cmluZ0NvbnRlbnRGYWlsZWRUb0xvYWQgZGVzY3JpcHRpb24gKi8KICJBdHRyaWJ1dGVk
IHN0cmluZyBjb250ZW50IGZhaWxlZCB0byBsb2FkIiA9ICJBdHRyaWJ1dGVkIHN0cmluZyBjb250
ZW50IGZhaWxlZCB0byBsb2FkIjsKIAorLyogQXVkaW8gRmlsZXMgaW4gZmlsZXIgcGlja2VyICov
CisiQXVkaW8gRmlsZXMiID0gIkF1ZGlvIEZpbGVzIjsKKwogLyogTWVudSBpdGVtIGxhYmVsIGZv
ciBhdXRvbWF0aWMgdHJhY2sgc2VsZWN0aW9uIGJlaGF2aW9yICovCiAiQXV0byAoUmVjb21tZW5k
ZWQpIiA9ICJBdXRvIChSZWNvbW1lbmRlZCkiOwogCkBAIC0yNjUsNiArMjgwLDkgQEAKIC8qIFVu
ZG8gYWN0aW9uIG5hbWUgKi8KICJDcmVhdGUgTGluayAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkNy
ZWF0ZSBMaW5rIjsKIAorLyogQ3VzdG9tIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIkN1c3Rv
bSBGaWxlcyIgPSAiQ3VzdG9tIEZpbGVzIjsKKwogLyogQ3V0IGNvbnRleHQgbWVudSBpdGVtICov
CiAiQ3V0IiA9ICJDdXQiOwogCkBAIC00MDksNiArNDI3LDkgQEAKIC8qIElnbm9yZSBTcGVsbGlu
ZyBjb250ZXh0IG1lbnUgaXRlbSAqLwogIklnbm9yZSBTcGVsbGluZyIgPSAiSWdub3JlIFNwZWxs
aW5nIjsKIAorLyogSW1hZ2UgRmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisiSW1hZ2UgRmlsZXMi
ID0gIkltYWdlIEZpbGVzIjsKKwogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIkluZGVudCAoVW5k
byBhY3Rpb24gbmFtZSkiID0gIkluZGVudCI7CiAKQEAgLTk5MSw2ICsxMDEyLDkgQEAKIC8qIFZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hl
ciB0aGFuIGFsbG93ZWQgbWF4aW11bSAqLwogIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVx
dWFsIHRvICVzIiA9ICJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyI7CiAK
Ky8qIFZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIlZpZGVvIEZpbGVzIiA9ICJWaWRl
byBGaWxlcyI7CisKIC8qIFBoaXNoaW5nIHdhcm5pbmcgZGVzY3JpcHRpb24gKi8KICJXYXJuaW5n
cyBhcmUgc2hvd24gZm9yIHdlYnNpdGVzIHRoYXQgaGF2ZSBiZWVuIHJlcG9ydGVkIGFzIGRlY2Vw
dGl2ZS4gRGVjZXB0aXZlIHdlYnNpdGVzIHRyeSB0byB0cmljayB5b3UgaW50byBiZWxpZXZpbmcg
dGhleSBhcmUgbGVnaXRpbWF0ZSB3ZWJzaXRlcyB5b3UgdHJ1c3QuIiA9ICJXYXJuaW5ncyBhcmUg
c2hvd24gZm9yIHdlYnNpdGVzIHRoYXQgaGF2ZSBiZWVuIHJlcG9ydGVkIGFzIGRlY2VwdGl2ZS4g
RGVjZXB0aXZlIHdlYnNpdGVzIHRyeSB0byB0cmljayB5b3UgaW50byBiZWxpZXZpbmcgdGhleSBh
cmUgbGVnaXRpbWF0ZSB3ZWJzaXRlcyB5b3UgdHJ1c3QuIjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggMzJhM2I2OTg5ZmFiNmVkNjQwNDFiOTBiOWRlYzQ5M2Y2NDAzMTE1Ni4uYjc3MjRl
ODFhZjgyOGEwMWUxNjg4YmFkNjZlZTljZDA2YmNlMGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC03Miw5ICs3MiwxMCBAQCBVUkxSZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdp
c3RyeSgpCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1CbG9iOjpCbG9iKFVuaW5pdGlhbGl6
ZWRDb250cnVjdG9yLCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCitCbG9iOjpCbG9iKFVuaW5p
dGlhbGl6ZWRDb250cnVjdG9yLCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRl
c3RpbmF0aW9uVHlwZSkKICAgICA6IG1faW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogICAgICwg
bV90eXBlKFdURk1vdmUodHlwZSkpCisgICAgLCBtX2Rlc3RpbmF0aW9uVHlwZShXVEZNb3ZlKGRl
c3RpbmF0aW9uVHlwZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNjE0ZDgwOWQy
MDg5M2Q1ZWZlMDBjODM5MmIzYWUzNjUyYmRhMmFjNS4uYjIyNDc5NGU4MDliNDcxNmIyMWRlMmE0
ZTc0N2ViZWIyODJhN2I1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTg0LDcgKzg0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkJsb2IoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcm5hbFVSTDsgfQotICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzdGluYXRpb25UeXBlLmlzTnVsbCgpID8gbV90eXBlIDogbV9kZXN0aW5hdGlv
blR5cGU7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJvdGVjdGVkOgogICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlz
dGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29uc3QgQmxvYiYpOwogCiAgICAgZW51bSBVbmluaXRpYWxp
emVkQ29udHJ1Y3RvciB7IHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yIH07Ci0gICAgQmxvYihVbmlu
aXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYsIFN0cmluZyYmIHR5cGUpOworICAgIEJsb2IoVW5p
bml0aWFsaXplZENvbnRydWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBkZXN0
aW5hdGlvblR5cGUpOwogCiAgICAgZW51bSBEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIHsgZGVz
ZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB9OwogICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1
Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5z
aWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKQEAg
LTEzMSw2ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIFVSTCBtX2ludGVybmFsVVJMOwogCiAgICAg
U3RyaW5nIG1fdHlwZTsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblR5cGU7CiAKICAgICBtdXRh
YmxlIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gbV9zaXplOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuY3BwCmluZGV4IDhkNmUzODczODU1MTNkZGQ0MWUwMzcyNDA5OGI0MzJlYWNlY2ViYzAu
LmM1ZjVmMjE4NGIwMjFlYTUxMDY5ZWFhYmI1NjYxMWU5ZjFjZTUwOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmNwcApAQCAtNDYsMjAgKzQ2LDIxIEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRo
UmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2CiAg
ICAgcmV0dXJuIGZpbGU7CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBGaWxlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMpCiB7Ci0gICAgU3RyaW5nIG5hbWU7Ci0gICAg
U3RyaW5nIHR5cGU7Ci0gICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3Zl
cnJpZGUsIG5hbWUsIHR5cGUpOworICAgIFN0cmluZyB0eXBlID0gY29udGVudFR5cGVGb3JGaWxl
KHBhdGgsIG5hbWVPdmVycmlkZSk7CisgICAgU3RyaW5nIGRlc3RpbmF0aW9uVHlwZSA9IGRlc3Rp
bmF0aW9uVHlwZUZvckZpbGUocGF0aCwgdHlwZSwgYWxsb3dlZFR5cGVzKTsKKyAgICBTdHJpbmcg
bmFtZSA9IG5hbWVGb3JGaWxlKHBhdGgsIG5hbWVPdmVycmlkZSwgZGVzdGluYXRpb25UeXBlKTsK
IAogICAgIGF1dG8gaW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwot
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxV
UkwsIHBhdGgsIHR5cGUpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3Zl
KGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5h
bWUpKSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChp
bnRlcm5hbFVSTCwgcGF0aCwgbmFtZSwgdHlwZSwgZGVzdGluYXRpb25UeXBlKTsKKworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFN0cmluZyB7IHBh
dGggfSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShkZXN0aW5hdGlvblR5
cGUpKSk7CiB9CiAKLUZpbGU6OkZpbGUoVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcm
JiBwYXRoLCBTdHJpbmcmJiBuYW1lKQotICAgIDogQmxvYih1bmluaXRpYWxpemVkQ29udHJ1Y3Rv
ciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHR5cGUpKQorRmlsZTo6RmlsZShVUkwmJiB1cmwsIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRlc3Rp
bmF0aW9uVHlwZSkKKyAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIFdURk1vdmUo
dXJsKSwgV1RGTW92ZSh0eXBlKSwgV1RGTW92ZShkZXN0aW5hdGlvblR5cGUpKQogICAgICwgbV9w
YXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsKQEAgLTEy
MywzMiArMTI0LDQ4IEBAIGludDY0X3QgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKICAgICBy
ZXR1cm4gV1RGOjp0aW1lQ2xpcChyZXN1bHQpOwogfQogCi12b2lkIEZpbGU6OmNvbXB1dGVOYW1l
QW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVy
cmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBl
KQorU3RyaW5nIEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQogewotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5U
KQotICAgIGlmIChzaG91bGRSZXBsYWNlRmlsZShwYXRoKSkgewotICAgICAgICBjb21wdXRlTmFt
ZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKHBhdGgsIG5hbWVPdmVycmlkZSwgZWZmZWN0
aXZlTmFtZSwgZWZmZWN0aXZlQ29udGVudFR5cGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0gICAgZWZmZWN0aXZlTmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7Ci0gICAgc2l6ZV90
IGluZGV4ID0gZWZmZWN0aXZlTmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIFN0cmluZyBuYW1l
ID0gbmFtZU92ZXJyaWRlLmlzRW1wdHkoKSA/IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShw
YXRoKSA6IG5hbWVPdmVycmlkZTsKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgc2l6ZV90IGlu
ZGV4ID0gbmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkg
ewotICAgICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJmVmZmVjdGl2ZUNvbnRlbnRUeXBl
LCAmZWZmZWN0aXZlTmFtZSwgaW5kZXhdIHsKLSAgICAgICAgICAgIGVmZmVjdGl2ZUNvbnRlbnRU
eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZWZmZWN0aXZl
TmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFsmbWltZVR5cGUsICZuYW1lLCBpbmRleF0geworICAgICAgICAg
ICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihu
YW1lLnN1YnN0cmluZyhpbmRleCArIDEpKS5pc29sYXRlZENvcHkoKTsKICAgICAgICAgfSk7CiAg
ICAgfQorICAgIHJldHVybiBtaW1lVHlwZTsKIH0KIAotU3RyaW5nIEZpbGU6OmNvbnRlbnRUeXBl
Rm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCitTdHJpbmcgRmlsZTo6ZGVzdGluYXRpb25UeXBl
Rm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMpCiB7Ci0gICAgU3RyaW5nIG5hbWU7Ci0gICAgU3Ry
aW5nIHR5cGU7Ci0gICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBTdHJpbmcoKSwg
bmFtZSwgdHlwZSk7Ci0KKyNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKKyAgICBpZiAoaXNG
aWxlVHlwZVBhY2thZ2UocGF0aCkpCisgICAgICAgIHJldHVybiAiYXBwbGljYXRpb24vemlwIl9z
OworCisgICAgaWYgKGFsbG93ZWRUeXBlcy5jb250YWlucyh0eXBlKSkKKyAgICAgICAgcmV0dXJu
IHR5cGU7CisgICAgCisgICAgZm9yIChhdXRvJiBhbGxvd2VkVHlwZSA6IGFsbG93ZWRUeXBlcykg
eworICAgICAgICBpZiAoYWxsb3dlZFR5cGUgPT0gImltYWdlLyoiKQorICAgICAgICAgICAgcmV0
dXJuIHR5cGU7CisgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
TUlNRVR5cGVGb3JFbmNvZGluZyhhbGxvd2VkVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gYWxs
b3dlZFR5cGU7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKK1N0cmluZyBG
aWxlOjpuYW1lRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92
ZXJyaWRlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkKK3sKKyAgICBTdHJpbmcgbmFt
ZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUo
cGF0aCkgOiBuYW1lT3ZlcnJpZGU7CisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAg
aWYgKGRlc3RpbmF0aW9uVHlwZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQorICAgICAgICBuYW1l
ID0gbWFrZVN0cmluZyhuYW1lLCAiLnppcCJfcyk7CisjZW5kaWYKKyAgICByZXR1cm4gbmFtZTsK
K30KKwogYm9vbCBGaWxlOjppc0RpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzRGly
ZWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMmY5MzhiNDIwZDNhNjBmYjkzZjc0MGJj
YjA0ZDc0MWY4M2VmZjc4Li4wZmFiM2E5ZmM2NzdmNDYyZjBjNzZiZDdlNmVlODM3M2E1YTg3MWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgfTsK
IAogICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8g
dGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykg
dGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFt
ZU92ZXJyaWRlID0geyB9LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcyA9IHsg
fSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNvbnN0cnVj
dG9yLgogICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+
JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVy
dHlCYWcmIHByb3BlcnR5QmFnKQpAQCAtNzYsMjggKzc2LDI1IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGxhc3RNb2RpZmllZCgpIGNvbnN0OyAvLyBOdW1iZXIgb2YgbWls
bGlzZWNvbmRzIHNpbmNlIEVwb2NoLgogICAgIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0
TW9kaWZpZWRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZU92ZXJy
aWRlOyB9IC8vIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgRXBvY2guCiAKLSAgICBzdGF0
aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHN0
YXRpYyBTdHJpbmcgY29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOworICAgIHN0YXRpYyBTdHJpbmcgZGVzdGluYXRp
b25UeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSA9IHsg
fSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0pOworICAgIHN0YXRp
YyBTdHJpbmcgbmFtZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5h
bWVPdmVycmlkZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUgPSB7IH0pOwog
CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkUmVw
bGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0ZpbGVUeXBl
UGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgpOwogI2VuZGlmCiAKICAgICBib29sIGlzRGlyZWN0
b3J5KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpOwotICAgIEZpbGUoVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpOworICAgIEZpbGUoVVJMJiYsIFN0cmluZyYmIHBh
dGgsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIGRlc3RpbmF0aW9uVHlw
ZSk7CiAgICAgRmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7CiAgICAgRmlsZShj
b25zdCBCbG9iJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBGaWxlKGNvbnN0IEZpbGUmLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9y
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2Rp
ZmllZCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0
aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVDb250ZW50VHlwZSk7Ci0jaWYgRU5BQkxFKEZJTEVf
UkVQTEFDRU1FTlQpCi0gICAgc3RhdGljIHZvaWQgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZv
clJlcGxhY2VkRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJy
aWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUp
OwotI2VuZGlmCi0KICAgICBTdHJpbmcgbV9wYXRoOwogICAgIFN0cmluZyBtX3JlbGF0aXZlUGF0
aDsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRl
eCA2NjRmOWE1MzYxM2RmMjZjYTE3YzcwN2MyMWI1MGM2NDY0NTIwNGU2Li4xMDU0OThiZWNhZmE4
MGIyNzE2NzRhMWMzMTQ0NzQwMzE3MTVkMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2Nv
YS5tbQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRmls
ZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlOjppc0Zp
bGVUeXBlUGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NywxMyArNTcsNiBAQCBib29sIEZpbGU6
OnNob3VsZFJlcGxhY2VGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gVVRUeXBl
Q29uZm9ybXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdXRpLCBrVVRUeXBlUGFja2FnZSk7CiB9
CiAKLXZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVm
ZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUpCi17Ci0gICAgQVNTRVJU
KCFGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkuZW5kc1dpdGgoJy8nKSk7IC8vIEV4
cGVjdGluZyB0byBnZXQgYSBwYXRoIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2gsIGV2ZW4gZm9yIGRp
cmVjdG9yaWVzLgotICAgIGVmZmVjdGl2ZUNvbnRlbnRUeXBlID0gImFwcGxpY2F0aW9uL3ppcCJf
czsKLSAgICBlZmZlY3RpdmVOYW1lID0gbWFrZVN0cmluZygobmFtZU92ZXJyaWRlLmlzTnVsbCgp
ID8gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSwgIi56
aXAiX3MpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmlu
ZGV4IDVlMWQ0YzAwYTljMDY4YzgwMzFjMjRjY2Q2MGFiMjBhNmFmYTA2MGIuLjQzYzA2ZTZjMDM1
YjkzOGViNmU5NTEyOWYxNjgwMjdhNWRkNGU0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTUgKzY0LDE1IEBAIHN0
YXRpYyBUaHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICBy
ZXR1cm4gKm1hcDsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZp
bGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVHlwZSkKIHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3Jl
YXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
RmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoLCBuYW1l
LCBjb250ZW50VHlwZSwgZGVzdGluYXRpb25UeXBlKSwgY29udGVudFR5cGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVk
Q29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50
VHlwZS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZp
bGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRl
bnRUeXBlKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCks
IHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwg
Y29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKSwgZGVzdGluYXRpb25UeXBl
ID0gZGVzdGluYXRpb25UeXBlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0
ZShwYXRoLCBuYW1lLCBjb250ZW50VHlwZSwgZGVzdGluYXRpb25UeXBlKSwgY29udGVudFR5cGUp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5oCmluZGV4IGE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4
MzIuLjBlMGY2ZjNiZThhMzlmYzgzOTZmMWI5M2JhYTgzYzkzOTI3MDMyODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00MCw3ICs0
MCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Cisg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CiAgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXgg
ZjNjNzA5OGNiZjVlNGI4MjBlYjY4MGY3Y2M0MjY1NWYwYjllMmQ2ZC4uOTBlYTZkMDUxZGQ4NzQz
MjdiMmYwMGQ5MTI1NjdhYjIzYWI0NDkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRGaWxlcyhS
ZWZQdHI8RmlsZUxpc3Q+JiYgZmlsZXMsIFJlcXVlc3RJY29uIHNob3VsZFJlcXVlc3QKICAgICBw
cm90ZWN0ZWRJbnB1dEVsZW1lbnQtPnNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5n
ZUV2ZW50KGZhbHNlKTsKIH0KIAotdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25z
dCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlTdHJpbmcsIEljb24qIGljb24pCit2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgYWxsb3dlZFR5cGVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIEljb24qIGlj
b24pCiB7CiAgICAgaWYgKCFkaXNwbGF5U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgbV9kaXNw
bGF5U3RyaW5nID0gZGlzcGxheVN0cmluZzsKQEAgLTQxMyw4ICs0MTMsOCBAQCB2b2lkIEZpbGVJ
bnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
cGF0aHMsIGNvbnN0CiAgICAgICAgIG1fZGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLT5jYW5jZWwo
KTsKIAogICAgIGlmICghYWxsb3dzRGlyZWN0b3JpZXMoKSkgewotICAgICAgICBhdXRvIGZpbGVz
ID0gcGF0aHMubWFwKFtdKGF1dG8mIGZpbGVJbmZvKSB7Ci0gICAgICAgICAgICByZXR1cm4gRmls
ZTo6Y3JlYXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lKTsKKyAgICAgICAg
YXV0byBmaWxlcyA9IHBhdGhzLm1hcChbJmFsbG93ZWRUeXBlc10oYXV0byYgZmlsZUluZm8pIHsK
KyAgICAgICAgICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZmlsZUluZm8ucGF0aCwgZmlsZUluZm8u
ZGlzcGxheU5hbWUsIGFsbG93ZWRUeXBlcyk7CiAgICAgICAgIH0pOwogICAgICAgICBkaWRDcmVh
dGVGaWxlTGlzdChGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZXMpKSwgaWNvbik7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggMDhmNjIxZmU1
YzNkNmQzMDM4NjdhZTlmMDcxN2VhZGQzNTZlY2JhYS4uZDM0OTMxZjY1OWRiNDU2NmY1OTkxYmNj
YjI2NTNiNjViMzg5OGZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTgx
LDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIFN0cmluZyBkZWZhdWx0VG9vbFRpcCgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcgPSB7IH0sIEljb24qID0gbnVsbHB0
cikgZmluYWw7CisgICAgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4mLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcyA9IHsgfSwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxwdHIpIGZpbmFsOwog
CiAgICAgLy8gRmlsZUljb25Mb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCBp
Y29uTG9hZGVkKFJlZlB0cjxJY29uPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcAppbmRleCBhYzdmNWQ0N2JjZjQ1MzhmZWQ4MGM2MmI5OWMyNDczNTA0NzQ4
ODViLi41NDE5YjhhZDg5MDYwYmRiM2FiZGE4ODM3ZGI3YmY5MGFjNTcwNTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKIAorI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGaWxlQ2hvb3Nlcjo6Rmls
ZUNob29zZXIoRmlsZUNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgRmlsZUNob29zZXJTZXR0
aW5ncyYgc2V0dGluZ3MpCkBAIC00NCw2ICs0NiwxOSBAQCBSZWY8RmlsZUNob29zZXI+IEZpbGVD
aG9vc2VyOjpjcmVhdGUoRmlsZUNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgRmlsZUNob29z
ZQogCiBGaWxlQ2hvb3Nlcjo6fkZpbGVDaG9vc2VyKCkgPSBkZWZhdWx0OwogCitIYXNoU2V0PFN0
cmluZz4gRmlsZUNob29zZXI6OmFsbG93ZWRUeXBlcygpIGNvbnN0Cit7CisgICAgSGFzaFNldDxT
dHJpbmc+IGFsbG93ZWRUeXBlczsKKyAgICBmb3IgKGF1dG8mIHR5cGUgOiBtX3NldHRpbmdzLmFj
Y2VwdE1JTUVUeXBlcykKKyAgICAgICAgYWxsb3dlZFR5cGVzLmFkZCh0eXBlKTsKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IG1fc2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMpIHsKKyAg
ICAgICAgYXV0byB0eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24oZXh0ZW5zaW9uLnN0YXJ0c1dpdGgoJy4nKSA/IGV4dGVuc2lvbi5yaWdodChleHRlbnNpb24u
bGVuZ3RoKCkgLSAxKSA6IGV4dGVuc2lvbik7CisgICAgICAgIGlmICghdHlwZS5pc0VtcHR5KCkp
CisgICAgICAgICAgICBhbGxvd2VkVHlwZXMuYWRkKHR5cGUpOworICAgIH0KKyAgICByZXR1cm4g
YWxsb3dlZFR5cGVzOworfQorCiB2b2lkIEZpbGVDaG9vc2VyOjppbnZhbGlkYXRlKCkKIHsKICAg
ICBBU1NFUlQobV9jbGllbnQpOwpAQCAtNzAsNyArODUsNyBAQCB2b2lkIEZpbGVDaG9vc2VyOjpj
aG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAgIFZlY3RvcjxG
aWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogZmls
ZW5hbWVzKQogICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFt
ZSkpOwotICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcyk7CisgICAgbV9jbGllbnQtPmZp
bGVzQ2hvc2VuKGZpbGVzLCBhbGxvd2VkVHlwZXMoKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtODksNyArMTA0LDcgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlTWVkaWFG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcKICAgICBW
ZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CiAgICAgZm9yIChhdXRvJiBmaWxlbmFt
ZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8o
ZmlsZW5hbWUpKTsKLSAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMsIGRpc3BsYXlTdHJp
bmcsIGljb24pOworICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgeyB9LCBkaXNwbGF5
U3RyaW5nLCBpY29uKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXIuaAppbmRleCBlNTFlYjllODQzODc5NWE3NmZlYzlhM2RiZjdjNmEwODRlYTA4ODk1Li43ZDkx
OWViOWNkNTU2NmJhMjdjNDViYjU0MWM4YzM1N2JkNWEzMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzYsNyArNzcsNyBAQCBjbGFzcyBGaWxlQ2hvb3Nl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsZUNob29zZXJDbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVD
aG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nID0geyB9LCBJY29u
KiA9IG51bGxwdHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2Vk
VHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiogPSBu
dWxscHRyKSA9IDA7CiB9OwogCiBjbGFzcyBGaWxlQ2hvb3NlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEZpbGVDaG9vc2VyPiB7CkBAIC0xMDIsNiArMTAzLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBGaWxlQ2hvb3NlcihGaWxlQ2hvb3NlckNsaWVudCosIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGlu
Z3MmKTsKIAorICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXMoKSBjb25zdDsKKwogICAg
IEZpbGVDaG9vc2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBGaWxlQ2hvb3Nl
clNldHRpbmdzIG1fc2V0dGluZ3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oCmluZGV4IDk5NmVlNzg0ZWRlMmFkYjAxYTE1NTBlMmZlNTBkNTA2NDNiM2Zh
M2YuLjEzZTI1MTZmOTYxMjY1NjdlMTU5ZWFlNWY1NWMyMjRiMDkwZWQ4NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRl
b09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0
byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCi0gICAg
c3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxv
YWRlZCBhcyBhIEphdmFTY3JpcHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCA1YWJmZDc1Y2I0OTQ1NmU0MmQzOWQ0
NGQzYmMyMjU5YWFmZmE1MjI2Li5hNzI2ZTcyNTU3MTE1OTY0ODVjZGFhMTQ5OTZiMzhhZjBkZGY0
MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zMiwxNSArMzIsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZShjb25zdCBTdHJpbmcmIHBhdGgpCitCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSkKICAgICA6IG1fcGF0
aChwYXRoKQorICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1f
ZGVzdGluYXRpb25UeXBlKGRlc3RpbmF0aW9uVHlwZSkKIHsKIH0KIAogQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCkKIHsKICNpZiBFTkFCTEUoRklMRV9SRVBM
QUNFTUVOVCkKLSAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQorICAgIGlmICgh
bV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkgJiYgbV9kZXN0aW5hdGlvblR5cGUgPT0gImFwcGxp
Y2F0aW9uL3ppcCJfcykKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3JlcGxhY2Vt
ZW50UGF0aCk7CiAjZW5kaWYKIH0KQEAgLTQ4LDcgKzUxLDcgQEAgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOjp+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCkKIGNvbnN0IFN0cmluZyYgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjpwYXRoKCkKIHsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBp
ZiAobV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChyZXBsYWNlbWVudFNo
b3VsZEJlR2VuZXJhdGVkKCkpCiAgICAgICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCk7CiAK
ICAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQpAQCAtNjEsNyArNjQsNyBAQCBj
b25zdCBTdHJpbmcmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCgpCiB1bnNpZ25lZCBsb25n
IGxvbmcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzaXplKCkKIHsKICNpZiBFTkFCTEUoRklMRV9S
RVBMQUNFTUVOVCkKLSAgICBpZiAobV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAg
IGlmIChyZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKCkpCiAgICAgICAgIGdlbmVyYXRlUmVw
bGFjZW1lbnRGaWxlKCk7CiAjZW5kaWYKIApAQCAtNzMsNyArNzYsNyBAQCBPcHRpb25hbDxXYWxs
VGltZT4gQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKQog
I2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIC8vIFdlIGRvIG5vdCBjdXJyZW50bHkg
dHJhY2sgbW9kaWZpY2F0aW9ucyBmb3IgZ2VuZXJhdGVkIGZpbGVzLCBiZWNhdXNlIHdlIGhhdmUg
YSBzbmFwc2hvdC4KICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzIGluY29uc2lzdGVudCB3
aXRoIHJlZ3VsYXIgZmlsZSBoYW5kbGluZyAtIEZpbGUgb2JqZWN0cyBzaG91bGQgYmUgaW52YWxp
ZGF0ZWQgd2hlbiB1bmRlcmx5aW5nIGZpbGVzIGNoYW5nZS4KLSAgICBpZiAobV9yZXBsYWNlbWVu
dFNob3VsZEJlR2VuZXJhdGVkIHx8ICFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKKyAgICBp
ZiAoIW1fZGVzdGluYXRpb25UeXBlLmlzTnVsbCgpIHx8ICFtX3JlcGxhY2VtZW50UGF0aC5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogICAgIHJldHVybiBt
X2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKQEAgLTg2LDcgKzg5LDggQEAgdm9pZCBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKCkKICAgICAvLyB0aGUg
Y29zdCBvZiB0cmFja2luZyBmaWxlIG1vZGlmaWNhdGlvbnMuCiAKICNpZiBFTkFCTEUoRklMRV9S
RVBMQUNFTUVOVCkKLSAgICBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgPSBGaWxlOjpz
aG91bGRSZXBsYWNlRmlsZShtX3BhdGgpOworICAgIGlmIChGaWxlOjppc0ZpbGVUeXBlUGFja2Fn
ZShtX3BhdGgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uVHlwZSA9ICJhcHBsaWNhdGlvbi96aXAi
X3M7CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBTb21lIHBsYXRmb3JtcyBwcm92aWRlIGJldHRl
ciB3YXlzIHRvIGxpc3RlbiBmb3IgZmlsZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMsIGNvbnNpZGVy
IHVzaW5nIHRoZXNlLgpAQCAtOTcsNyArMTAxLDcgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKCkKICAgICBtX2V4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSA9IG1ldGFkYXRhLnZhbHVlKCkubW9kaWZpY2F0aW9uVGltZTsKIAogI2lmIEVOQUJM
RShGSUxFX1JFUExBQ0VNRU5UKQotICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0
ZWQpCisgICAgaWYgKHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCmluZGV4IDY1ODgyOWQwN2ZjZmJkNmIwMmEyMGUx
Y2IwMWZkYzlkNmRjYzA3YzkuLmJkZDFlZjgyOTUyZWY0MTQxMTc2ZDNjNjliODE3YTEzMjJjMzE3
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YUZpbGVSZWZlcmVuY2UuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQmxvYkRhdGFGaWxlUmVmZXJlbmNlX2gK
LSNkZWZpbmUgQmxvYkRhdGFGaWxlUmVmZXJlbmNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDkg
KzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9i
RGF0YUZpbGVSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lID0geyB9
LCBjb25zdCBTdHJpbmcmIHR5cGUgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBl
ID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlKHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlKHBhdGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9uVHlwZSkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgfkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpOwpAQCAtNTIsMjIgKzUxLDIz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCk7Cisg
ICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lID0geyB9LCBjb25zdCBTdHJpbmcmIHR5cGUgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25UeXBlID0geyB9KTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKKyAgICBib29sIHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSBjb25zdDsKICAg
ICB2b2lkIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCk7CiAjZW5kaWYKIAogICAgIFN0cmluZyBt
X3BhdGg7CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBTdHJpbmcgbV90eXBlOworICAgIFN0cmlu
ZyBtX2Rlc3RpbmF0aW9uVHlwZTsKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBT
dHJpbmcgbV9yZXBsYWNlbWVudFBhdGg7Ci0gICAgYm9vbCBtX3JlcGxhY2VtZW50U2hvdWxkQmVH
ZW5lcmF0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fc2l6
ZSB7IDAgfTsKICAgICBNYXJrYWJsZTxXYWxsVGltZSwgV2FsbFRpbWU6Ok1hcmthYmxlVHJhaXRz
PiBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKIH07CiAKIH0KLQotI2VuZGlmIC8vIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KaW5kZXggNWVj
Nzc3YTg2OTkwNjcxMThjYmNkNTUyOGU4ZjRmZmU5MmE0NDg2Yi4uOWQ0ZmFiNGM4ZjFiZGMyMTVj
OTIwOThmN2QxODMxNDZlOTE4NzViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpA
QCAtMjgsMjUgKzI4LDY2IEBACiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKIAorI2lt
cG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1w
b3J0IDx3dGYvRmlsZU1ldGFkYXRhLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpyZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV90eXBlICE9IG1fZGVzdGluYXRpb25UeXBlICYmIG1fcmVwbGFj
ZW1lbnRQYXRoLmlzTnVsbCgpOworfQorCiB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2Vu
ZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogewotICAgIEFTU0VSVChtX3JlcGxhY2VtZW50UGF0aC5p
c051bGwoKSk7Ci0gICAgQVNTRVJUKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCk7Cisg
ICAgQVNTRVJUKHJlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoKSk7CiAKICAgICBwcmVwYXJl
Rm9yRmlsZUFjY2VzcygpOwogCi0gICAgYXV0byBnZW5lcmF0ZWRGaWxlID0gRmlsZVN5c3RlbTo6
Y3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShtX3BhdGgpOwotICAgIGlmICghZ2VuZXJhdGVkRmls
ZS5pc051bGwoKSkKLSAgICAgICAgbV9yZXBsYWNlbWVudFBhdGggPSBXVEZNb3ZlKGdlbmVyYXRl
ZEZpbGUpOworICAgIFN0cmluZyBnZW5lcmF0ZWRGaWxlOworICAgIGlmIChtX2Rlc3RpbmF0aW9u
VHlwZSA9PSAiYXBwbGljYXRpb24vemlwIl9zKQorICAgICAgICBnZW5lcmF0ZWRGaWxlID0gRmls
ZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShtX3BhdGgpOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQobV90eXBlICE9IG1fZGVzdGluYXRpb25UeXBlKTsKKyAgICAgICAgQVNT
RVJUKG1fZGVzdGluYXRpb25UeXBlLnN0YXJ0c1dpdGgoImltYWdlLyJfcykpOworCisgICAgICAg
IC8vIENyZWF0ZSB0aGUgaW1hZ2Ugc291cmNlLgorICAgICAgICBhdXRvIHNvdXJjZVVSTCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
bV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxz
ZSkpOworICAgICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdp
dGhVUkwoc291cmNlVVJMLmdldCgpLCBOVUxMKSk7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUg
dGVtcG9yYXJ5IGZpbGUgbmFtZSBwcmVmaXggYW5kIGZpbGUgZXh0ZW5zaW9uLgorICAgICAgICBh
dXRvIGNvbXBvbmVudHMgPSBtX25hbWUuc3BsaXQoJy4nKTsKKyAgICAgICAgYXV0byBleHRlbnNp
b25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1fZGVzdGlu
YXRpb25UeXBlKTsKKyAgICAgICAgYXV0byBwcmVmaXggPSBtYWtlU3RyaW5nKGNvbXBvbmVudHMu
Zmlyc3QoKSwgIl8iX3MpOworICAgICAgICBhdXRvIHN1ZmZpeCA9IG1ha2VTdHJpbmcoIi4iX3Ms
IGV4dGVuc2lvbnMuZmlyc3QoKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZp
bGUuCisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBwbGF0Zm9ybUZpbGVI
YW5kbGU7CisgICAgICAgIGdlbmVyYXRlZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZShwcmVmaXgsIHBsYXRmb3JtRmlsZUhhbmRsZSwgc3VmZml4KTsKIAotICAgIG1fcmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IGZhbHNlOwotICAgIGlmICghbV9yZXBsYWNlbWVudFBh
dGguaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBkYXRhIGNvbnN1bWVyLgorICAg
ICAgICBDR0RhdGFDb25zdW1lckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7IFtdKHZvaWQgKmluZm8s
IGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50KSAtPiBzaXplX3QgeworICAgICAgICAg
ICAgYXV0byBwbGF0Zm9ybUZpbGVIYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlKj4oaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUocGxhdGZvcm1GaWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
YnVmZmVyKSwgY291bnQpOworICAgICAgICB9LCBOVUxMIH07CisKKyAgICAgICAgYXV0byBjb25z
dW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGUoJnBsYXRmb3JtRmlsZUhhbmRsZSwg
JmNhbGxiYWNrcykpOworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgaW1hZ2UgZGVzdGluYXRpb24u
CisgICAgICAgIGF1dG8gdXRpID0gVVRJRnJvbU1JTUVUeXBlKG1fZGVzdGluYXRpb25UeXBlKTsK
KyAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3Jl
YXRlV2l0aERhdGFDb25zdW1lcihjb25zdW1lci5nZXQoKSwgdXRpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDEsIE5VTEwpKTsKKworICAgICAgICAvLyBXcml0ZSB0aGUgaW1hZ2Ugc291cmNlIHRv
IHRoZSBpbWFnZSBkZXN0aW5hdGlvbi4KKyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1h
Z2VGcm9tU291cmNlKGRlc3RpbmF0aW9uLmdldCgpLCBzb3VyY2UuZ2V0KCksIDAsIG51bGxwdHIp
OworICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShwbGF0Zm9ybUZpbGVIYW5kbGUpOworICAg
IH0KKworICAgIGlmICghZ2VuZXJhdGVkRmlsZS5pc051bGwoKSkgeworICAgICAgICBtX3JlcGxh
Y2VtZW50UGF0aCA9IFdURk1vdmUoZ2VuZXJhdGVkRmlsZSk7CiAgICAgICAgIGlmIChhdXRvIG1l
dGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBs
YWNlbWVudFBhdGgpKQogICAgICAgICAgICAgbV9zaXplID0gbWV0YWRhdGEudmFsdWUoKS5sZW5n
dGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KaW5kZXggZDkwMGY5ZThkNjc1NDFjYjhjMjll
ZDQyOGExZTliMDA4YjE0ODgyMy4uODZhMjQ1ODhhNzFkMzBjNTYxNWIzMzZlZmRiMGQ2NjdiN2I2
OTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVycy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjIsMTEgKzY0LDEzIEBAIHN0YXRpYyBOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4gKmV4dGVuc2lvbnNGb3JNSU1F
VHlwZU1hcCgpCiAgICAgICAgICAgICBpZiAoIW1pbWVUeXBlKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihVVFR5cGVDb3B5
QWxsVGFnc1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKKyAg
ICAgICAgICAgIGlmICghZXh0ZW5zaW9ucyB8fCAhQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnMu
Z2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgYWRkRXh0ZW5z
aW9uc0Zvck1JTUVUeXBlKChfX2JyaWRnZSBOU1N0cmluZyAqKW1pbWVUeXBlLmdldCgpLCAoX19i
cmlkZ2UgTlNBcnJheTxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbnMuZ2V0KCkpOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gQWRkIGFkZGl0aW9uYWwgbWltZSB0eXBlcyB3aGljaCBfVVRDb3B5RGVj
bGFyZWRUeXBlSWRlbnRpZmllcnMoKSBtYXkgbm90IHJldHVybi4KLSAgICAgICAgYWRkRXh0ZW5z
aW9uRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJwIiwgQCJ3ZWJwIik7CisgICAgICAgIGFkZEV4dGVu
c2lvbnNGb3JNSU1FVHlwZShAImltYWdlL3dlYnAiLCBAW0Aid2VicCJdKTsKIAogICAgICAgICBy
ZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOwogICAgIH0oKSk7CkBAIC03OSw2ICs4Mywx
OCBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0
cmluZyAqbWltZXR5cGUpCiAgICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBv
YmplY3RGb3JLZXk6bWltZXR5cGVdOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKm1pbWVUeXBlRm9y
RXh0ZW5zaW9uKE5TU3RyaW5nICpleHRlbnNpb24pCit7CisgICAgTlNTZXQ8TlNTdHJpbmcgKj4g
Km1pbWVUeXBlcyA9IFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBrZXlzT2ZFbnRyaWVzUGFz
c2luZ1Rlc3Q6XkJPT0woTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1NldDxOU1N0cmluZyAqPiAqZXh0
ZW5zaW9ucywgQk9PTCAqKSB7CisgICAgICAgIGlmIChbbWltZVR5cGUgaGFzU3VmZml4OkAiKiJd
KQorICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICBpZiAoW2V4dGVuc2lvbiBjaGFyYWN0
ZXJBdEluZGV4OjBdID09ICcuJykKKyAgICAgICAgICAgIHJldHVybiBbZXh0ZW5zaW9ucyBjb250
YWluc09iamVjdDpbZXh0ZW5zaW9uIHN1YnN0cmluZ0Zyb21JbmRleDoxXV07CisgICAgICAgIHJl
dHVybiBbZXh0ZW5zaW9ucyBjb250YWluc09iamVjdDpleHRlbnNpb25dOworICAgIH1dOworICAg
IHJldHVybiBbbWltZVR5cGVzIGFueU9iamVjdF07Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXS09w
ZW5QYW5lbFBhcmFtZXRlcnMKIAogLSAoQk9PTClhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbgpAQCAt
MTM2LDM2ICsxNTIsMTE4IEBAIHN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlKE5TU3RyaW5nICptaW1ldHlwZSkKICAgICByZXR1cm4gW2FsbG93ZWRGaWxlRXh0
ZW5zaW9ucyBhbGxPYmplY3RzXTsKIH0KIAotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxv
d2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsSW1h
Z2VGaWxlRXh0ZW5zaW9ucwogewotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtz
ZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKKyAgICByZXR1cm4gW2V4dGVuc2lvbnNGb3JN
SU1FVHlwZShAImltYWdlLyoiKSBhbGxPYmplY3RzXTsKK30KIAotICAgIGNvbnN0ZXhwciBhdXRv
IEFsbEZpbGVzVGl0bGUgPSBAIkFsbCBGaWxlcyI7Ci0gICAgY29uc3RleHByIGF1dG8gQ3VzdG9t
RmlsZXNUaXRsZSA9IEAiQ3VzdG9tIEZpbGVzIjsKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilf
YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCit7CisgICAgTlNTdHJpbmcgKmFsbEZpbGVzVGl0
bGUgPSBXRUJfVUlfU1RSSU5HKCJBbGwgRmlsZXMiLCAiQWxsIEZpbGVzIGluIGZpbGVyIHBpY2tl
ciIpOworICAgIE5TU3RyaW5nICphbGxJbWFnZUZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJJ
bWFnZSBGaWxlcyIsICJJbWFnZSBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmlu
ZyAqYWxsVmlkZW9GaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiVmlkZW8gRmlsZXMiLCAiVmlk
ZW8gRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmFsbEF1ZGlvRmlsZXNU
aXRsZSA9IFdFQl9VSV9TVFJJTkcoIkF1ZGlvIEZpbGVzIiwgIkF1ZGlvIEZpbGVzIGluIGZpbGVy
IHBpY2tlciIpOworICAgIE5TU3RyaW5nICpjdXN0b21GaWxlc1RpdGxlID0gV0VCX1VJX1NUUklO
RygiQ3VzdG9tIEZpbGVzIiwgIkN1c3RvbSBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBO
U1N0cmluZyAqaW1hZ2VUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIiVAIGltYWdlIiwgIkltYWdlIGZv
cm1hdCB0eXBlIGluIGZpbGUgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKnZpZGVvVGl0bGUgPSBX
RUJfVUlfU1RSSU5HKCIlQCB2aWRlbyIsICJWaWRlbyBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tl
ciIpOworICAgIE5TU3RyaW5nICphdWRpb1RpdGxlID0gV0VCX1VJX1NUUklORygiJUAgYXVkaW8i
LCAiQXVkaW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAgICAKKyAgICBjb25zdGV4
cHIgYXV0byBpbWFnZVR5cGUgPSBAImltYWdlIjsKKyAgICBjb25zdGV4cHIgYXV0byB2aWRlb1R5
cGUgPSBAInZpZGVvIjsKKyAgICBjb25zdGV4cHIgYXV0byBhdWRpb1R5cGUgPSBAImF1ZGlvIjsK
KyAgICBjb25zdGV4cHIgYXV0byBjdXN0b21UeXBlID0gQCJjdXN0b20iOwogICAgIAotICAgIGlm
ICghW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
Y291bnRdKQotICAgICAgICByZXR1cm4gQFtBbGxGaWxlc1RpdGxlXTsKKyAgICBhdXRvIGNvbXBv
c2VUaXRsZXMgPSBeKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqc3ViVHlwZSwgTlNTdHJpbmcg
KmFsbFR5cGUpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkqIHRpdGxlcyA9IFtOU011dGFibGVB
cnJheSBhcnJheV07CisKKyAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9PSAiaW1hZ2Uv
cG5nIiB0aGVuIGFkZCAiUE5HIEltYWdlIgorICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSkg
eworICAgICAgICAgICAgTlNTdHJpbmcgKnR5cGVUaXRsZSA9IFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzppbWFnZVR5cGVdID8gaW1hZ2VUaXRsZSA6IChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6dmlkZW9U
eXBlXSA/IHZpZGVvVGl0bGUgOiBhdWRpb1RpdGxlKTsKKyAgICAgICAgICAgIGlmIChbc3ViVHlw
ZSBsZW5ndGhdIDw9IDQpCisgICAgICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6dHlwZVRpdGxlLCBbc3ViVHlwZSB1cHBlcmNhc2VTdHJpbmdd
XV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6dHlwZVRpdGxlLCBzdWJUeXBlXV07CisgICAgICAg
IH0gZWxzZSBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOmN1c3RvbVR5cGVdKSB7CisgICAgICAg
ICAgICAvLyBpZiB7IHR5cGUgc3ViVHlwZSB9ID09ICJDdXN0b20gRmlsZXMiIHRoZW4gYWRkICJD
dXN0b20gRmlsZXMiCisgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpjdXN0b21GaWxlc1Rp
dGxlXTsKKyAgICAgICAgfQogCi0gICAgaWYgKCEoW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSA9
PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pKQotICAgICAgICByZXR1cm4g
QFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAgICAgLy8gaWYgYWxsVHlw
ZSA9PSAiaW1hZ2UiIHRoZW4gYWRkICJJbWFnZSBGaWxlcyIKKyAgICAgICAgaWYgKFthbGxUeXBl
IGxlbmd0aF0pIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICphbGxUeXBlVGl0bGUgPSBbYWxsVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSA/IGFsbEltYWdlRmlsZXNUaXRsZSA6IChbYWxs
VHlwZSBpc0VxdWFsVG9TdHJpbmc6dmlkZW9UeXBlXSA/IGFsbFZpZGVvRmlsZXNUaXRsZSA6IGFs
bEF1ZGlvRmlsZXNUaXRsZSk7CisgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDphbGxUeXBl
VGl0bGVdOworICAgICAgICB9CiAKLSAgICBhdXRvIG1pbWVUeXBlID0gW2FjY2VwdGVkTUlNRVR5
cGVzIGZpcnN0T2JqZWN0XTsKLSAgICBhdXRvIHJhbmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJp
bmc6QCIvIl07Ci0gICAgCi0gICAgaWYgKCFyYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBA
W0N1c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwotICAgIAotICAgIGF1dG8gbWltZVR5
cGVQcmVmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07Ci0g
ICAgYXV0byBtaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFu
Z2UubG9jYXRpb24gKyAxXTsKLSAgICAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGlzRXF1YWxU
b1N0cmluZzpAIioiXSkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCVAIEZpbGVzIiwgW1ttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdUb0luZGV4OjFdIHVw
cGVyY2FzZVN0cmluZ10sIFttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dLCBB
bGxGaWxlc1RpdGxlXTsKKyAgICAgICAgLy8gSW4gYWxsIGNhc2VzIGFkZCAiQWxsIEZpbGVzIgor
ICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDphbGxGaWxlc1RpdGxlXTsKKyAgICAgICAgcmV0dXJu
IHRpdGxlczsKKyAgICB9OworCisgICAgLy8gTm8gYWNjZXB0IGF0dHJpYnV0ZTogPGlucHV0IHR5
cGU9ImZpbGUiPgorICAgIGlmICghW1tzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc10gY291bnRdICYm
ICFbW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdIGNvdW50XSkKKyAgICAgICAgcmV0dXJu
IGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIEAiIik7CisKKyAgICBhdXRvIGFjY2VwdGVkTUlNRVR5
cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhBcnJheTpbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdXSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24gaW4g
W3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdKSB7CisgICAgICAgIGlmICghZXh0ZW5zaW9u
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0g
bWltZVR5cGVGb3JFeHRlbnNpb24oW2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV0pOwor
CisgICAgICAgIC8vIFVua25vd24gZmlsZSBleHRlbnNpb246IDxpbnB1dCB0eXBlPSJmaWxlIiBh
Y2NlcHQ9Ii54eXoiPgorICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAgcmV0dXJu
IGNvbXBvc2VUaXRsZXMoY3VzdG9tVHlwZSwgQCIiLCBAIiIpOworCisgICAgICAgIFthY2NlcHRl
ZE1JTUVUeXBlcyBhZGRPYmplY3Q6bWltZVR5cGVdOworICAgIH0KKworICAgIE5TU3RyaW5nICp0
eXBlID0gbmlsOworICAgIE5TU3RyaW5nICpzdWJUeXBlID0gbmlsOworICAgIE5TU3RyaW5nICph
bGxUeXBlID0gbmlsOworCisgICAgZm9yIChOU1N0cmluZyAqbWltZVR5cGUgaW4gYWNjZXB0ZWRN
SU1FVHlwZXMuZ2V0KCkpIHsKKyAgICAgICAgTlNSYW5nZSByYW5nZSA9IFttaW1lVHlwZSByYW5n
ZU9mU3RyaW5nOkAiLyJdOworICAgICAgICBpZiAoIXJhbmdlLmxlbmd0aCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gbWltZVR5cGVQcmVmaXggPSBbbWltZVR5cGUgc3Vi
c3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07CisgICAgICAgIGF1dG8gbWltZVR5cGVTdWZm
aXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07CisK
KyAgICAgICAgLy8gT25seSBpbWFnZSwgdmlkZW8gYW5kIGF1ZGlvIG1pbWUgdHlwZXMgd2lsbCBo
YXZlIGRlc2NyaXB0aXZlIHRpdGxlcy4gT3RoZXIgdHlwZXMgd2lsbCBiZSBzaG93bgorICAgICAg
ICAvLyBhcyAiQ3VzdG9tIEZpbGVzIi4gIkN1c3RvbSBGaWxlcyIgd2lsbCBiZSBzaG93biBhbHNv
IGlmIG1vcmUgdGhhbiBhIG1pbWUgdHlwZSBpcyBzcGVjaWZpZWQuCisgICAgICAgIGlmICghW21p
bWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzppbWFnZVR5cGVdICYmICFbbWltZVR5cGVQcmVm
aXggaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gJiYgIVttaW1lVHlwZVByZWZpeCBpc0VxdWFs
VG9TdHJpbmc6YXVkaW9UeXBlXSkKKyAgICAgICAgICAgIHR5cGUgPSBjdXN0b21UeXBlOworICAg
ICAgICBlbHNlIGlmICghdHlwZSkKKyAgICAgICAgICAgIHR5cGUgPSBtaW1lVHlwZVByZWZpeDsK
KyAgICAgICAgZWxzZSBpZiAoIVt0eXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVByZWZpeF0p
CisgICAgICAgICAgICB0eXBlID0gY3VzdG9tVHlwZTsKKworICAgICAgICAvLyAiQ3VzdG9tIEZp
bGVzIiBhbHNvIHdpbGwgYmUgc2hvd24gaWYgbW9yZSB0aGFuIG9uZSBzdWItdHlwZSBpcyBzcGVj
aWZpZWQgdW5sZXNzICIqIiBpcyBzcGVjaWZpZWQuCisgICAgICAgIGlmICghc3ViVHlwZSB8fCBb
bWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQorICAgICAgICAgICAgc3ViVHlw
ZSA9IG1pbWVUeXBlU3VmZml4OworICAgICAgICBlbHNlIGlmICghW3N1YlR5cGUgaXNFcXVhbFRv
U3RyaW5nOkAiKiJdICYmICFbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6bWltZVR5cGVTdWZmaXhd
KQorICAgICAgICAgICAgc3ViVHlwZSA9IGN1c3RvbVR5cGU7CisKKyAgICAgICAgLy8gQWRkICJJ
bWFnZSBGaWxlcyIgdGl0bGUgaWYgbWltZVR5cGUgaXMgYWxsb3dlZCBkZXN0ZW5hdGlvbiBpbWFn
ZSBmb3JtYXQuCisgICAgICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpCisgICAgICAgICAgICBhbGxU
eXBlID0gaW1hZ2VUeXBlOworICAgIH0KKworICAgIC8vIEN1c3RvbSBGaWxlcywgQWxsIEZpbGVz
OiBhY2NlcHQ9ImF1ZGlvLyosaW1hZ2UvcG5nIiBvciBhY2NlcHQ9ImFwcGxpY2F0aW9uL3BkZiIu
CisgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpjdXN0b21UeXBlXSkKKyAgICAgICAgcmV0
dXJuIGNvbXBvc2VUaXRsZXMoY3VzdG9tVHlwZSwgQCIiLCBAIiIpOworCisgICAgLy8gJ1R5cGUn
IEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2UvKiIgb3IgYWNjZXB0PSJhdWRpby8qIi4K
KyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQorICAgICAgICByZXR1cm4g
Y29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgdHlwZSk7CiAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4
IGxlbmd0aF0gPD0gNCkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAlQCIsIFttaW1lVHlwZVN1ZmZpeCB1cHBlcmNhc2VTdHJpbmddLCBtaW1lVHlwZVBy
ZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIC8vIEN1c3RvbSBGaWxlcywgJ1R5cGUnIEZpbGVz
LCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2UvanBlZyxpbWFnZS9wbmciLgorICAgIGlmIChbc3Vi
VHlwZSBpc0VxdWFsVG9TdHJpbmc6Y3VzdG9tVHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3Nl
VGl0bGVzKGN1c3RvbVR5cGUsIEAiIiwgYWxsVHlwZSk7CiAKLSAgICByZXR1cm4gQFtbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgbWltZVR5cGVTdWZmaXgsIG1pbWVUeXBlUHJl
Zml4XSwgQWxsRmlsZXNUaXRsZV07CisgICAgLy8gJ1N1Yi10eXBlIFR5cGUnLCAnVHlwZScgRmls
ZXMsIEFsbCBGaWxlczogYWNjZXB0PSJpbWFnZS9wbmciLgorICAgIHJldHVybiBjb21wb3NlVGl0
bGVzKHR5cGUsIHN1YlR5cGUsIGFsbFR5cGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1l
dGVyc1ByaXZhdGUuaAppbmRleCAyOWVlODEyMGU0YWYxYmFlYTIyYzA2MjRhYzJlMjNiNGUxYmQ0
YWQ2Li43YzFmY2QxYjJhNzFlYTU1YWU2YTVjNzQ5NzY0MmViNTE4Yzg4NzU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKQEAgLTMxLDggKzMxLDkgQEAKIAogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRN
SU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZp
bGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxs
b3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkp
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5n
ICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5T
U3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWQxMGQ5OTI0OTFiZGJkOWQ4YWExYjNl
ODdiODQ1MDAzMjRjOTk0MC4uNmRkN2IzYzk4ZTY5NGJjMjc1ZGMyNTMxNTZlNjc3ZDNjMjU0NGNj
YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIwLTA2LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8
aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBi
ZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIG51bWJl
ciBvZiB0aGUgZmlsZSBleHRlbnNpb25zJyB0aXRsZXMgaXMgdGhyZWUsIHNlbmQgYW4gYXJyYXkg
b2YgCisgICAgICAgIGFsbEltYWdlRmlsZUV4dGVuc2lvbnMgdG8gRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldC4gQWxzbyBzZXQgdGhlIGluaXRpYWwKKyAgICAgICAgc2VsZWN0aW9uIG9mIHRoZSBm
aWx0ZXIgdG8gdGhlIGl0ZW0gbmFtZWQgIkltYWdlIEZpbGVzIi4KKworICAgICAgICAqIE1pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtGaWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5z
aW9uczphbGxJbWFnZUZpbGVFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93
Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOgorICAgICAgICAoLVtX
SzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0
ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmlldzpydW5PcGVuUGFu
ZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFs
bG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4KKwogMjAyMC0wNi0yMSAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRwYWtdIE5pZ2h0
bHkgcnVubmVyIGZhaWxzIHRvIGV4dHJhY3QgemlwIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDU3MGFhYTU0ZGI5
NzBlNDc0MjQ4OTRmN2JkODcxYTczZjJjN2RkMGUuLmRiZjlkMmE2MDQ0MmNjYzJkNjJiODc4ODZl
YjBjYWUxZmMxYTVmYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC03NywxNSArNzcsMTcgQEAgQGludGVyZmFjZSBGaWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IDogTlNPYmplY3QgewogQHByaXZhdGUKICAgICBOU09wZW5Q
YW5lbCAqX29wZW5QYW5lbDsKICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVF
eHRlbnNpb25zOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxJbWFnZUZpbGVFeHRlbnNp
b25zOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dAogCi0tIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxv
d2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVu
c2lvbnMgeworLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwg
YWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVF
eHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6IChOU0FycmF5PE5TU3RyaW5nICo+ICop
YWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkg
ewogICAgICAgICBfb3BlblBhbmVsID0gb3BlblBhbmVsOwogICAgICAgICBfYWxsb3dlZEZpbGVF
eHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3B5XTsKKyAgICAgICAgX2FsbElt
YWdlRmlsZUV4dGVuc2lvbnMgPSBbYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBjb3B5XTsKICAgICB9
CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMDAsNiArMTAyLDEyIEBAIC0gKHZvaWQpcG9wdXBB
Y3Rpb246KGlkKXNlbmRlciB7CiAgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmls
ZVR5cGVzOkBbQCIiXV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFtfb3BlblBhbmVsIHNl
dEFsbG93ZWRGaWxlVHlwZXM6X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gTWlkZGxlIGl0ZW0uCisgICAgICAgIGlmICghW19hbGxJbWFnZUZpbGVFeHRl
bnNpb25zIGNvdW50XSkKKyAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlw
ZXM6QFtAIiJdXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxs
b3dlZEZpbGVUeXBlczpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc107CiAgICAgfQogfQogCkBAIC02
NDQsNyArNjUyLDcgQEAgLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooTlNB
cnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVuc2kKICAgICBbYnV0dG9uIHNldFRh
cmdldDpwb3B1cFRhcmdldF07CiAgICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVw
QWN0aW9uOildOwogICAgIFtidXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0
ZW1BdEluZGV4OjBdOworICAgIFtidXR0b24gc2VsZWN0SXRlbUF0SW5kZXg6W3RpdGxlcyBjb3Vu
dF0gPD0gMiA/IDAgOiAxXTsKICAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246YnV0dG9uXTsK
ICAgICAKICAgICBOU1ZpZXcqIGZpbHRlclZpZXcgPSBbW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwpAQCAtNjg3LDEwICs2OTUsMTMgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0
ZXJzOihXS09wZW5QYW5lbFBhcmEKIAogICAgIG9wZW5QYW5lbC5hbGxvd3NNdWx0aXBsZVNlbGVj
dGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb247CiAKKyAgICBOU0FycmF5
ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4
dGVuc2lvbnNUaXRsZXM7CisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gcGFy
YW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIE5TQXJyYXkgKmFsbEltYWdlRmls
ZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIGNvdW50XSA9PSAyID8g
QFtdIDogcGFyYW1ldGVycy5fYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKKyAgICAKICAgICBbX2Zp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0gICAgX2ZpbGVFeHRlbnNpb25zUG9w
dXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3Bl
blBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBwYXJhbWV0ZXJzLl9hbGxv
d2VkRmlsZUV4dGVuc2lvbnNdOworICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tG
aWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBh
bmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdl
RmlsZUV4dGVuc2lvbnM6IGFsbEltYWdlRmlsZUV4dGVuc2lvbnNdOwogCi0gICAgTlNBcnJheSAq
YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRl
bnNpb25zVGl0bGVzOwogICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRl
clZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5z
aW9uc1BvcHVwVGFyZ2V0XTsKICAgICBpZiAoZmlsdGVyVmlldykKICAgICAgICAgW29wZW5QYW5l
bCBzZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2NWQwMTc5YTYxOGYzOTU4
MDMzMzdkNzY0ZjZmYjVmZDFlYTE1NDguLjNmNjA5NDA2MDVhZjY2MGQwMDk2OTAxMDUyNzkxZjgy
YjY0MWMyOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0yMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBG
aWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFs
bCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRp
b24tb3Blbi1wYW5lbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1jb3B5LWRlc3RpbmF0aW9uLW9wZW4tcGFuZWwuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9p
bWFnZXMvMTAweDEwMC1yZWQucHNkOiBBZGRlZC4KKyAgICAgICAgVGVzdHMgY2hvb3NpbmcgYSBQ
U0QgaW1hZ2UgdmlhIHRoZSBmaWxlIHBpY2tlciB3aWxsIGNvbnZlcnQgaXQgdG8gYW4KKyAgICAg
ICAgYWNjZXB0ZWQgZGVzdGluYXRpb24gdHlwZS4KKwogMjAyMC0wNi0yMSAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVv
LWJvcmRlci1yYWRpdXMtY2xpcHBpbmcuaHRtbCB3YXMgYSBmbGFreSBmYWlsdXJlIGFmdGVyIHIy
NjMyMjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFw
aS9pbWFnZS1jb3B5LWRlc3RpbmF0aW9uLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24t
b3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQyMThiYzRkYzgxMmU3MzM2OTlh
YmE1MjhiZGQ4MDkwZDExZTEwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1jb3B5LWRlc3RpbmF0aW9uLW9wZW4tcGFuZWwt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK09QRU4gRklMRSBQQU5FTAorVGVzdHMgYW4g
aW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyLCB3aWxsIGJlIGNvbnZlcnRlZCB0byBh
biBhY2NlcHRlZCBkZXN0aW5hdGlvbiBmb3JtYXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGZpbGVMaXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZpbGUudHlwZSBpcyAiaW1h
Z2UvcG5nIgorUEFTUyBmaWxlLnNpemUgaXMgbm9uLXplcm8uCitQQVNTIGltZy53aWR0aCBpcyAx
MDAKK1BBU1MgaW1nLmhlaWdodCBpcyAxMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1jb3B5LWRlc3RpbmF0aW9uLW9wZW4tcGFuZWwuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1jb3B5LWRl
c3RpbmF0aW9uLW9wZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTRjZWNhZTYwZTA2NTA3MThm
YWMzYTc0YTExZTJkYzY5YTdmZGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5l
bC5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBhY2Nl
cHQ9Ii5wbmciIG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9pbnB1dD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgYW4gaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZp
bGUgcGlja2VyLCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBkZXN0aW5hdGlvbiBm
b3JtYXQuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldE9wZW5Q
YW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy8xMDB4MTAwLXJlZC5wc2QnXSk7CisKKyAgICAg
ICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1
dCcpWzBdOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChpbnB1dEVsZW1lbnQub2Zm
c2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZzZXRXaWR0aCAvIDIsCisgICAgICAgICAgICAgICAg
aW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlucHV0RWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoYW5nZWQoZXZlbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzOworICAgICAgICAgICAg
c2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIsICIxIik7CisKKyAgICAgICAgICAgIGZpbGUgPSBm
aWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZS50eXBl
IiwgImltYWdlL3BuZyIpOworICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJmaWxlLnNpemUi
KTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Cisg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7CisKKyAgICAgICAgICAg
IGltZy5vbmxvYWQgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1n
LndpZHRoIiwgIjEwMCIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcuaGVpZ2h0Iiwg
IjEwMCIpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGltZy5maWxlID0gZmlsZTsKKworICAgICAgICAgICAgY29uc3QgcmVhZGVy
ID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZnVuY3Rp
b24oYUltZykgeyAKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkgeyAKKyAgICAg
ICAgICAgICAgICAgICAgYUltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIH0pKGltZyk7CisgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0
YVVSTChmaWxlKTsKKyAgICAgICAgfQorCisgICAgICAgIHJ1blRlc3QoKTsKKyAgICA8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzLzEwMHgxMDAtcmVkLnBzZCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzLzEwMHgx
MDAtcmVkLnBzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzRjY2FmZTNlNDgwNzJhYTZmNTcxNTVlMDYyMDk2NTU2
ZDAwYzM2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NTcwCnpjbWVIfmNUXkt1N3JAYGxxIShJ
MzFmJmVUY1l5I1J5JE1LX0NNcSFyNUs2JDFmWT1NN2YtOCFPTlU8UVJBfStXVgp6Sy1QKlY3OFY3
MlU2NGhAd3ohSDdtMlU/MnB4PH1TPylSUGp7XyR9M3kpJG9xYk1Ka2JKTkxlcXh4QDdjMj9yMXUK
elozT0hqNyYjfmE4NUo/fHhnUCNPJGN2RkhDTD08XjZLN2BkQnRrSmkyYUlUKms3eUt0QTlqWVl7
PkteRDUjKF9sCnoxQ3VjUDAhODk8U09JYEV1flpWfj53IWtjI0c+U08wMFN4QDBjIXd3e0xHQT9h
R3daI2hRR0hibnUhX1Z7SDQ5UQp6RzN3YDRiSDVOMntVWk9MTlJnaSprengqcFZBaSQqVkowOHJU
I1FxKnI1VSg8MEF1IT82cjVvXjNUejRIQWpUPjwKekN5dWgmaHxNVXc7VmVpS1c2Xj9mcEVDcSQw
LVJlZ1VZI1dxVnZHYzBvUj1qTVdAQ0h9VzQlO2FuaDRgfTdfLXhhCnp5aTVRSDN8dVoxQHs9Jk8h
azhoNjI9bH52RzV7MXQ7I1dOOUUwemw5VlNXUE9uVnlqJjVoVyVgUTZzKUZZVkdMQQp6TWc0QD9z
WTBwTEpjUCRqO1lrRmpYTD8hJlBuPzZMYj54fXhTd0lQb0VzNiElLXJDWEwtclU5bDM7JFVBT1ha
bD0KelVqdkBvUUh4aWhCUlBYT1pDXyt4PTY7Yy1SfDNFdCNBMzdsaSlfd1QwMik+VHBtT0puT203
RE9eMEAlaVU7Z1RPCnpJUVYpPWwxZWsyRUdASU12bkBuSXo2Qm84dkchakwjd2BDRnpQZ19VZSFz
RVVwPGNvU28tOT8wO3o4eDdyPjRzIQp6RDdIaVJMZSVefTd4Q1lvXz8yNTxgQyUzJk9jM0hiUUhW
eGp0NHQoTCNMX0ptaEBfJSlGKTktT1MlJn1TdzZBPT8KemFkY2Z7el5lS1QqdDBFdyFldXI8cDBA
ITRpdz07dVpJfWljJVVkOGQ2NXU7OE5+Pj5sLUQ4YURONSsyfTs2bSZZCnomSi1vMHhZI28rMF9E
cGpTdlheUjB3MEtnMklLKTdyfip4KDN5Z3B7dW1LTGg4TXB5JkZjayFZMm9NOGkwWHwzcQp6WCtR
JDkhOXVWTTxiZVhQOSY4NHNVXn1QKyl1MHZ9MVAkT0FJMVNFJE9XK0UpNChAXzMmPG1ifDBxX1A0
S0BkY1MKem09RnQ2Z3xyfWokUH1gSHhYPXtIOHchTk5wY3A2fk5gJUNhM3xhYFNmQ2BgQHMxKGA+
UllOflFOMUBadTEqaWtNCno0UnU1UChDXlIoNz1hbHU4YGdqZ1VgdjxfeVRidSsxVXdUP2d5K0ta
O2FxcWZUbW8wWmB7OD17Rzwqclo0dEsjJQp6O1h3by1iY0JPd0JqeU1mQGtEfT1TUj9fRkFkOFdG
cSFfNzBZTE88UzZ9Z0laQTx2TmExUUxOb0tuZG1xWE0hSkwKekkpUDdeT0lTPTtPREhBbUNEYXBJ
MnYtVCtnYU57NUI5b3wyRyRsRl97ZldgVUx9RTVFazYyOUhPKn0kOE9UMTMoCnpDQjdrJU5GMChP
JCR7aVlpWGtQRjdMZUFHRG9BeXRRPXxAMzR7NEIwQ2FhUTckdTh0ekdMSX1KPWFJTFBfbWZZTwp6
SklUR3xjTjk4QmkoKjZacH5PPGVsO3hDUyUwOXtvTisrZHtHREtDTj5Ra01sIUJoYj9oZ3dManFC
Yz00USt1Z0gKekcpMDtyJjRtXzBPUXRRT21DJE53WEtEOW51anE4VDQmOUwrTipCP1cobzUoRT07
IUkoXiFFJVVoNiUleTV5eX0qCnopLW09bFBCQ3NYVU5NPFcxRXcxQG1NTFlmVl4lWklGZHMxQSQr
NkB0PG94OVhhIWNnTzxtJS0qPHpDMkI8QE0jPQp6PCE4eXltb0p0LUIhNX17bkYzWThLKjNYaXI/
Nk98T3lRYClPQCU+NG1aRyZ7dXd0NnhURSVeZTdaZXtXayhDVVQKenlwO3E+eGt8Zn4mTTVWOzVT
QXs+bGZgR1BVeyRmc3ZVPUdod2p0WX1veTt5XnxHO2klND01YHNQZzBJbG9+Sy08CnpkfGJKVWdL
IUt1eyt2YCFBP0cwSDJJcz5CalMyMShnY0hfR3NHWk9gO2pQTDw2Km0+M08xP14rJTV7fHdzO0h7
Qgp6WUtyT3gpZHRvM1k2TFlDd05TTmV3UVh1PSl0KmdjUGpzSGhwT2A9SztLViFYdSkyd1FuRUM/
c1VGdlA+Z0JxRnwKeno4Vj1DVFEkeVRKayNXOHhAamhCWnFodVYqe3tYWW54WkFyK041PC0+anxv
aXh9JkxSM0VGfVZYc2NgY1kwST5DCnpZUFZ8LT1Ae3h2KklCTXByKm1KSXJwd2gkKEF9aWx0VUk4
bXI1QntQUF9JVnNqeV9lTnREbUk1TVpaPTV0JTBGSQp6bCkpOzQyN3x8akR1KGBzXjleZVo/LT88
VFQjZT0kUlReRDBDSys+JFE7YUsmdWI5OWxifHkoQ1doUiRSVk4taWsKemshZ2kjaFopaCMoTSlW
c1g/RHxgVmVXMzhXbk4/NlpOYWUhdnstSkBWRFo5SSZvYjY+Z0pyQWJYRGQ2YVJJNGhoCnp5Vmdx
OVE+flg8SChDRX5WYDlVJURZTG18JWUze2VVMUhtNGAqTT0kQjtsbE9sV3k2dT8xSm84Kilgakp2
VWprVAp6KndAPGtKTG95WUpDci16PGcmUlQrX2x7RWp6bVdmJDBkJSg5TiM8SEo0dX1tSXtvSHM/
d3NQaCYtdzlXIV55KFEKelJnLSZNYlg8NVlKNipiX3BpfDxmPzNtSyFzX257aXQjcDBwcnQybmYr
d0lvcFp0Un15elRmP1lobjB1SzxBfSN3CnpQYmJlc29+T0pKRkpHXkd1WGItR0A5RXk5LVZjMHFk
PWg8WGQ8Sn4mZD44bmhAKzB+TV8tKmpKPjk2Nj5fcGtPSgp6bkNkV2YoYlNkek1uSEgjWH40cmts
UiF5ZVF4Rl85SEUzaGR5PW5UPiNNMnNyTDlsPUQjXkMhUWg5UHI5ZWhNWHAKemhKPT1kSl9AckFU
TnVfRiZJK0YkekF5WXVnaHhiUyNORnZlKGBEMH1CanFGR0JDOHxjTXRNYVFNUmk0Nk1sWHVLCno2
ciZhK2lmTjFgJDQxOFBqdmJ1Z0ohQThYLVo7Q3N5dG9AUDRRSX1xZDEwMj90a2hZQFhVb3MjJXt+
LVFqRXs9bgp6N3lwcUwlJlgpTCZoZWo5SzQqYU0kPXx8JURzVTVRNjcmbVFnaGolPjFlYilPZ3ZX
XzRpNW5DOWxVJFJFbGIocUAKek1XdiNiJCRyVihsaSNLVXJ8ZH0/UEtgPmZPUVdSNHJ5VWg1aUJy
VGE+Nis+RChtT0l0R3g5Uko8fnEmWUphPDQ2CnpBbGFQPld6TmlPbChNbTZzIWU3alRQZj8jbnZ6
d1BeKTVSeWBfTWVhZEUkOShJVkwlNGF7QWBgJT5SQT9WRjc8Wgp6XkZyLX4lTkJNb2EkbUdfRnw+
SGo7XnJsfk9MQ1g9Rjc7aXljTnVNMiVDZXVBVFAtaEl7KDQyIWlsJHRSK0AtbGEKekR9N2hpPGpM
aHBAQH1xalViVEhTVllPJj1geEBJZFRpMU5mN3Z4X291cXI0bl9fJnQ4X1RxUWUtPDVuZnllP3J+
CnpkIWM+ZHcpTGQtO2BLSyt4Tmd7NnEqeWUrc0FwcikjYDthQHJ1PEU+SF96VURwP0ZnOV9BUnQ2
dk1wVURmaENQdwp6XnxyM3hgbXI+cl5tPl5gU3pXbiRgSV8+IzZAclMrWkVvOVl3YCopSyojMlJN
WHZlTGN6Qn10SDRKd093ayM9UzYKemRRPXJ6KSVyZDZgfDkwbHk5OylJKzlUZjZ3S3JeVU9TTUNG
Xio7NHxnKjktRXRmcWZ8LTJOKitjPlR+PVloSnN2CnpqI0YxfjAzNDdWYz1CV1hrMmVrbTlCZStz
SnlkJkd8OFYmYyl7Kj5yczZNQkRwZHFRRHQxK2dyPExLMColfXZmdAp6TX1EJlNZMG9rM1ZgYXlj
an5BWXhveWF7Z2R+KktEIUJaS2hvfUVyUy1QMWd+YFI8d01HdUspfFRpVllDb0lRV2UKej1pSGZB
X3R1bD1VQ3RsNztCP3tXTWVmQ2hPWkohUSt3OXRve0F+QzBrI19zYGBwWFdOOD9RS0NZM2k4VmFp
WV87CnpeWW00KHRMTHV5VSVQYUQrVnplYih7SjNtOEYjYm1tZitVbytvYHUtLXBSVCViYSZ9Sjs9
VE8pM2lwZDJzNlZMdQp6I3JUKUhGOGkrSS1Db15vNTVwaGM/Y3cpNHtXYkh+a0c7OCVuMihENHdF
QyhhK2RNd2pANiYoZiQmNHF4UGN4bmwKeko8RUhwX2BManUoVGxec3gmNzhRNUl4WlFRdTE+Nl9x
REg3VStzQjQ+Mj5wOSRsIXhGWD5XJCE9RCQ7WXhBIzV3CnplZH52KTR9Qyt+QUlUcH1Ke2Y7JWBX
KjIyLWYtSVJGYVZAUj5eT3xtU2k+cjk/Mzt5diViKzQkaWo3IWhmc0hVZQp6O0A9X1NiVj1HRFF9
N3lscT4lJThJWUozKWpxNmlvVnlySTVzdE4kZUFRMTNDNGlJQTExQiFvX1Y3fj5BazZ0bDYKektL
ZWZ5YFBUOXtqeHF1JiN6cEBwQml+dmMkNF5HYSRKXzlxcn0pKylAVTZZb3s8YzVrO3RsZXh7ZVMp
K3sqMDVsCkZfaDB8bWx+dz0lCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402514</attachid>
            <date>2020-06-22 15:13:44 -0700</date>
            <delta_ts>2020-06-22 22:52:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200622151344.patch</filename>
            <type>text/plain</type>
            <size>62224</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkZDkxNGQwMjNjODc1MjlmMzE2NWUw
YTJjZmVjMDZkYTRmODIyZmYuLjc5MGI2NTY0NzE0ZmQwMTY0NDIxOTEyNmU0NmU2MzZiYjc4M2Yx
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBDaGVjayBHaWdhY2FnZSB1c2FnZSBiZWZvcmUgbGF1bmNoaW5nIFZNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZGM4NDYxY2YwOTVmNDM0NjE2NDVlMTA2NDNmMmRkYTIwMzE5MzcxMy4uODNk
YTQ5N2NmYjJjMzhhNzUzM2FjMTE5YzBkNzZmZWNhMjk0NTk3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc4IEBACisyMDIwLTA2LTIyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGlt
YWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZl
cnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4
NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElm
IHRoZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBpbWFnZSBpcyBub3Qgb25lIG9mIHRoZSBhbGxvd2Vk
IHR5cGVzLCB0aGUKKyAgICAgICAgaW1hZ2Ugd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGZpcnN0
IGRlc3RpbmF0aW9uIGFsbG93ZWQgaW1hZ2UgdHlwZSBhbmQKKyAgICAgICAgaXQgd2lsbCBiZSB3
cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUuIFRoaXMgZmlsZSBpcyBhIHJlcGxhY2VtZW50IHRv
IHRoZQorICAgICAgICBvcmlnaW5hbCBpbWFnZSwgc28gdGhlIHR5cGUsIHRoZSBzaXplIGFuZCB0
aGUgZGF0YSB3aWxsIGJlIHJlYWQgZnJvbSBpdAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBzZWxl
Y3RlZCBpbWFnZS4KKworICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OnR5cGUgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjb250ZW50VHlwZUZvckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZTo6ZGVzdGluYXRpb25UeXBlRm9yRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlOjpuYW1lRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjb21w
dXRlTmFtZUFuZENvbnRlbnRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUu
aDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OmlzRmlsZVR5cGVQYWNrYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OnNob3VsZFJl
cGxhY2VGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNvbXB1dGVOYW1l
QW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIGZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBmaWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAg
ICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjphbGxvd2VkVHlwZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VNZWRpYUZpbGVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJDbGll
bnQ6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlOjpwYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oOgorICAgICAgICBSZXBsYWNl
IHRoZSBtZW1iZXIgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkIGJ5IHRoZSBpbmxpbmUg
ZnVuY3Rpb24KKyAgICAgICAgcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpyZXBsYWNlbWVudFNob3Vs
ZEJlR2VuZXJhdGVkIGNvbnN0KToKKyAgICAgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBkZXN0aW5h
dGlvblR5cGUgaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRlbnRUeXBlIGFuZAorICAgICAgICB0
aGUgcmVwbGFjZW1lbnQgZmlsZSBoYXMgbm90IGJlZW4gY3JlYXRlZCB5ZXQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUp
OgorICAgICAgICBDcmVhdGVzIGEgcmVwbGFjZW1lbnQgaW1hZ2UuCisKKzIwMjAtMDYtMjEgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFj
T1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNl
bGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJh
Y2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAg
IEFkZCBsb2NhbGl6YWJsZSBzdHJpbmdzIGZvciB0aGUgT3BlblBhbmVsIGZpbHRlci4KKworICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgRXhwb3J0IGEgTUlN
RVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJlbmNlZCBmcm9tIFdlYktpdCBwcm9qZWN0Lgor
CisKIDIwMjAtMDYtMjEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAg
IENvbnZlcnQgbXVjaCBvZiB0aGUgU1ZHIHN0cmluZyBwYXJzaW5nIGNvZGUgdG8gdXNlIE9wdGlv
bmFsIGJhc2VkIHJldHVybiB2YWx1ZXMgcmF0aGVyIHRoYW4gb3V0LXBhcmFtZXRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNTAyNGIxMjQ2MWE1YzYyZDAzMzRiY2Q5ZjEwZDU1ZDQ4NDMyMWU4MC4uYTdmNTY4Yzky
MTBhZGRjMjM2MTAyOTE2NzE2MTI4MzE3YTc5MWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxl
IGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVk
IHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBl
cyBpbiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAg
ICAgICAgaW1hZ2UgZm9ybWF0LCBhZGQgYSBuZXcgaXRlbSBpbiB0aGUgT3BlblBhbmVsIGZpbHRl
ciBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6
CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9u
c10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5z
aW9uc1RpdGxlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzUHJpdmF0ZS5oOgorCiAyMDIwLTA2LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBmYWlscyB0byBsZWF2ZSBhdWRpbyByb3V0aW5n
IGFyYml0cmF0aW9uIGR1cmluZyBuYXZpZ2F0aW9uLCBjbG9zaW5nLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmlu
ZGV4IDYwYjMyZTQ2ZmM0MjkwODIzYTYyOWJkYTNlZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQz
YzZkNTJhOGE4YWYxNTVlNmU4ZWU4ZjkxMjAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3
ICsxNDUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChj
b25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1l
IHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3Qg
U3RyaW5nJiBzdWZmaXggPSB7IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhh
bmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vz
c1Blcm1pc3Npb24gPSBGaWxlQWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVF
eGlzdHMgPSBmYWxzZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlJik7CiAvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhl
IGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0
ZmZhODlkNGRjZGY0MGFjMWIxYjg3ZC4uM2FjYjg2YWM3NzVjZGFkZjcyNWNkODgwODhkMmI1Y2Q0
YjE0YjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMs
NyArOTMsNyBAQCBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVE
aXJlY3RvcnkoKTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBwbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogewogICAgIHBsYXRm
b3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKQEAgLTExMyw5ICsx
MTMsMTMgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUgKICAgICBDU3RyaW5nIHByZWZpeFV0Zjgg
PSBwcmVmaXgudXRmOCgpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4
LmRhdGEoKSwgcHJlZml4VXRmOC5sZW5ndGgoKSk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBw
ZW5kKCJYWFhYWFgiLCA2KTsKKworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4K
KyAgICBDU3RyaW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAg
ICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFu
ZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBsYXRmb3JtRmls
ZUhhbmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VXRmOC5s
ZW5ndGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1
Y2EwZjVkZi4uZmEwYjUzMWZlMTBmZjc0ZWJhYjg2NWYzY2EwOTE1ZGExZDk1NzUxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBWZWN0
b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxl
bmFtZS5nZXQoKSwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKaW5kZXggYzlmNTAxNDM2YWJjYzgwOTRlODQxNDgwZDIxZmUzNmE0NzFlODFmZi4uYjNj
MDQwMWI1MDZmZGNlMzIzMmVkNmZlZmJiYmYwZTUyZDEwMDNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBnZXRWb2x1
bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwogICAgIGNvbnN0
IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKaW5kZXggNjU5ZGZkNTI3MjdkYzllZjY5OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4u
YjYzMTQ5NTczYTQ4NDFmZTYwMDFlZWZhZmRkMDA5MmNmYzc0MWFhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2Vu
ZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBh
Y3Rpb24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVF
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJp
bmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCAx
NjQ3ZDIzZmZhYWNmZDM4ZDQ1MTJiM2ZmNDZiOTAwNGRkOTkzZmU1Li5kMzYwYTAzODAyZDgyZWU5
YzQ5MWQ5YjU0NWFhNjNmNGQ4MjczMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5s
cHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MKQEAgLTYxLDYgKzYxLDE1IEBACiAvKiBOYW1lIG9mIGFwcGxpY2F0
aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluICovCiAiJUAgV2Vi
Q3J5cHRvIE1hc3RlciBLZXkiID0gIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IjsKIAorLyogQXVk
aW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIgKi8KKyIlQCBhdWRpbyIgPSAiJUAgYXVkaW8i
OworCisvKiBJbWFnZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciAqLworIiVAIGltYWdlIiA9
ICIlQCBpbWFnZSI7CisKKy8qIFZpZGVvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyICovCisi
JUAgdmlkZW8iID0gIiVAIHZpZGVvIjsKKwogLyogTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJl
ciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3Mg
bXVsdGlwbGUgZmlsZXMgKi8KICIlZCBmaWxlcyIgPSAiJWQgZmlsZXMiOwogCkBAIC0xMTUsNiAr
MTI0LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJBbGlnbiBSaWdodCAoVW5kbyBhY3Rp
b24gbmFtZSkiID0gIkFsaWduIFJpZ2h0IjsKIAorLyogQWxsIEZpbGVzIGluIGZpbGVyIHBpY2tl
ciAqLworIkFsbCBGaWxlcyIgPSAiQWxsIEZpbGVzIjsKKwogLyogQnV0dG9uIHRpdGxlIGluIFN0
b3JhZ2UgQWNjZXNzIEFQSSBwcm9tcHQgKi8KICJBbGxvdyAoY3Jvc3Mtc2l0ZSBjb29raWUgYW5k
IHdlYnNpdGUgZGF0YSBhY2Nlc3MpIiA9ICJBbGxvdyI7CiAKQEAgLTEzNiw2ICsxNDgsOSBAQAog
LyogV0tFcnJvckF0dHJpYnV0ZWRTdHJpbmdDb250ZW50RmFpbGVkVG9Mb2FkIGRlc2NyaXB0aW9u
ICovCiAiQXR0cmlidXRlZCBzdHJpbmcgY29udGVudCBmYWlsZWQgdG8gbG9hZCIgPSAiQXR0cmli
dXRlZCBzdHJpbmcgY29udGVudCBmYWlsZWQgdG8gbG9hZCI7CiAKKy8qIEF1ZGlvIEZpbGVzIGlu
IGZpbGVyIHBpY2tlciAqLworIkF1ZGlvIEZpbGVzIiA9ICJBdWRpbyBGaWxlcyI7CisKIC8qIE1l
bnUgaXRlbSBsYWJlbCBmb3IgYXV0b21hdGljIHRyYWNrIHNlbGVjdGlvbiBiZWhhdmlvciAqLwog
IkF1dG8gKFJlY29tbWVuZGVkKSIgPSAiQXV0byAoUmVjb21tZW5kZWQpIjsKIApAQCAtMjY1LDYg
KzI4MCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiQ3JlYXRlIExpbmsgKFVuZG8gYWN0
aW9uIG5hbWUpIiA9ICJDcmVhdGUgTGluayI7CiAKKy8qIEN1c3RvbSBGaWxlcyBpbiBmaWxlciBw
aWNrZXIgKi8KKyJDdXN0b20gRmlsZXMiID0gIkN1c3RvbSBGaWxlcyI7CisKIC8qIEN1dCBjb250
ZXh0IG1lbnUgaXRlbSAqLwogIkN1dCIgPSAiQ3V0IjsKIApAQCAtNDA5LDYgKzQyNyw5IEBACiAv
KiBJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0gKi8KICJJZ25vcmUgU3BlbGxpbmci
ID0gIklnbm9yZSBTcGVsbGluZyI7CiAKKy8qIEltYWdlIEZpbGVzIGluIGZpbGVyIHBpY2tlciAq
LworIkltYWdlIEZpbGVzIiA9ICJJbWFnZSBGaWxlcyI7CisKIC8qIFVuZG8gYWN0aW9uIG5hbWUg
Ki8KICJJbmRlbnQgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbmRlbnQiOwogCkBAIC05OTEsNiAr
MTAxMiw5IEBACiAvKiBWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMg
d2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0gKi8KICJWYWx1ZSBtdXN0IGJl
IGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIgPSAiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3Ig
ZXF1YWwgdG8gJXMiOwogCisvKiBWaWRlbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJWaWRl
byBGaWxlcyIgPSAiVmlkZW8gRmlsZXMiOworCiAvKiBQaGlzaGluZyB3YXJuaW5nIGRlc2NyaXB0
aW9uICovCiAiV2FybmluZ3MgYXJlIHNob3duIGZvciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiBy
ZXBvcnRlZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91
IGludG8gYmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiIg
PSAiV2FybmluZ3MgYXJlIHNob3duIGZvciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRl
ZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8g
YmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDMyYTNiNjk4OWZhYjZlZDY0MDQxYjkwYjlkZWM0OTNm
NjQwMzExNTYuLmI3NzI0ZTgxYWY4MjhhMDFlMTY4OGJhZDY2ZWU5Y2QwNmJjZTBlYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNzIsOSArNzIsMTAgQEAgVVJMUmVnaXN0cnkmIEJsb2JV
UkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotQmxvYjo6
QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQor
QmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0
eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUpCiAgICAgOiBtX2ludGVybmFsVVJMKFdURk1v
dmUodXJsKSkKICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICwgbV9kZXN0aW5hdGlv
blR5cGUoV1RGTW92ZShkZXN0aW5hdGlvblR5cGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5o
CmluZGV4IDYxNGQ4MDlkMjA4OTNkNWVmZTAwYzgzOTJiM2FlMzY1MmJkYTJhYzUuLmIyMjQ3OTRl
ODA5YjQ3MTZiMjFkZTJhNGU3NDdlYmViMjgyYTdiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CbG9iKCk7CiAKICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwoKSA/IG1fdHlw
ZSA6IG1fZGVzdGluYXRpb25UeXBlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBs
b25nIGxvbmcgc2l6ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHByb3RlY3RlZDoKICAgICBCbG9i
KFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAg
IGVudW0gVW5pbml0aWFsaXplZENvbnRydWN0b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9
OwotICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBl
KTsKKyAgICBCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlw
ZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9u
Q29udHJ1Y3RvciB7IGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IgfTsKICAgICBCbG9iKERlc2Vy
aWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5
cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxl
QmFja2VkUGF0aCk7CkBAIC0xMzEsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV9pbnRl
cm5hbFVSTDsKIAogICAgIFN0cmluZyBtX3R5cGU7CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25U
eXBlOwogCiAgICAgbXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IG1fc2l6ZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA4ZDZlMzg3Mzg1NTEzZGRkNDFlMDM3MjQw
OThiNDMyZWFjZWNlYmMwLi45NzViYjk0OTFiMjg1OGYzOGQ1NjRhMmY1ODY0MTM2M2FiOTA0NWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTQ2LDIwICs0NiwyMSBAQCBSZWY8RmlsZT4g
RmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgcmVsYXRpdgogICAgIHJldHVybiBmaWxlOwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCitSZWY8
RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1l
T3ZlcnJpZGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0
cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBlOwotICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5
cGUocGF0aCwgbmFtZU92ZXJyaWRlLCBuYW1lLCB0eXBlKTsKKyAgICBTdHJpbmcgdHlwZSA9IGNv
bnRlbnRUeXBlRm9yRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUpOworICAgIFN0cmluZyBkZXN0aW5h
dGlvblR5cGUgPSBkZXN0aW5hdGlvblR5cGVGb3JGaWxlKHBhdGgsIHR5cGUsIGFsbG93ZWRUeXBl
cyk7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lRm9yRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUsIGRl
c3RpbmF0aW9uVHlwZSk7CiAKICAgICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVC
bG9iVVJMKGludGVybmFsVVJMLCBwYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IHBh
dGggfSwgV1RGTW92ZShuYW1lKSkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxVUkwsIHBhdGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9u
VHlwZSk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxV
UkwpLCBTdHJpbmcgeyBwYXRoIH0sIFdURk1vdmUobmFtZSksIFdURk1vdmUodHlwZSksIFdURk1v
dmUoZGVzdGluYXRpb25UeXBlKSkpOwogfQogCi1GaWxlOjpGaWxlKFVSTCYmIHVybCwgU3RyaW5n
JiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5pbml0
aWFsaXplZENvbnRydWN0b3IsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6OkZp
bGUoVVJMJiYgdXJsLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB0eXBl
LCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250
cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZGVzdGluYXRpb25U
eXBlKSkKICAgICAsIG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9uYW1lKFdURk1vdmUo
bmFtZSkpCiB7CkBAIC0xMjMsMzIgKzEyNCw0OCBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmll
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6dGltZUNsaXAocmVzdWx0KTsKIH0KIAotdm9pZCBG
aWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZl
Y3RpdmVDb250ZW50VHlwZSkKK1N0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKLSNpZiBFTkFCTEUo
RklMRV9SRVBMQUNFTUVOVCkKLSAgICBpZiAoc2hvdWxkUmVwbGFjZUZpbGUocGF0aCkpIHsKLSAg
ICAgICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZShwYXRoLCBuYW1l
T3ZlcnJpZGUsIGVmZmVjdGl2ZU5hbWUsIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGVmZmVjdGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUu
aXNFbXB0eSgpID8gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJy
aWRlOwotICAgIHNpemVfdCBpbmRleCA9IGVmZmVjdGl2ZU5hbWUucmV2ZXJzZUZpbmQoJy4nKTsK
KyAgICBTdHJpbmcgbmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CisgICAgU3RyaW5nIGNvbnRlbnRU
eXBlOworICAgIHNpemVfdCBpbmRleCA9IG5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAo
aW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZl
ZmZlY3RpdmVDb250ZW50VHlwZSwgJmVmZmVjdGl2ZU5hbWUsIGluZGV4XSB7Ci0gICAgICAgICAg
ICBlZmZlY3RpdmVDb250ZW50VHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGVmZmVjdGl2ZU5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSkpLmlzb2xhdGVkQ29w
eSgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJmNvbnRlbnRUeXBlLCAmbmFt
ZSwgaW5kZXhdIHsKKyAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24obmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0
ZWRDb3B5KCk7CiAgICAgICAgIH0pOwogICAgIH0KKyAgICByZXR1cm4gY29udGVudFR5cGU7CiB9
CiAKLVN0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQor
U3RyaW5nIEZpbGU6OmRlc3RpbmF0aW9uVHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzKQog
ewotICAgIFN0cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBlOwotICAgIGNvbXB1dGVOYW1lQW5k
Q29udGVudFR5cGUocGF0aCwgU3RyaW5nKCksIG5hbWUsIHR5cGUpOwotCisjaWYgRU5BQkxFKEZJ
TEVfUkVQTEFDRU1FTlQpCisgICAgaWYgKGlzRmlsZVR5cGVQYWNrYWdlKHBhdGgpKQorICAgICAg
ICByZXR1cm4gImFwcGxpY2F0aW9uL3ppcCJfczsKKworICAgIGlmIChhbGxvd2VkVHlwZXMuY29u
dGFpbnModHlwZSkpCisgICAgICAgIHJldHVybiB0eXBlOworICAgIAorICAgIGZvciAoYXV0byYg
YWxsb3dlZFR5cGUgOiBhbGxvd2VkVHlwZXMpIHsKKyAgICAgICAgaWYgKGFsbG93ZWRUeXBlID09
ICJpbWFnZS8qIikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOworICAgICAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoYWxsb3dlZFR5
cGUpKQorICAgICAgICAgICAgcmV0dXJuIGFsbG93ZWRUeXBlOworICAgIH0KKyNlbmRpZgogICAg
IHJldHVybiB0eXBlOwogfQogCitTdHJpbmcgRmlsZTo6bmFtZUZvckZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblR5cGUpCit7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNFbXB0eSgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworI2lmIEVO
QUJMRShGSUxFX1JFUExBQ0VNRU5UKQorICAgIGlmIChkZXN0aW5hdGlvblR5cGUgPT0gImFwcGxp
Y2F0aW9uL3ppcCJfcykKKyAgICAgICAgbmFtZSA9IG1ha2VTdHJpbmcobmFtZSwgIi56aXAiX3Mp
OworI2VuZGlmCisgICAgcmV0dXJuIG5hbWU7Cit9CisKIGJvb2wgRmlsZTo6aXNEaXJlY3Rvcnko
KSBjb25zdAogewogICAgIGlmICghbV9pc0RpcmVjdG9yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5k
ZXggZDJmOTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3NDFmODNlZmY3OC4uMGZhYjNhOWZjNjc3
ZjQ2MmYwYzc2YmQ3ZTZlZTgzNzNhNWE4NzFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGgg
YW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5k
IGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJv
dmlkZWQgaW4gdGhlIHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSwgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0pOwogCiAgICAgLy8gQ3JlYXRlIGEgRmlsZSB1
c2luZyB0aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KICAgICBzdGF0aWMgUmVmPEZpbGU+IGNy
ZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKQEAgLTc2LDI4
ICs3NiwyNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBsYXN0TW9kaWZp
ZWQoKSBjb25zdDsgLy8gTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBFcG9jaC4KICAgICBj
b25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkT3ZlcnJpZGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RNb2RpZmllZERhdGVPdmVycmlkZTsgfSAvLyBOdW1iZXIgb2YgbWlsbGlzZWNv
bmRzIHNpbmNlIEVwb2NoLgogCi0gICAgc3RhdGljIFN0cmluZyBjb250ZW50VHlwZUZvckZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsK
KyAgICBzdGF0aWMgU3RyaW5nIGRlc3RpbmF0aW9uVHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIHR5cGUgPSB7IH0sIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxs
b3dlZFR5cGVzID0geyB9KTsKKyAgICBzdGF0aWMgU3RyaW5nIG5hbWVGb3JGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25UeXBlID0geyB9KTsKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5U
KQotICAgIHN0YXRpYyBib29sIHNob3VsZFJlcGxhY2VGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7
CisgICAgc3RhdGljIGJvb2wgaXNGaWxlVHlwZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoKTsK
ICNlbmRpZgogCiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBG
aWxlKFVSTCYmLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsK
KyAgICBGaWxlKFVSTCYmLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB0
eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUpOwogICAgIEZpbGUoVmVjdG9yPEJsb2JQYXJ0
VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBQcm9wZXJ0eUJhZyYpOwogICAgIEZpbGUoY29uc3QgQmxvYiYsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAgICAgRmlsZShjb25zdCBGaWxlJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIEZp
bGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOwogCi0gICAgc3RhdGljIHZvaWQgY29t
cHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29u
dGVudFR5cGUpOwotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAgIHN0YXRpYyB2b2lk
IGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBT
dHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSNlbmRpZgotCiAgICAgU3RyaW5nIG1fcGF0
aDsKICAgICBTdHJpbmcgbV9yZWxhdGl2ZVBhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KaW5kZXggNjY0ZjlhNTM2MTNkZjI2Y2ExN2M3MDdjMjFi
NTBjNjQ2NDUyMDRlNi4uMTA1NDk4YmVjYWZhODBiMjcxNjc0YTFjMzE0NDc0MDMxNzE1ZDBlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZpbGU6OnNob3VsZFJlcGxhY2VGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkKK2Jvb2wgRmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTcsMTMgKzU3LDYgQEAgYm9vbCBGaWxlOjpzaG91bGRSZXBsYWNlRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuIFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXV0aSwga1VUVHlwZVBhY2thZ2UpOwogfQogCi12b2lkIEZpbGU6OmNvbXB1dGVOYW1lQW5k
Q29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2
ZUNvbnRlbnRUeXBlKQotewotICAgIEFTU0VSVCghRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1l
KHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0aCB3aXRob3V0
IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KLSAgICBlZmZlY3RpdmVDb250
ZW50VHlwZSA9ICJhcHBsaWNhdGlvbi96aXAiX3M7Ci0gICAgZWZmZWN0aXZlTmFtZSA9IG1ha2VT
dHJpbmcoKG5hbWVPdmVycmlkZS5pc051bGwoKSA/IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShwYXRoKSA6IG5hbWVPdmVycmlkZSksICIuemlwIl9zKTsKLX0KLQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA1ZTFkNGMwMGE5YzA2OGM4MDMxYzI0Y2Nk
NjBhYjIwYTZhZmEwNjBiLi40M2MwNmU2YzAzNWI5MzhlYjZlOTUxMjlmMTY4MDI3YTVkZDRlNDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5jcHAKQEAgLTY0LDE1ICs2NCwxNSBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9y
aWdpbk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXZvaWQgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUpCiB7CiAgICAgaWYgKGlzTWFpblRo
cmVhZCgpKSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJs
LCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjpjcmVhdGUocGF0aCwgbmFtZSwgY29udGVudFR5cGUsIGRlc3RpbmF0aW9uVHlw
ZSksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRD
b3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwg
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNv
bGF0ZWRDb3B5KCksIGRlc3RpbmF0aW9uVHlwZSA9IGRlc3RpbmF0aW9uVHlwZS5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCwgbmFtZSwgY29udGVudFR5cGUsIGRl
c3RpbmF0aW9uVHlwZSksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBhOWM3OWZlMjI5
MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi4wZTBmNmYzYmU4YTM5ZmM4Mzk2ZjFiOTNi
YWE4M2M5MzkyNzAzMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBl
KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1ZTRiODIwZWI2ODBmN2NjNDI2
NTVmMGI5ZTJkNmQuLjkwZWE2ZDA1MWRkODc0MzI3YjJmMDBkOTEyNTY3YWIyM2FiNDQ5MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZpbGVzLCBSZXF1
ZXN0SWNvbiBzaG91bGRSZXF1ZXN0CiAgICAgcHJvdGVjdGVkSW5wdXRFbGVtZW50LT5zZXRDaGFu
Z2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAKLXZvaWQgRmls
ZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
JiBwYXRocywgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQordm9pZCBG
aWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcywgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQogewogICAgIGlmICghZGlzcGxheVN0cmlu
Zy5pc0VtcHR5KCkpCiAgICAgICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlTdHJpbmc7CkBA
IC00MTMsOCArNDEzLDggQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBW
ZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgICAgICBtX2RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci0+Y2FuY2VsKCk7CiAKICAgICBpZiAoIWFsbG93c0RpcmVjdG9y
aWVzKCkpIHsKLSAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5m
bykgewotICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxl
SW5mby5kaXNwbGF5TmFtZSk7CisgICAgICAgIGF1dG8gZmlsZXMgPSBwYXRocy5tYXAoWyZhbGxv
d2VkVHlwZXNdKGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3Jl
YXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lLCBhbGxvd2VkVHlwZXMpOwog
ICAgICAgICB9KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVzKSksIGljb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCmluZGV4IDA4ZjYyMWZlNWMzZDZkMzAzODY3YWU5ZjA3MTdlYWRkMzU2ZWNi
YWEuLmQzNDkzMWY2NTlkYjQ1NjZmNTk5MWJjY2IyNjUzYjY1YjM4OThmZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJp
bmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZmlsZXNDaG9zZW4o
Y29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxwdHIpIGZpbmFsOworICAgIHZvaWQgZmlsZXNDaG9z
ZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9IHsg
fSwgSWNvbiogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIC8vIEZpbGVJY29uTG9hZGVyQ2xpZW50
IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgaWNvbkxvYWRlZChSZWZQdHI8SWNvbj4mJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdi
Y2Y0NTM4ZmVkODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4uNTQxOWI4YWQ4OTA2MGJkYjNhYmRhODgz
N2RiN2JmOTBhYzU3MDUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVD
aG9vc2VyLmgiCiAKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRmlsZUNob29zZXI6OkZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQpAQCAtNDQsNiArNDYs
MTkgQEAgUmVmPEZpbGVDaG9vc2VyPiBGaWxlQ2hvb3Nlcjo6Y3JlYXRlKEZpbGVDaG9vc2VyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IEZpbGVDaG9vc2UKIAogRmlsZUNob29zZXI6On5GaWxlQ2hvb3Nl
cigpID0gZGVmYXVsdDsKIAorSGFzaFNldDxTdHJpbmc+IEZpbGVDaG9vc2VyOjphbGxvd2VkVHlw
ZXMoKSBjb25zdAoreworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXM7CisgICAgZm9y
IChhdXRvJiB0eXBlIDogbV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAgIGFsbG93
ZWRUeXBlcy5hZGQodHlwZSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3NldHRpbmdz
LmFjY2VwdEZpbGVFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IE1JTUVUeXBlUmVn
aXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykg
PyBleHRlbnNpb24ucmlnaHQoZXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSkgOiBleHRlbnNpb24pOwor
ICAgICAgICBpZiAoIXR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWxsb3dlZFR5cGVzLmFk
ZCh0eXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbG93ZWRUeXBlczsKK30KKwogdm9pZCBGaWxl
Q2hvb3Nlcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTcwLDcg
Kzg1LDcgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CiAg
ICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5k
KEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWUpKTsKLSAgICBtX2NsaWVudC0+ZmlsZXNDaG9z
ZW4oZmlsZXMpOworICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgYWxsb3dlZFR5cGVz
KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTg5LDcgKzEwNCw3IEBAIHZv
aWQgRmlsZUNob29zZXI6OmNob29zZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcywgY29uc3QgU3RyaW5nCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZp
bGVzOwogICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCiAgICAgICAgIGZpbGVz
LmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7Ci0gICAgbV9jbGllbnQtPmZp
bGVzQ2hvc2VuKGZpbGVzLCBkaXNwbGF5U3RyaW5nLCBpY29uKTsKKyAgICBtX2NsaWVudC0+Zmls
ZXNDaG9zZW4oZmlsZXMsIHsgfSwgZGlzcGxheVN0cmluZywgaWNvbik7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0Mzg3OTVhNzZm
ZWM5YTNkYmY3YzZhMDg0ZWEwODg5NS4uN2Q5MTllYjljZDU1NjZiYTI3YzQ1YmI1NDFjOGMzNTdi
ZDVhMzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc2
LDcgKzc3LDcgQEAgY2xhc3MgRmlsZUNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgfkZpbGVDaG9vc2VyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGZp
bGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzID0geyB9LCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlTdHJpbmcgPSB7IH0sIEljb24qID0gbnVsbHB0cikgPSAwOwogfTsKIAogY2xhc3MgRmls
ZUNob29zZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2hvb3Nlcj4gewpAQCAtMTAyLDYgKzEw
Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRmlsZUNob29zZXIoRmlsZUNob29zZXJDbGll
bnQqLCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAKKyAgICBIYXNoU2V0PFN0cmluZz4g
YWxsb3dlZFR5cGVzKCkgY29uc3Q7CisKICAgICBGaWxlQ2hvb3NlckNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CiAgICAgRmlsZUNob29zZXJTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVk
ZTJhZGIwMWExNTUwZTJmZTUwZDUwNjQzYjNmYTNmLi4xM2UyNTE2Zjk2MTI2NTY3ZTE1OWVhZTVm
NTVjMjI0YjA5MGVkODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRh
YmxlIGZvciBiZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0
eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04g
cmVzb3VyY2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAK
aW5kZXggNWFiZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNi4uYTcyNmU3MjU1
NzExNTk2NDg1Y2RhYTE0OTk2YjM4YWYwZGRmNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAt
MzIsMTUgKzMyLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoKQorQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblR5cGUpCiAgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fbmFtZShuYW1lKQor
ICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX2Rlc3RpbmF0aW9uVHlwZShkZXN0aW5hdGlvblR5
cGUpCiB7CiB9CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKCFtX3JlcGxhY2Vt
ZW50UGF0aC5pc051bGwoKSkKKyAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpICYm
IG1fZGVzdGluYXRpb25UeXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3MpCiAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CkBAIC00OCw3
ICs1MSw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgp
CiBjb25zdCBTdHJpbmcmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCgpCiB7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpKQogICAgICAgICBn
ZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5p
c051bGwoKSkKQEAgLTYxLDcgKzY0LDcgQEAgY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnBhdGgoKQogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
c2l6ZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCgpKQogICAgICAgICBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogI2VuZGlmCiAKQEAg
LTczLDcgKzc2LDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkK
ICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlvbnMgZm9yIGdlbmVy
YXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAgLy8gVW5mb3J0dW5h
dGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUgaGFuZGxpbmcgLSBG
aWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJseWluZyBmaWxlcyBj
aGFuZ2UuCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB8fCAhbV9yZXBs
YWNlbWVudFBhdGguaXNOdWxsKCkpCisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwo
KSB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAjZW5kaWYKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBA
IC04Niw3ICs4OSw4IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5n
TW9kaWZpY2F0aW9ucygpCiAgICAgLy8gdGhlIGNvc3Qgb2YgdHJhY2tpbmcgZmlsZSBtb2RpZmlj
YXRpb25zLgogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgbV9yZXBsYWNlbWVu
dFNob3VsZEJlR2VuZXJhdGVkID0gRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUobV9wYXRoKTsKKyAg
ICBpZiAoRmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UobV9wYXRoKSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvblR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTog
U29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lz
dGVtIG9iamVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KQEAgLTk3LDcgKzEwMSw3
IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9u
cygpCiAgICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSBtZXRhZGF0YS52YWx1ZSgpLm1v
ZGlmaWNhdGlvblRpbWU7CiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBpZiAo
bV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChyZXBsYWNlbWVudFNob3Vs
ZEJlR2VuZXJhdGVkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaApp
bmRleCA2NTg4MjlkMDdmY2ZiZDZiMDJhMjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li5iZGQxZWY4Mjk1
MmVmNDE0MTE3NmQzYzY5YjgxN2ExMzIyYzMxN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCi0jZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNSw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAg
c3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoLCBuYW1lLCB0eXBl
LCBkZXN0aW5hdGlvblR5cGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UoKTsKQEAgLTUyLDIyICs1MSwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJldm9rZUZpbGVBY2Nlc3MoKTsKIAogcHJvdGVjdGVkOgotICAgIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0
eXBlID0geyB9LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKIHByaXZh
dGU6CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgYm9vbCByZXBsYWNlbWVudFNo
b3VsZEJlR2VuZXJhdGVkKCkgY29uc3Q7CiAgICAgdm9pZCBnZW5lcmF0ZVJlcGxhY2VtZW50Rmls
ZSgpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOworICAgIFN0cmluZyBtX25hbWU7Cisg
ICAgU3RyaW5nIG1fdHlwZTsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblR5cGU7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRQYXRoOwotICAg
IGJvb2wgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3NpemUgeyAwIH07CiAgICAgTWFya2FibGU8V2FsbFRp
bWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7
CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVlYzc3N2E4Njk5MDY3MTE4Y2JjZDU1MjhlOGY0ZmZl
OTJhNDQ4NmIuLjlkNGZhYjRjOGYxYmRjMjE1YzkyMDk4ZjdkMTgzMTQ2ZTkxODc1YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9C
bG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDI1ICsyOCw2NiBAQAogCiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKKyNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNp
bXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSAhPSBt
X2Rlc3RpbmF0aW9uVHlwZSAmJiBtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKTsKK30KKwogdm9p
ZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIHsKLSAg
ICBBU1NFUlQobV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpOwotICAgIEFTU0VSVChtX3JlcGxh
Y2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpOworICAgIEFTU0VSVChyZXBsYWNlbWVudFNob3VsZEJl
R2VuZXJhdGVkKCkpOwogCiAgICAgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKIAotICAgIGF1dG8g
Z2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUobV9w
YXRoKTsKLSAgICBpZiAoIWdlbmVyYXRlZEZpbGUuaXNOdWxsKCkpCi0gICAgICAgIG1fcmVwbGFj
ZW1lbnRQYXRoID0gV1RGTW92ZShnZW5lcmF0ZWRGaWxlKTsKKyAgICBTdHJpbmcgZ2VuZXJhdGVk
RmlsZTsKKyAgICBpZiAobV9kZXN0aW5hdGlvblR5cGUgPT0gImFwcGxpY2F0aW9uL3ppcCJfcykK
KyAgICAgICAgZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUobV9wYXRoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSAhPSBtX2Rl
c3RpbmF0aW9uVHlwZSk7CisgICAgICAgIEFTU0VSVChtX2Rlc3RpbmF0aW9uVHlwZS5zdGFydHNX
aXRoKCJpbWFnZS8iX3MpKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIGltYWdlIHNvdXJjZS4K
KyAgICAgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICAgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwgTlVMTCkp
OworCisgICAgICAgIC8vIENvbXB1dGUgdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUgcHJlZml4IGFu
ZCBmaWxlIGV4dGVuc2lvbi4KKyAgICAgICAgYXV0byBjb21wb25lbnRzID0gbV9uYW1lLnNwbGl0
KCcuJyk7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4
dGVuc2lvbnNGb3JNSU1FVHlwZShtX2Rlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIGF1dG8gcHJl
Zml4ID0gbWFrZVN0cmluZyhjb21wb25lbnRzLmZpcnN0KCksICJfIl9zKTsKKyAgICAgICAgYXV0
byBzdWZmaXggPSBtYWtlU3RyaW5nKCIuIl9zLCBleHRlbnNpb25zLmZpcnN0KCkpOworCisgICAg
ICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgorICAgICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgcGxhdGZvcm1GaWxlSGFuZGxlOworICAgICAgICBnZW5lcmF0ZWRGaWxl
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUocHJlZml4LCBwbGF0Zm9ybUZpbGVIYW5k
bGUsIHN1ZmZpeCk7CiAKLSAgICBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgPSBmYWxz
ZTsKLSAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgIC8vIENy
ZWF0ZSB0aGUgZGF0YSBjb25zdW1lci4KKyAgICAgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3Mg
Y2FsbGJhY2tzID0geyBbXSh2b2lkICppbmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBj
b3VudCkgLT4gc2l6ZV90IHsKKyAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1GaWxlSGFuZGxlID0g
KnN0YXRpY19jYXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAg
ICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKHBsYXRmb3JtRmlsZUhhbmRs
ZSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICAgICAgfSwg
TlVMTCB9OworCisgICAgICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVy
Q3JlYXRlKCZwbGF0Zm9ybUZpbGVIYW5kbGUsICZjYWxsYmFja3MpKTsKKworICAgICAgICAvLyBD
cmVhdGUgdGhlIGltYWdlIGRlc3RpbmF0aW9uLgorICAgICAgICBhdXRvIHV0aSA9IFVUSUZyb21N
SU1FVHlwZShtX2Rlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBh
ZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhQ29uc3VtZXIoY29uc3VtZXIu
Z2V0KCksIHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAxLCBOVUxMKSk7CisKKyAgICAgICAg
Ly8gV3JpdGUgdGhlIGltYWdlIHNvdXJjZSB0byB0aGUgaW1hZ2UgZGVzdGluYXRpb24uCisgICAg
ICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlRnJvbVNvdXJjZShkZXN0aW5hdGlvbi5nZXQo
KSwgc291cmNlLmdldCgpLCAwLCBudWxscHRyKTsKKyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUocGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICB9CisKKyAgICBpZiAoIWdlbmVyYXRlZEZpbGUu
aXNOdWxsKCkpIHsKKyAgICAgICAgbV9yZXBsYWNlbWVudFBhdGggPSBXVEZNb3ZlKGdlbmVyYXRl
ZEZpbGUpOwogICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKICAgICAgICAgICAgIG1f
c2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1t
CmluZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIxNDg4MjMuLjg2YTI0NTg4
YTcxZDMwYzU2MTViMzM2ZWZkYjBkNjY3YjdiNjk3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpA
QCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLT3BlblBh
bmVsUGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTYy
LDExICs2NCwxMyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3Ry
aW5nICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFt
aW1lVHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gZXh0
ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdD
bGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMgfHwg
IUNGQXJyYXlHZXRDb3VudChleHRlbnNpb25zLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNT
dHJpbmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcgKj4gKill
eHRlbnNpb25zLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFkZCBhZGRpdGlvbmFs
IG1pbWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkgbWF5IG5v
dCByZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKEAiaW1hZ2Uvd2VicCIs
IEAid2VicCIpOworICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJw
IiwgQFtAIndlYnAiXSk7CiAKICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cDsKICAgICB9KCkpOwpAQCAtNzksNiArODMsMTggQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+
ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQogICAgIHJldHVybiBb
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKIH0KIAor
c3RhdGljIE5TU3RyaW5nICptaW1lVHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9u
KQoreworICAgIE5TU2V0PE5TU3RyaW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1J
TUVUeXBlTWFwKCkga2V5c09mRW50cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1l
VHlwZSwgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBp
ZiAoW21pbWVUeXBlIGhhc1N1ZmZpeDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAg
ICAgICAgaWYgKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAg
ICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJp
bmdGcm9tSW5kZXg6MV1dOworICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmpl
Y3Q6ZXh0ZW5zaW9uXTsKKyAgICB9XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3Rd
OworfQorCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wp
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTEzNiwzNiArMTUyLDExOCBAQCBzdGF0aWMgTlNT
ZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUp
CiAgICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAKLS0g
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCistIChO
U0FycmF5PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBhdXRv
IGFjY2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRv
IGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107
CisgICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0
c107Cit9CiAKLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMi
OwotICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7
CistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcwor
eworICAgIE5TU3RyaW5nICphbGxGaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiQWxsIEZpbGVz
IiwgIkFsbCBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYWxsSW1hZ2VG
aWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiSW1hZ2UgRmlsZXMiLCAiSW1hZ2UgRmlsZXMgaW4g
ZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmFsbFZpZGVvRmlsZXNUaXRsZSA9IFdFQl9V
SV9TVFJJTkcoIlZpZGVvIEZpbGVzIiwgIlZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOwor
ICAgIE5TU3RyaW5nICphbGxBdWRpb0ZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJBdWRpbyBG
aWxlcyIsICJBdWRpbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqY3Vz
dG9tRmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkN1c3RvbSBGaWxlcyIsICJDdXN0b20gRmls
ZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmltYWdlVGl0bGUgPSBXRUJfVUlf
U1RSSU5HKCIlQCBpbWFnZSIsICJJbWFnZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciIpOwor
ICAgIE5TU3RyaW5nICp2aWRlb1RpdGxlID0gV0VCX1VJX1NUUklORygiJUAgdmlkZW8iLCAiVmlk
ZW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYXVkaW9UaXRs
ZSA9IFdFQl9VSV9TVFJJTkcoIiVAIGF1ZGlvIiwgIkF1ZGlvIGZvcm1hdCB0eXBlIGluIGZpbGUg
cGlja2VyIik7CisgICAgCisgICAgY29uc3RleHByIGF1dG8gaW1hZ2VUeXBlID0gQCJpbWFnZSI7
CisgICAgY29uc3RleHByIGF1dG8gdmlkZW9UeXBlID0gQCJ2aWRlbyI7CisgICAgY29uc3RleHBy
IGF1dG8gYXVkaW9UeXBlID0gQCJhdWRpbyI7CisgICAgY29uc3RleHByIGF1dG8gY3VzdG9tVHlw
ZSA9IEAiY3VzdG9tIjsKICAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0g
JiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxs
RmlsZXNUaXRsZV07CisgICAgYXV0byBjb21wb3NlVGl0bGVzID0gXihOU1N0cmluZyAqdHlwZSwg
TlNTdHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSB7CisgICAgICAgIE5TTXV0YWJs
ZUFycmF5KiB0aXRsZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgICAgIC8vIGlm
IHsgdHlwZSBzdWJUeXBlIH0gPT0gImltYWdlL3BuZyIgdGhlbiBhZGQgIlBORyBJbWFnZSIKKyAg
ICAgICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0eXBl
VGl0bGUgPSBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSA/IGltYWdlVGl0bGUgOiAo
W3R5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gPyB2aWRlb1RpdGxlIDogYXVkaW9UaXRs
ZSk7CisgICAgICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAg
ICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVUaXRs
ZSwgW3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5nXV1dOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5
cGVUaXRsZSwgc3ViVHlwZV1dOworICAgICAgICB9IGVsc2UgaWYgKFt0eXBlIGlzRXF1YWxUb1N0
cmluZzpjdXN0b21UeXBlXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9
PSAiQ3VzdG9tIEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZpbGVzIgorICAgICAgICAgICAgW3Rp
dGxlcyBhZGRPYmplY3Q6Y3VzdG9tRmlsZXNUaXRsZV07CisgICAgICAgIH0KIAotICAgIGlmICgh
KFthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lv
bnMgY291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNU
aXRsZV07CisgICAgICAgIC8vIGlmIGFsbFR5cGUgPT0gImltYWdlIiB0aGVuIGFkZCAiSW1hZ2Ug
RmlsZXMiCisgICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAgICBOU1N0
cmluZyAqYWxsVHlwZVRpdGxlID0gW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlwZV0g
PyBhbGxJbWFnZUZpbGVzVGl0bGUgOiAoW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlw
ZV0gPyBhbGxWaWRlb0ZpbGVzVGl0bGUgOiBhbGxBdWRpb0ZpbGVzVGl0bGUpOworICAgICAgICAg
ICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxsVHlwZVRpdGxlXTsKKyAgICAgICAgfQogCi0gICAgYXV0
byBtaW1lVHlwZSA9IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byBy
YW5nZSA9IFttaW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFu
Z2UubGVuZ3RoKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1Rp
dGxlXTsKLSAgICAKLSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmlu
Z1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWlt
ZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAg
aWYgKFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVy
biBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQ
cmVmaXggc3Vic3RyaW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVm
aXggc3Vic3RyaW5nRnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRsZV07CisgICAgICAgIC8vIElu
IGFsbCBjYXNlcyBhZGQgIkFsbCBGaWxlcyIKKyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxs
RmlsZXNUaXRsZV07CisgICAgICAgIHJldHVybiB0aXRsZXM7CisgICAgfTsKKworICAgIC8vIE5v
IGFjY2VwdCBhdHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4KKyAgICBpZiAoIVtbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNp
b25zXSBjb3VudF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCBAIiIp
OworCisgICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQg
YWxsb2NdIGluaXRXaXRoQXJyYXk6W3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXV0pOworCisgICAg
Zm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25z
XSkgeworICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKFtleHRlbnNp
b24gc3Vic3RyaW5nRnJvbUluZGV4OjFdKTsKKworICAgICAgICAvLyBVbmtub3duIGZpbGUgZXh0
ZW5zaW9uOiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIueHl6Ij4KKyAgICAgICAgaWYgKCFt
aW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAi
IiwgQCIiKTsKKworICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBl
XTsKKyAgICB9CisKKyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3Vi
VHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKworICAgIGZvciAoTlNT
dHJpbmcgKm1pbWVUeXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzLmdldCgpKSB7CisgICAgICAgIE5T
UmFuZ2UgcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKyAgICAgICAgaWYg
KCFyYW5nZS5sZW5ndGgpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIG1p
bWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25d
OworICAgICAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21J
bmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOworCisgICAgICAgIC8vIE9ubHkgaW1hZ2UsIHZpZGVv
IGFuZCBhdWRpbyBtaW1lIHR5cGVzIHdpbGwgaGF2ZSBkZXNjcmlwdGl2ZSB0aXRsZXMuIE90aGVy
IHR5cGVzIHdpbGwgYmUgc2hvd24KKyAgICAgICAgLy8gYXMgIkN1c3RvbSBGaWxlcyIuICJDdXN0
b20gRmlsZXMiIHdpbGwgYmUgc2hvd24gYWxzbyBpZiBtb3JlIHRoYW4gYSBtaW1lIHR5cGUgaXMg
c3BlY2lmaWVkLgorICAgICAgICBpZiAoIVttaW1lVHlwZVByZWZpeCBpc0VxdWFsVG9TdHJpbmc6
aW1hZ2VUeXBlXSAmJiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVd
ICYmICFbbWltZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOmF1ZGlvVHlwZV0pCisgICAgICAg
ICAgICB0eXBlID0gY3VzdG9tVHlwZTsKKyAgICAgICAgZWxzZSBpZiAoIXR5cGUpCisgICAgICAg
ICAgICB0eXBlID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbdHlwZSBpc0Vx
dWFsVG9TdHJpbmc6bWltZVR5cGVQcmVmaXhdKQorICAgICAgICAgICAgdHlwZSA9IGN1c3RvbVR5
cGU7CisKKyAgICAgICAgLy8gIkN1c3RvbSBGaWxlcyIgYWxzbyB3aWxsIGJlIHNob3duIGlmIG1v
cmUgdGhhbiBvbmUgc3ViLXR5cGUgaXMgc3BlY2lmaWVkIHVubGVzcyAiKiIgaXMgc3BlY2lmaWVk
LgorICAgICAgICBpZiAoIXN1YlR5cGUgfHwgW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmlu
ZzpAIioiXSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAg
ZWxzZSBpZiAoIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNF
cXVhbFRvU3RyaW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBjdXN0
b21UeXBlOworCisgICAgICAgIC8vIEFkZCAiSW1hZ2UgRmlsZXMiIHRpdGxlIGlmIG1pbWVUeXBl
IGlzIGFsbG93ZWQgZGVzdGVuYXRpb24gaW1hZ2UgZm9ybWF0LgorICAgICAgICBpZiAoV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rpbmco
bWltZVR5cGUpKQorICAgICAgICAgICAgYWxsVHlwZSA9IGltYWdlVHlwZTsKKyAgICB9CisKKyAg
ICAvLyBDdXN0b20gRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJhdWRpby8qLGltYWdlL3BuZyIg
b3IgYWNjZXB0PSJhcHBsaWNhdGlvbi9wZGYiLgorICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6Y3VzdG9tVHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUs
IEAiIiwgQCIiKTsKKworICAgIC8vICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9Imlt
YWdlLyoiIG9yIGFjY2VwdD0iYXVkaW8vKiIuCisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0
cmluZzpAIioiXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIHR5cGUp
OwogCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVy
biBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXgg
dXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAv
LyBDdXN0b20gRmlsZXMsICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdlL2pw
ZWcsaW1hZ2UvcG5nIi4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOmN1c3RvbVR5
cGVdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0b21UeXBlLCBAIiIsIGFsbFR5
cGUpOwogCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIs
IG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIC8v
ICdTdWItdHlwZSBUeXBlJywgJ1R5cGUnIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2Uv
cG5nIi4KKyAgICByZXR1cm4gY29tcG9zZVRpdGxlcyh0eXBlLCBzdWJUeXBlLCBhbGxUeXBlKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgxMjBl
NGFmMWJhZWEyMmMwNjI0YWMyZTIzYjRlMWJkNGFkNi4uN2MxZmNkMWIyYTcxZWE1NWFlNmE1Yzc0
OTc2NDJlYjUxOGM4ODc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0z
MSw4ICszMSw5IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVu
c2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmls
ZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAK
IEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDlkMTBkOTkyNDkxYmRiZDlkOGFhMWIzZTg3Yjg0NTAwMzI0Yzk5NDAuLjZkZDdiM2M5OGU2
OTRiYzI3NWRjMjUzMTU2ZTY3N2QzYzI1NDRjY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNi0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2Vs
ZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFj
Y2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIElmIHRoZSBudW1iZXIgb2YgdGhlIGZpbGUgZXh0ZW5zaW9ucycgdGl0
bGVzIGlzIHRocmVlLCBzZW5kIGFuIGFycmF5IG9mIAorICAgICAgICBhbGxJbWFnZUZpbGVFeHRl
bnNpb25zIHRvIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQuIEFsc28gc2V0IHRoZSBpbml0aWFs
CisgICAgICAgIHNlbGVjdGlvbiBvZiB0aGUgZmlsdGVyIHRvIHRoZSBpdGVtIG5hbWVkICJJbWFn
ZSBGaWxlcyIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0
aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6YWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczpd
KToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKToK
KyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpw
b3B1cFRhcmdldDpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0
ZWQuCisKIDIwMjAtMDYtMjEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrXSBOaWdodGx5IHJ1bm5lciBmYWlscyB0byBleHRyYWN0IHpp
cCBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQppbmRleCA1NzBhYWE1NGRiOTcwZTQ3NDI0ODk0ZjdiZDg3MWE3M2YyYzdkZDBl
Li5kYmY5ZDJhNjA0NDJjY2MyZDYyYjg3ODg2ZWIwY2FlMWZjMWE1ZmJjIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNzcs
MTUgKzc3LDE3IEBAIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2Jq
ZWN0IHsKIEBwcml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7CiAgICAgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKIH0KIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKIAotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6
KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5T
U3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKKy0gKGlkKWluaXRXaXRoT3BlblBh
bmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJh
eTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNp
b25zOiAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbEltYWdlRmlsZUV4dGVuc2lvbnMgewogICAg
IGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5QYW5lbCA9IG9wZW5Q
YW5lbDsKICAgICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVu
c2lvbnMgY29weV07CisgICAgICAgIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbEltYWdl
RmlsZUV4dGVuc2lvbnMgY29weV07CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTAw
LDYgKzEwMiwxMiBAQCAtICh2b2lkKXBvcHVwQWN0aW9uOihpZClzZW5kZXIgewogICAgICAgICAg
ICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxvd2VkRmls
ZUV4dGVuc2lvbnNdOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE1pZGRsZSBpdGVtLgorICAg
ICAgICBpZiAoIVtfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCisgICAgICAgICAgICBb
X29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2FsbEltYWdlRmlsZUV4
dGVuc2lvbnNdOwogICAgIH0KIH0KIApAQCAtNjQ0LDcgKzY1Miw3IEBAIC0gKG51bGxhYmxlIE5T
VmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZp
bGVFeHRlbnNpCiAgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwogICAgIFtidXR0
b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKICAgICBbYnV0dG9uIHNpemVU
b0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsKKyAgICBbYnV0dG9uIHNl
bGVjdEl0ZW1BdEluZGV4Olt0aXRsZXMgY291bnRdIDw9IDIgPyAwIDogMV07CiAgICAgW3BvcHVw
VGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07CiAgICAgCiAgICAgTlNWaWV3KiBmaWx0ZXJWaWV3
ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNl
XTsKQEAgLTY4NywxMCArNjk1LDEzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAKICAgICBv
cGVuUGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRp
cGxlU2VsZWN0aW9uOwogCisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVz
ID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOworICAgIE5TQXJyYXkg
KmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
czsKKyAgICBOU0FycmF5ICphbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc1RpdGxlcyBjb3VudF0gPT0gMiA/IEBbXSA6IHBhcmFtZXRlcnMuX2FsbEltYWdlRmls
ZUV4dGVuc2lvbnM7CisgICAgCiAgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVh
c2VdOwotICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxl
RXh0ZW5zaW9uczogcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICBfZmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxv
Y10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IGFs
bG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNpb25zOiBhbGxJbWFnZUZpbGVF
eHRlbnNpb25zXTsKIAotICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9
IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKICAgICBOU1ZpZXcgKmZp
bHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1Rp
dGxlcyBwb3B1cFRhcmdldDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CiAgICAgaWYgKGZp
bHRlclZpZXcpCiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0ZXJWaWV3
XTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3NjVkMDE3OWE2MThmMzk1ODAzMzM3ZDc2NGY2ZmI1ZmQxZWExNTQ4Li5iNDlh
MjVlMjcxNzc3NDkzZGIxNGRmODQ4NmViYjFiYWEwNDA1MGQxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMjAtMDYtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2UgZm9y
bWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBpdCB0
byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtY29weS1kZXN0aW5hdGlvbi1vcGVuLXBhbmVsLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBp
L2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5lbC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy8xMDB4MTAwLXJl
ZC5wc2Q6IEFkZGVkLgorICAgICAgICBUZXN0cyBjaG9vc2luZyBhIFBTRCBpbWFnZSB2aWEgdGhl
IGZpbGUgcGlja2VyIHdpbGwgY29udmVydCBpdCB0byBhbgorICAgICAgICBhY2NlcHRlZCBkZXN0
aW5hdGlvbiB0eXBlLgorCiAyMDIwLTA2LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy1j
bGlwcGluZy5odG1sIHdhcyBhIGZsYWt5IGZhaWx1cmUgYWZ0ZXIgcjI2MzIyMwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVz
dGluYXRpb24tb3Blbi1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtY29weS1kZXN0aW5hdGlvbi1vcGVuLXBhbmVsLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NDIxOGJjNGRjODEyZTczMzY5OWFiYTUyOGJkZDgwOTBkMTFl
MTBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJp
ZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNSBAQAorT1BFTiBGSUxFIFBBTkVMCitUZXN0cyBhbiBpbWFnZSwgY2hvc2VuIHZp
YSB0aGUgZmlsZSBwaWNrZXIsIHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGFjY2VwdGVkIGRlc3Rp
bmF0aW9uIGZvcm1hdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZmls
ZUxpc3QubGVuZ3RoIGlzIDEKK1BBU1MgZmlsZS50eXBlIGlzICJpbWFnZS9wbmciCitQQVNTIGZp
bGUuc2l6ZSBpcyBub24temVyby4KK1BBU1MgaW1nLndpZHRoIGlzIDEwMAorUEFTUyBpbWcuaGVp
Z2h0IGlzIDEwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMt
YXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1w
YW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNzQ5OGE1NTYwZmJiNWY0MjQyODMwZDMyYTRlOTNjZDk2
YjAyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvaW1hZ2UtY29weS1kZXN0aW5hdGlvbi1vcGVuLXBhbmVsLmh0bWwKQEAgLTAsMCAr
MSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iLnBuZyIgb25jaGFu
Z2U9ImNoYW5nZWQoZXZlbnQpIj48L2lucHV0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2Ny
aXB0aW9uKCJUZXN0cyBhbiBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIsIHdpbGwg
YmUgY29udmVydGVkIHRvIGFuIGFjY2VwdGVkIGRlc3RpbmF0aW9uIGZvcm1hdC4iKTsKKyAgICAg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0T3BlblBhbmVsRmlsZXMoWydyZXNv
dXJjZXMvaW1hZ2VzLzEwMHgxMDAtcmVkLnBzZCddKTsKKworICAgICAgICAgICAgaW5wdXRFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07CisgICAgICAg
ICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGlucHV0RWxlbWVudC5vZmZzZXRMZWZ0ICsgaW5wdXRF
bGVtZW50Lm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQub2Zm
c2V0VG9wICsgaW5wdXRFbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hhbmdlZChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgZmls
ZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7CisgICAgICAgICAgICBzaG91bGRCZSgiZmlsZUxp
c3QubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgZmlsZSA9IGZpbGVMaXN0WzBdOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlLnR5cGUiLCAiaW1hZ2UvcG5nIik7
CisgICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZpbGUuc2l6ZSIpOworCisgICAgICAgICAg
ICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5l
dyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4geworICAg
ICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJpbWcud2lkdGgiLCAiMTAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJpbWcuaGVpZ2h0IiwgIjEwMCIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGltZy5zcmMgPSByZWFkZXIu
cmVzdWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJM
KGZpbGUpOworICAgICAgICB9CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICA8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzLzEwMHgxMDAtcmVkLnBzZCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzLzEwMHgxMDAtcmVk
LnBzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNzRjY2FmZTNlNDgwNzJhYTZmNTcxNTVlMDYyMDk2NTU2ZDAwYzM2
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NTcwCnpjbWVIfmNUXkt1N3JAYGxxIShJMzFmJmVU
Y1l5I1J5JE1LX0NNcSFyNUs2JDFmWT1NN2YtOCFPTlU8UVJBfStXVgp6Sy1QKlY3OFY3MlU2NGhA
d3ohSDdtMlU/MnB4PH1TPylSUGp7XyR9M3kpJG9xYk1Ka2JKTkxlcXh4QDdjMj9yMXUKelozT0hq
NyYjfmE4NUo/fHhnUCNPJGN2RkhDTD08XjZLN2BkQnRrSmkyYUlUKms3eUt0QTlqWVl7PkteRDUj
KF9sCnoxQ3VjUDAhODk8U09JYEV1flpWfj53IWtjI0c+U08wMFN4QDBjIXd3e0xHQT9hR3daI2hR
R0hibnUhX1Z7SDQ5UQp6RzN3YDRiSDVOMntVWk9MTlJnaSprengqcFZBaSQqVkowOHJUI1FxKnI1
VSg8MEF1IT82cjVvXjNUejRIQWpUPjwKekN5dWgmaHxNVXc7VmVpS1c2Xj9mcEVDcSQwLVJlZ1VZ
I1dxVnZHYzBvUj1qTVdAQ0h9VzQlO2FuaDRgfTdfLXhhCnp5aTVRSDN8dVoxQHs9Jk8hazhoNjI9
bH52RzV7MXQ7I1dOOUUwemw5VlNXUE9uVnlqJjVoVyVgUTZzKUZZVkdMQQp6TWc0QD9zWTBwTEpj
UCRqO1lrRmpYTD8hJlBuPzZMYj54fXhTd0lQb0VzNiElLXJDWEwtclU5bDM7JFVBT1habD0KelVq
dkBvUUh4aWhCUlBYT1pDXyt4PTY7Yy1SfDNFdCNBMzdsaSlfd1QwMik+VHBtT0puT203RE9eMEAl
aVU7Z1RPCnpJUVYpPWwxZWsyRUdASU12bkBuSXo2Qm84dkchakwjd2BDRnpQZ19VZSFzRVVwPGNv
U28tOT8wO3o4eDdyPjRzIQp6RDdIaVJMZSVefTd4Q1lvXz8yNTxgQyUzJk9jM0hiUUhWeGp0NHQo
TCNMX0ptaEBfJSlGKTktT1MlJn1TdzZBPT8KemFkY2Z7el5lS1QqdDBFdyFldXI8cDBAITRpdz07
dVpJfWljJVVkOGQ2NXU7OE5+Pj5sLUQ4YURONSsyfTs2bSZZCnomSi1vMHhZI28rMF9EcGpTdlhe
UjB3MEtnMklLKTdyfip4KDN5Z3B7dW1LTGg4TXB5JkZjayFZMm9NOGkwWHwzcQp6WCtRJDkhOXVW
TTxiZVhQOSY4NHNVXn1QKyl1MHZ9MVAkT0FJMVNFJE9XK0UpNChAXzMmPG1ifDBxX1A0S0BkY1MK
em09RnQ2Z3xyfWokUH1gSHhYPXtIOHchTk5wY3A2fk5gJUNhM3xhYFNmQ2BgQHMxKGA+UllOflFO
MUBadTEqaWtNCno0UnU1UChDXlIoNz1hbHU4YGdqZ1VgdjxfeVRidSsxVXdUP2d5K0taO2FxcWZU
bW8wWmB7OD17Rzwqclo0dEsjJQp6O1h3by1iY0JPd0JqeU1mQGtEfT1TUj9fRkFkOFdGcSFfNzBZ
TE88UzZ9Z0laQTx2TmExUUxOb0tuZG1xWE0hSkwKekkpUDdeT0lTPTtPREhBbUNEYXBJMnYtVCtn
YU57NUI5b3wyRyRsRl97ZldgVUx9RTVFazYyOUhPKn0kOE9UMTMoCnpDQjdrJU5GMChPJCR7aVlp
WGtQRjdMZUFHRG9BeXRRPXxAMzR7NEIwQ2FhUTckdTh0ekdMSX1KPWFJTFBfbWZZTwp6SklUR3xj
Tjk4QmkoKjZacH5PPGVsO3hDUyUwOXtvTisrZHtHREtDTj5Ra01sIUJoYj9oZ3dManFCYz00USt1
Z0gKekcpMDtyJjRtXzBPUXRRT21DJE53WEtEOW51anE4VDQmOUwrTipCP1cobzUoRT07IUkoXiFF
JVVoNiUleTV5eX0qCnopLW09bFBCQ3NYVU5NPFcxRXcxQG1NTFlmVl4lWklGZHMxQSQrNkB0PG94
OVhhIWNnTzxtJS0qPHpDMkI8QE0jPQp6PCE4eXltb0p0LUIhNX17bkYzWThLKjNYaXI/Nk98T3lR
YClPQCU+NG1aRyZ7dXd0NnhURSVeZTdaZXtXayhDVVQKenlwO3E+eGt8Zn4mTTVWOzVTQXs+bGZg
R1BVeyRmc3ZVPUdod2p0WX1veTt5XnxHO2klND01YHNQZzBJbG9+Sy08CnpkfGJKVWdLIUt1eyt2
YCFBP0cwSDJJcz5CalMyMShnY0hfR3NHWk9gO2pQTDw2Km0+M08xP14rJTV7fHdzO0h7Qgp6WUty
T3gpZHRvM1k2TFlDd05TTmV3UVh1PSl0KmdjUGpzSGhwT2A9SztLViFYdSkyd1FuRUM/c1VGdlA+
Z0JxRnwKeno4Vj1DVFEkeVRKayNXOHhAamhCWnFodVYqe3tYWW54WkFyK041PC0+anxvaXh9JkxS
M0VGfVZYc2NgY1kwST5DCnpZUFZ8LT1Ae3h2KklCTXByKm1KSXJwd2gkKEF9aWx0VUk4bXI1QntQ
UF9JVnNqeV9lTnREbUk1TVpaPTV0JTBGSQp6bCkpOzQyN3x8akR1KGBzXjleZVo/LT88VFQjZT0k
UlReRDBDSys+JFE7YUsmdWI5OWxifHkoQ1doUiRSVk4taWsKemshZ2kjaFopaCMoTSlWc1g/RHxg
VmVXMzhXbk4/NlpOYWUhdnstSkBWRFo5SSZvYjY+Z0pyQWJYRGQ2YVJJNGhoCnp5VmdxOVE+flg8
SChDRX5WYDlVJURZTG18JWUze2VVMUhtNGAqTT0kQjtsbE9sV3k2dT8xSm84Kilgakp2VWprVAp6
KndAPGtKTG95WUpDci16PGcmUlQrX2x7RWp6bVdmJDBkJSg5TiM8SEo0dX1tSXtvSHM/d3NQaCYt
dzlXIV55KFEKelJnLSZNYlg8NVlKNipiX3BpfDxmPzNtSyFzX257aXQjcDBwcnQybmYrd0lvcFp0
Un15elRmP1lobjB1SzxBfSN3CnpQYmJlc29+T0pKRkpHXkd1WGItR0A5RXk5LVZjMHFkPWg8WGQ8
Sn4mZD44bmhAKzB+TV8tKmpKPjk2Nj5fcGtPSgp6bkNkV2YoYlNkek1uSEgjWH40cmtsUiF5ZVF4
Rl85SEUzaGR5PW5UPiNNMnNyTDlsPUQjXkMhUWg5UHI5ZWhNWHAKemhKPT1kSl9AckFUTnVfRiZJ
K0YkekF5WXVnaHhiUyNORnZlKGBEMH1CanFGR0JDOHxjTXRNYVFNUmk0Nk1sWHVLCno2ciZhK2lm
TjFgJDQxOFBqdmJ1Z0ohQThYLVo7Q3N5dG9AUDRRSX1xZDEwMj90a2hZQFhVb3MjJXt+LVFqRXs9
bgp6N3lwcUwlJlgpTCZoZWo5SzQqYU0kPXx8JURzVTVRNjcmbVFnaGolPjFlYilPZ3ZXXzRpNW5D
OWxVJFJFbGIocUAKek1XdiNiJCRyVihsaSNLVXJ8ZH0/UEtgPmZPUVdSNHJ5VWg1aUJyVGE+Nis+
RChtT0l0R3g5Uko8fnEmWUphPDQ2CnpBbGFQPld6TmlPbChNbTZzIWU3alRQZj8jbnZ6d1BeKTVS
eWBfTWVhZEUkOShJVkwlNGF7QWBgJT5SQT9WRjc8Wgp6XkZyLX4lTkJNb2EkbUdfRnw+SGo7XnJs
fk9MQ1g9Rjc7aXljTnVNMiVDZXVBVFAtaEl7KDQyIWlsJHRSK0AtbGEKekR9N2hpPGpMaHBAQH1x
alViVEhTVllPJj1geEBJZFRpMU5mN3Z4X291cXI0bl9fJnQ4X1RxUWUtPDVuZnllP3J+CnpkIWM+
ZHcpTGQtO2BLSyt4Tmd7NnEqeWUrc0FwcikjYDthQHJ1PEU+SF96VURwP0ZnOV9BUnQ2dk1wVURm
aENQdwp6XnxyM3hgbXI+cl5tPl5gU3pXbiRgSV8+IzZAclMrWkVvOVl3YCopSyojMlJNWHZlTGN6
Qn10SDRKd093ayM9UzYKemRRPXJ6KSVyZDZgfDkwbHk5OylJKzlUZjZ3S3JeVU9TTUNGXio7NHxn
KjktRXRmcWZ8LTJOKitjPlR+PVloSnN2CnpqI0YxfjAzNDdWYz1CV1hrMmVrbTlCZStzSnlkJkd8
OFYmYyl7Kj5yczZNQkRwZHFRRHQxK2dyPExLMColfXZmdAp6TX1EJlNZMG9rM1ZgYXljan5BWXhv
eWF7Z2R+KktEIUJaS2hvfUVyUy1QMWd+YFI8d01HdUspfFRpVllDb0lRV2UKej1pSGZBX3R1bD1V
Q3RsNztCP3tXTWVmQ2hPWkohUSt3OXRve0F+QzBrI19zYGBwWFdOOD9RS0NZM2k4VmFpWV87Cnpe
WW00KHRMTHV5VSVQYUQrVnplYih7SjNtOEYjYm1tZitVbytvYHUtLXBSVCViYSZ9Sjs9VE8pM2lw
ZDJzNlZMdQp6I3JUKUhGOGkrSS1Db15vNTVwaGM/Y3cpNHtXYkh+a0c7OCVuMihENHdFQyhhK2RN
d2pANiYoZiQmNHF4UGN4bmwKeko8RUhwX2BManUoVGxec3gmNzhRNUl4WlFRdTE+Nl9xREg3VStz
QjQ+Mj5wOSRsIXhGWD5XJCE9RCQ7WXhBIzV3CnplZH52KTR9Qyt+QUlUcH1Ke2Y7JWBXKjIyLWYt
SVJGYVZAUj5eT3xtU2k+cjk/Mzt5diViKzQkaWo3IWhmc0hVZQp6O0A9X1NiVj1HRFF9N3lscT4l
JThJWUozKWpxNmlvVnlySTVzdE4kZUFRMTNDNGlJQTExQiFvX1Y3fj5BazZ0bDYKektLZWZ5YFBU
OXtqeHF1JiN6cEBwQml+dmMkNF5HYSRKXzlxcn0pKylAVTZZb3s8YzVrO3RsZXh7ZVMpK3sqMDVs
CkZfaDB8bWx+dz0lCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402537</attachid>
            <date>2020-06-22 22:52:59 -0700</date>
            <delta_ts>2020-06-28 23:31:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200622225258.patch</filename>
            <type>text/plain</type>
            <size>62470</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkZDkxNGQwMjNjODc1MjlmMzE2NWUw
YTJjZmVjMDZkYTRmODIyZmYuLjc5MGI2NTY0NzE0ZmQwMTY0NDIxOTEyNmU0NmU2MzZiYjc4M2Yx
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBDaGVjayBHaWdhY2FnZSB1c2FnZSBiZWZvcmUgbGF1bmNoaW5nIFZNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZGM4NDYxY2YwOTVmNDM0NjE2NDVlMTA2NDNmMmRkYTIwMzE5MzcxMy4uODNk
YTQ5N2NmYjJjMzhhNzUzM2FjMTE5YzBkNzZmZWNhMjk0NTk3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc4IEBACisyMDIwLTA2LTIyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGlt
YWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZl
cnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4
NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElm
IHRoZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBpbWFnZSBpcyBub3Qgb25lIG9mIHRoZSBhbGxvd2Vk
IHR5cGVzLCB0aGUKKyAgICAgICAgaW1hZ2Ugd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGZpcnN0
IGRlc3RpbmF0aW9uIGFsbG93ZWQgaW1hZ2UgdHlwZSBhbmQKKyAgICAgICAgaXQgd2lsbCBiZSB3
cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUuIFRoaXMgZmlsZSBpcyBhIHJlcGxhY2VtZW50IHRv
IHRoZQorICAgICAgICBvcmlnaW5hbCBpbWFnZSwgc28gdGhlIHR5cGUsIHRoZSBzaXplIGFuZCB0
aGUgZGF0YSB3aWxsIGJlIHJlYWQgZnJvbSBpdAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBzZWxl
Y3RlZCBpbWFnZS4KKworICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2I6OnR5cGUgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjb250ZW50VHlwZUZvckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZTo6ZGVzdGluYXRpb25UeXBlRm9yRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlOjpuYW1lRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjb21w
dXRlTmFtZUFuZENvbnRlbnRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUu
aDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OmlzRmlsZVR5cGVQYWNrYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OnNob3VsZFJl
cGxhY2VGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNvbXB1dGVOYW1l
QW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUpOiBEZWxldGVkLgorICAgICAgICAqIGZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBmaWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAg
ICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjphbGxvd2VkVHlwZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VNZWRpYUZpbGVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJDbGll
bnQ6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlOjpwYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oOgorICAgICAgICBSZXBsYWNl
IHRoZSBtZW1iZXIgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkIGJ5IHRoZSBpbmxpbmUg
ZnVuY3Rpb24KKyAgICAgICAgcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpyZXBsYWNlbWVudFNob3Vs
ZEJlR2VuZXJhdGVkIGNvbnN0KToKKyAgICAgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBkZXN0aW5h
dGlvblR5cGUgaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRlbnRUeXBlIGFuZAorICAgICAgICB0
aGUgcmVwbGFjZW1lbnQgZmlsZSBoYXMgbm90IGJlZW4gY3JlYXRlZCB5ZXQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUp
OgorICAgICAgICBDcmVhdGVzIGEgcmVwbGFjZW1lbnQgaW1hZ2UuCisKKzIwMjAtMDYtMjEgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFj
T1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNl
bGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJh
Y2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAg
IEFkZCBsb2NhbGl6YWJsZSBzdHJpbmdzIGZvciB0aGUgT3BlblBhbmVsIGZpbHRlci4KKworICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgRXhwb3J0IGEgTUlN
RVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJlbmNlZCBmcm9tIFdlYktpdCBwcm9qZWN0Lgor
CisKIDIwMjAtMDYtMjEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAg
IENvbnZlcnQgbXVjaCBvZiB0aGUgU1ZHIHN0cmluZyBwYXJzaW5nIGNvZGUgdG8gdXNlIE9wdGlv
bmFsIGJhc2VkIHJldHVybiB2YWx1ZXMgcmF0aGVyIHRoYW4gb3V0LXBhcmFtZXRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNTAyNGIxMjQ2MWE1YzYyZDAzMzRiY2Q5ZjEwZDU1ZDQ4NDMyMWU4MC4uYTdmNTY4Yzky
MTBhZGRjMjM2MTAyOTE2NzE2MTI4MzE3YTc5MWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxl
IGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVk
IHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBl
cyBpbiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAg
ICAgICAgaW1hZ2UgZm9ybWF0LCBhZGQgYSBuZXcgaXRlbSBpbiB0aGUgT3BlblBhbmVsIGZpbHRl
ciBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6
CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9u
c10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5z
aW9uc1RpdGxlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzUHJpdmF0ZS5oOgorCiAyMDIwLTA2LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBmYWlscyB0byBsZWF2ZSBhdWRpbyByb3V0aW5n
IGFyYml0cmF0aW9uIGR1cmluZyBuYXZpZ2F0aW9uLCBjbG9zaW5nLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmlu
ZGV4IDYwYjMyZTQ2ZmM0MjkwODIzYTYyOWJkYTNlZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQz
YzZkNTJhOGE4YWYxNTVlNmU4ZWU4ZjkxMjAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3
ICsxNDUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChj
b25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1l
IHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3Qg
U3RyaW5nJiBzdWZmaXggPSB7IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhh
bmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vz
c1Blcm1pc3Npb24gPSBGaWxlQWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVF
eGlzdHMgPSBmYWxzZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlJik7CiAvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhl
IGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0
ZmZhODlkNGRjZGY0MGFjMWIxYjg3ZC4uM2FjYjg2YWM3NzVjZGFkZjcyNWNkODgwODhkMmI1Y2Q0
YjE0YjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMs
NyArOTMsNyBAQCBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVE
aXJlY3RvcnkoKTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBwbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogewogICAgIHBsYXRm
b3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKQEAgLTExMyw5ICsx
MTMsMTMgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUgKICAgICBDU3RyaW5nIHByZWZpeFV0Zjgg
PSBwcmVmaXgudXRmOCgpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4
LmRhdGEoKSwgcHJlZml4VXRmOC5sZW5ndGgoKSk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBw
ZW5kKCJYWFhYWFgiLCA2KTsKKworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4K
KyAgICBDU3RyaW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAg
ICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFu
ZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBsYXRmb3JtRmls
ZUhhbmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VXRmOC5s
ZW5ndGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1
Y2EwZjVkZi4uZmEwYjUzMWZlMTBmZjc0ZWJhYjg2NWYzY2EwOTE1ZGExZDk1NzUxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBWZWN0
b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxl
bmFtZS5nZXQoKSwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKaW5kZXggYzlmNTAxNDM2YWJjYzgwOTRlODQxNDgwZDIxZmUzNmE0NzFlODFmZi4uYjNj
MDQwMWI1MDZmZGNlMzIzMmVkNmZlZmJiYmYwZTUyZDEwMDNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBnZXRWb2x1
bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwogICAgIGNvbnN0
IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKaW5kZXggNjU5ZGZkNTI3MjdkYzllZjY5OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4u
YjYzMTQ5NTczYTQ4NDFmZTYwMDFlZWZhZmRkMDA5MmNmYzc0MWFhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2Vu
ZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBh
Y3Rpb24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVF
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJp
bmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCAx
NjQ3ZDIzZmZhYWNmZDM4ZDQ1MTJiM2ZmNDZiOTAwNGRkOTkzZmU1Li5kMzYwYTAzODAyZDgyZWU5
YzQ5MWQ5YjU0NWFhNjNmNGQ4MjczMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5s
cHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MKQEAgLTYxLDYgKzYxLDE1IEBACiAvKiBOYW1lIG9mIGFwcGxpY2F0
aW9uJ3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluICovCiAiJUAgV2Vi
Q3J5cHRvIE1hc3RlciBLZXkiID0gIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IjsKIAorLyogQXVk
aW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIgKi8KKyIlQCBhdWRpbyIgPSAiJUAgYXVkaW8i
OworCisvKiBJbWFnZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciAqLworIiVAIGltYWdlIiA9
ICIlQCBpbWFnZSI7CisKKy8qIFZpZGVvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyICovCisi
JUAgdmlkZW8iID0gIiVAIHZpZGVvIjsKKwogLyogTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJl
ciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3Mg
bXVsdGlwbGUgZmlsZXMgKi8KICIlZCBmaWxlcyIgPSAiJWQgZmlsZXMiOwogCkBAIC0xMTUsNiAr
MTI0LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJBbGlnbiBSaWdodCAoVW5kbyBhY3Rp
b24gbmFtZSkiID0gIkFsaWduIFJpZ2h0IjsKIAorLyogQWxsIEZpbGVzIGluIGZpbGVyIHBpY2tl
ciAqLworIkFsbCBGaWxlcyIgPSAiQWxsIEZpbGVzIjsKKwogLyogQnV0dG9uIHRpdGxlIGluIFN0
b3JhZ2UgQWNjZXNzIEFQSSBwcm9tcHQgKi8KICJBbGxvdyAoY3Jvc3Mtc2l0ZSBjb29raWUgYW5k
IHdlYnNpdGUgZGF0YSBhY2Nlc3MpIiA9ICJBbGxvdyI7CiAKQEAgLTEzNiw2ICsxNDgsOSBAQAog
LyogV0tFcnJvckF0dHJpYnV0ZWRTdHJpbmdDb250ZW50RmFpbGVkVG9Mb2FkIGRlc2NyaXB0aW9u
ICovCiAiQXR0cmlidXRlZCBzdHJpbmcgY29udGVudCBmYWlsZWQgdG8gbG9hZCIgPSAiQXR0cmli
dXRlZCBzdHJpbmcgY29udGVudCBmYWlsZWQgdG8gbG9hZCI7CiAKKy8qIEF1ZGlvIEZpbGVzIGlu
IGZpbGVyIHBpY2tlciAqLworIkF1ZGlvIEZpbGVzIiA9ICJBdWRpbyBGaWxlcyI7CisKIC8qIE1l
bnUgaXRlbSBsYWJlbCBmb3IgYXV0b21hdGljIHRyYWNrIHNlbGVjdGlvbiBiZWhhdmlvciAqLwog
IkF1dG8gKFJlY29tbWVuZGVkKSIgPSAiQXV0byAoUmVjb21tZW5kZWQpIjsKIApAQCAtMjY1LDYg
KzI4MCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiQ3JlYXRlIExpbmsgKFVuZG8gYWN0
aW9uIG5hbWUpIiA9ICJDcmVhdGUgTGluayI7CiAKKy8qIEN1c3RvbSBGaWxlcyBpbiBmaWxlciBw
aWNrZXIgKi8KKyJDdXN0b20gRmlsZXMiID0gIkN1c3RvbSBGaWxlcyI7CisKIC8qIEN1dCBjb250
ZXh0IG1lbnUgaXRlbSAqLwogIkN1dCIgPSAiQ3V0IjsKIApAQCAtNDA5LDYgKzQyNyw5IEBACiAv
KiBJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0gKi8KICJJZ25vcmUgU3BlbGxpbmci
ID0gIklnbm9yZSBTcGVsbGluZyI7CiAKKy8qIEltYWdlIEZpbGVzIGluIGZpbGVyIHBpY2tlciAq
LworIkltYWdlIEZpbGVzIiA9ICJJbWFnZSBGaWxlcyI7CisKIC8qIFVuZG8gYWN0aW9uIG5hbWUg
Ki8KICJJbmRlbnQgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbmRlbnQiOwogCkBAIC05OTEsNiAr
MTAxMiw5IEBACiAvKiBWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMg
d2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0gKi8KICJWYWx1ZSBtdXN0IGJl
IGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIgPSAiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3Ig
ZXF1YWwgdG8gJXMiOwogCisvKiBWaWRlbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIgKi8KKyJWaWRl
byBGaWxlcyIgPSAiVmlkZW8gRmlsZXMiOworCiAvKiBQaGlzaGluZyB3YXJuaW5nIGRlc2NyaXB0
aW9uICovCiAiV2FybmluZ3MgYXJlIHNob3duIGZvciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiBy
ZXBvcnRlZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91
IGludG8gYmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiIg
PSAiV2FybmluZ3MgYXJlIHNob3duIGZvciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRl
ZCBhcyBkZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8g
YmVsaWV2aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDMyYTNiNjk4OWZhYjZlZDY0MDQxYjkwYjlkZWM0OTNm
NjQwMzExNTYuLmI3NzI0ZTgxYWY4MjhhMDFlMTY4OGJhZDY2ZWU5Y2QwNmJjZTBlYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNzIsOSArNzIsMTAgQEAgVVJMUmVnaXN0cnkmIEJsb2JV
UkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotQmxvYjo6
QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQor
QmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0
eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUpCiAgICAgOiBtX2ludGVybmFsVVJMKFdURk1v
dmUodXJsKSkKICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQorICAgICwgbV9kZXN0aW5hdGlv
blR5cGUoV1RGTW92ZShkZXN0aW5hdGlvblR5cGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5o
CmluZGV4IDYxNGQ4MDlkMjA4OTNkNWVmZTAwYzgzOTJiM2FlMzY1MmJkYTJhYzUuLmIyMjQ3OTRl
ODA5YjQ3MTZiMjFkZTJhNGU3NDdlYmViMjgyYTdiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CbG9iKCk7CiAKICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KLSAgICBjb25zdCBT
dHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBTdHJpbmcm
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwoKSA/IG1fdHlw
ZSA6IG1fZGVzdGluYXRpb25UeXBlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBs
b25nIGxvbmcgc2l6ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHByb3RlY3RlZDoKICAgICBCbG9i
KFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAg
IGVudW0gVW5pbml0aWFsaXplZENvbnRydWN0b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9
OwotICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0b3IsIFVSTCYmLCBTdHJpbmcmJiB0eXBl
KTsKKyAgICBCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlw
ZSwgU3RyaW5nJiYgZGVzdGluYXRpb25UeXBlKTsKIAogICAgIGVudW0gRGVzZXJpYWxpemF0aW9u
Q29udHJ1Y3RvciB7IGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IgfTsKICAgICBCbG9iKERlc2Vy
aWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5
cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxl
QmFja2VkUGF0aCk7CkBAIC0xMzEsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV9pbnRl
cm5hbFVSTDsKIAogICAgIFN0cmluZyBtX3R5cGU7CisgICAgU3RyaW5nIG1fZGVzdGluYXRpb25U
eXBlOwogCiAgICAgbXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IG1fc2l6ZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA4ZDZlMzg3Mzg1NTEzZGRkNDFlMDM3MjQw
OThiNDMyZWFjZWNlYmMwLi45NzViYjk0OTFiMjg1OGYzOGQ1NjRhMmY1ODY0MTM2M2FiOTA0NWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTQ2LDIwICs0NiwyMSBAQCBSZWY8RmlsZT4g
RmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgcmVsYXRpdgogICAgIHJldHVybiBmaWxlOwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCitSZWY8
RmlsZT4gRmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1l
T3ZlcnJpZGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzKQogewotICAgIFN0
cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBlOwotICAgIGNvbXB1dGVOYW1lQW5kQ29udGVudFR5
cGUocGF0aCwgbmFtZU92ZXJyaWRlLCBuYW1lLCB0eXBlKTsKKyAgICBTdHJpbmcgdHlwZSA9IGNv
bnRlbnRUeXBlRm9yRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUpOworICAgIFN0cmluZyBkZXN0aW5h
dGlvblR5cGUgPSBkZXN0aW5hdGlvblR5cGVGb3JGaWxlKHBhdGgsIHR5cGUsIGFsbG93ZWRUeXBl
cyk7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lRm9yRmlsZShwYXRoLCBuYW1lT3ZlcnJpZGUsIGRl
c3RpbmF0aW9uVHlwZSk7CiAKICAgICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVC
bG9iVVJMKGludGVybmFsVVJMLCBwYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IHBh
dGggfSwgV1RGTW92ZShuYW1lKSkpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxVUkwsIHBhdGgsIG5hbWUsIHR5cGUsIGRlc3RpbmF0aW9u
VHlwZSk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxV
UkwpLCBTdHJpbmcgeyBwYXRoIH0sIFdURk1vdmUobmFtZSksIFdURk1vdmUodHlwZSksIFdURk1v
dmUoZGVzdGluYXRpb25UeXBlKSkpOwogfQogCi1GaWxlOjpGaWxlKFVSTCYmIHVybCwgU3RyaW5n
JiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5pbml0
aWFsaXplZENvbnRydWN0b3IsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6OkZp
bGUoVVJMJiYgdXJsLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB0eXBl
LCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUpCisgICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250
cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdURk1vdmUodHlwZSksIFdURk1vdmUoZGVzdGluYXRpb25U
eXBlKSkKICAgICAsIG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogICAgICwgbV9uYW1lKFdURk1vdmUo
bmFtZSkpCiB7CkBAIC0xMjMsMzIgKzEyNCw0OCBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmll
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6dGltZUNsaXAocmVzdWx0KTsKIH0KIAotdm9pZCBG
aWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZl
Y3RpdmVDb250ZW50VHlwZSkKK1N0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKLSNpZiBFTkFCTEUo
RklMRV9SRVBMQUNFTUVOVCkKLSAgICBpZiAoc2hvdWxkUmVwbGFjZUZpbGUocGF0aCkpIHsKLSAg
ICAgICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZShwYXRoLCBuYW1l
T3ZlcnJpZGUsIGVmZmVjdGl2ZU5hbWUsIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGVmZmVjdGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUu
aXNFbXB0eSgpID8gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJy
aWRlOwotICAgIHNpemVfdCBpbmRleCA9IGVmZmVjdGl2ZU5hbWUucmV2ZXJzZUZpbmQoJy4nKTsK
KyAgICBTdHJpbmcgbmFtZSA9IG5hbWVPdmVycmlkZS5pc0VtcHR5KCkgPyBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CisgICAgU3RyaW5nIGNvbnRlbnRU
eXBlOworICAgIHNpemVfdCBpbmRleCA9IG5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAo
aW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZl
ZmZlY3RpdmVDb250ZW50VHlwZSwgJmVmZmVjdGl2ZU5hbWUsIGluZGV4XSB7Ci0gICAgICAgICAg
ICBlZmZlY3RpdmVDb250ZW50VHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGVmZmVjdGl2ZU5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSkpLmlzb2xhdGVkQ29w
eSgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJmNvbnRlbnRUeXBlLCAmbmFt
ZSwgaW5kZXhdIHsKKyAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24obmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0
ZWRDb3B5KCk7CiAgICAgICAgIH0pOwogICAgIH0KKyAgICByZXR1cm4gY29udGVudFR5cGU7CiB9
CiAKLVN0cmluZyBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQor
U3RyaW5nIEZpbGU6OmRlc3RpbmF0aW9uVHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzKQog
ewotICAgIFN0cmluZyBuYW1lOwotICAgIFN0cmluZyB0eXBlOwotICAgIGNvbXB1dGVOYW1lQW5k
Q29udGVudFR5cGUocGF0aCwgU3RyaW5nKCksIG5hbWUsIHR5cGUpOwotCisjaWYgRU5BQkxFKEZJ
TEVfUkVQTEFDRU1FTlQpCisgICAgaWYgKGlzRmlsZVR5cGVQYWNrYWdlKHBhdGgpKQorICAgICAg
ICByZXR1cm4gImFwcGxpY2F0aW9uL3ppcCJfczsKKworICAgIGlmIChhbGxvd2VkVHlwZXMuY29u
dGFpbnModHlwZSkpCisgICAgICAgIHJldHVybiB0eXBlOworICAgIAorICAgIGZvciAoYXV0byYg
YWxsb3dlZFR5cGUgOiBhbGxvd2VkVHlwZXMpIHsKKyAgICAgICAgaWYgKGFsbG93ZWRUeXBlID09
ICJpbWFnZS8qIikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOworICAgICAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoYWxsb3dlZFR5
cGUpKQorICAgICAgICAgICAgcmV0dXJuIGFsbG93ZWRUeXBlOworICAgIH0KKyNlbmRpZgogICAg
IHJldHVybiB0eXBlOwogfQogCitTdHJpbmcgRmlsZTo6bmFtZUZvckZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblR5cGUpCit7CisgICAgU3RyaW5nIG5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNFbXB0eSgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworI2lmIEVO
QUJMRShGSUxFX1JFUExBQ0VNRU5UKQorICAgIGlmIChkZXN0aW5hdGlvblR5cGUgPT0gImFwcGxp
Y2F0aW9uL3ppcCJfcykKKyAgICAgICAgbmFtZSA9IG1ha2VTdHJpbmcobmFtZSwgIi56aXAiX3Mp
OworI2VuZGlmCisgICAgcmV0dXJuIG5hbWU7Cit9CisKIGJvb2wgRmlsZTo6aXNEaXJlY3Rvcnko
KSBjb25zdAogewogICAgIGlmICghbV9pc0RpcmVjdG9yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5k
ZXggZDJmOTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3NDFmODNlZmY3OC4uMGZhYjNhOWZjNjc3
ZjQ2MmYwYzc2YmQ3ZTZlZTgzNzNhNWE4NzFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGgg
YW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5k
IGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJv
dmlkZWQgaW4gdGhlIHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSwgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0pOwogCiAgICAgLy8gQ3JlYXRlIGEgRmlsZSB1
c2luZyB0aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KICAgICBzdGF0aWMgUmVmPEZpbGU+IGNy
ZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKQEAgLTc2LDI4
ICs3NiwyNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBsYXN0TW9kaWZp
ZWQoKSBjb25zdDsgLy8gTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBFcG9jaC4KICAgICBj
b25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkT3ZlcnJpZGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RNb2RpZmllZERhdGVPdmVycmlkZTsgfSAvLyBOdW1iZXIgb2YgbWlsbGlzZWNv
bmRzIHNpbmNlIEVwb2NoLgogCi0gICAgc3RhdGljIFN0cmluZyBjb250ZW50VHlwZUZvckZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsK
KyAgICBzdGF0aWMgU3RyaW5nIGRlc3RpbmF0aW9uVHlwZUZvckZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIHR5cGUgPSB7IH0sIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxs
b3dlZFR5cGVzID0geyB9KTsKKyAgICBzdGF0aWMgU3RyaW5nIG5hbWVGb3JGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25UeXBlID0geyB9KTsKIAogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5U
KQotICAgIHN0YXRpYyBib29sIHNob3VsZFJlcGxhY2VGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7
CisgICAgc3RhdGljIGJvb2wgaXNGaWxlVHlwZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoKTsK
ICNlbmRpZgogCiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBG
aWxlKFVSTCYmLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsK
KyAgICBGaWxlKFVSTCYmLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiB0
eXBlLCBTdHJpbmcmJiBkZXN0aW5hdGlvblR5cGUpOwogICAgIEZpbGUoVmVjdG9yPEJsb2JQYXJ0
VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBQcm9wZXJ0eUJhZyYpOwogICAgIEZpbGUoY29uc3QgQmxvYiYsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAgICAgRmlsZShjb25zdCBGaWxlJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIEZp
bGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOwogCi0gICAgc3RhdGljIHZvaWQgY29t
cHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29u
dGVudFR5cGUpOwotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQotICAgIHN0YXRpYyB2b2lk
IGNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBT
dHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKTsKLSNlbmRpZgotCiAgICAgU3RyaW5nIG1fcGF0
aDsKICAgICBTdHJpbmcgbV9yZWxhdGl2ZVBhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KaW5kZXggNjY0ZjlhNTM2MTNkZjI2Y2ExN2M3MDdjMjFi
NTBjNjQ2NDUyMDRlNi4uMTA1NDk4YmVjYWZhODBiMjcxNjc0YTFjMzE0NDc0MDMxNzE1ZDBlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZpbGU6OnNob3VsZFJlcGxhY2VGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkKK2Jvb2wgRmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTcsMTMgKzU3LDYgQEAgYm9vbCBGaWxlOjpzaG91bGRSZXBsYWNlRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgcmV0dXJuIFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKXV0aSwga1VUVHlwZVBhY2thZ2UpOwogfQogCi12b2lkIEZpbGU6OmNvbXB1dGVOYW1lQW5k
Q29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVmZmVjdGl2
ZUNvbnRlbnRUeXBlKQotewotICAgIEFTU0VSVCghRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1l
KHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0aCB3aXRob3V0
IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KLSAgICBlZmZlY3RpdmVDb250
ZW50VHlwZSA9ICJhcHBsaWNhdGlvbi96aXAiX3M7Ci0gICAgZWZmZWN0aXZlTmFtZSA9IG1ha2VT
dHJpbmcoKG5hbWVPdmVycmlkZS5pc051bGwoKSA/IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShwYXRoKSA6IG5hbWVPdmVycmlkZSksICIuemlwIl9zKTsKLX0KLQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA1ZTFkNGMwMGE5YzA2OGM4MDMxYzI0Y2Nk
NjBhYjIwYTZhZmEwNjBiLi40M2MwNmU2YzAzNWI5MzhlYjZlOTUxMjlmMTY4MDI3YTVkZDRlNDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5jcHAKQEAgLTY0LDE1ICs2NCwxNSBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9y
aWdpbk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXZvaWQgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblR5cGUpCiB7CiAgICAgaWYgKGlzTWFpblRo
cmVhZCgpKSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJs
LCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjpjcmVhdGUocGF0aCwgbmFtZSwgY29udGVudFR5cGUsIGRlc3RpbmF0aW9uVHlw
ZSksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRD
b3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwg
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNv
bGF0ZWRDb3B5KCksIGRlc3RpbmF0aW9uVHlwZSA9IGRlc3RpbmF0aW9uVHlwZS5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCwgbmFtZSwgY29udGVudFR5cGUsIGRl
c3RpbmF0aW9uVHlwZSksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBhOWM3OWZlMjI5
MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi4wZTBmNmYzYmU4YTM5ZmM4Mzk2ZjFiOTNi
YWE4M2M5MzkyNzAzMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25UeXBl
KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1ZTRiODIwZWI2ODBmN2NjNDI2
NTVmMGI5ZTJkNmQuLjkwZWE2ZDA1MWRkODc0MzI3YjJmMDBkOTEyNTY3YWIyM2FiNDQ5MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZpbGVzLCBSZXF1
ZXN0SWNvbiBzaG91bGRSZXF1ZXN0CiAgICAgcHJvdGVjdGVkSW5wdXRFbGVtZW50LT5zZXRDaGFu
Z2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAKLXZvaWQgRmls
ZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
JiBwYXRocywgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQordm9pZCBG
aWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRUeXBlcywgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKiBpY29uKQogewogICAgIGlmICghZGlzcGxheVN0cmlu
Zy5pc0VtcHR5KCkpCiAgICAgICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlTdHJpbmc7CkBA
IC00MTMsOCArNDEzLDggQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbihjb25zdCBW
ZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAogICAgICAgICBtX2RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci0+Y2FuY2VsKCk7CiAKICAgICBpZiAoIWFsbG93c0RpcmVjdG9y
aWVzKCkpIHsKLSAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5m
bykgewotICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxl
SW5mby5kaXNwbGF5TmFtZSk7CisgICAgICAgIGF1dG8gZmlsZXMgPSBwYXRocy5tYXAoWyZhbGxv
d2VkVHlwZXNdKGF1dG8mIGZpbGVJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3Jl
YXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lLCBhbGxvd2VkVHlwZXMpOwog
ICAgICAgICB9KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVzKSksIGljb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5oCmluZGV4IDA4ZjYyMWZlNWMzZDZkMzAzODY3YWU5ZjA3MTdlYWRkMzU2ZWNi
YWEuLmQzNDkzMWY2NTlkYjQ1NjZmNTk5MWJjY2IyNjUzYjY1YjM4OThmZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICBTdHJp
bmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZmlsZXNDaG9zZW4o
Y29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
U3RyaW5nID0geyB9LCBJY29uKiA9IG51bGxwdHIpIGZpbmFsOworICAgIHZvaWQgZmlsZXNDaG9z
ZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBhbGxvd2VkVHlwZXMgPSB7IH0sIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9IHsg
fSwgSWNvbiogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIC8vIEZpbGVJY29uTG9hZGVyQ2xpZW50
IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgaWNvbkxvYWRlZChSZWZQdHI8SWNvbj4mJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdi
Y2Y0NTM4ZmVkODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4uNTQxOWI4YWQ4OTA2MGJkYjNhYmRhODgz
N2RiN2JmOTBhYzU3MDUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVD
aG9vc2VyLmgiCiAKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRmlsZUNob29zZXI6OkZpbGVDaG9vc2VyKEZpbGVDaG9vc2VyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRpbmdzKQpAQCAtNDQsNiArNDYs
MTkgQEAgUmVmPEZpbGVDaG9vc2VyPiBGaWxlQ2hvb3Nlcjo6Y3JlYXRlKEZpbGVDaG9vc2VyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IEZpbGVDaG9vc2UKIAogRmlsZUNob29zZXI6On5GaWxlQ2hvb3Nl
cigpID0gZGVmYXVsdDsKIAorSGFzaFNldDxTdHJpbmc+IEZpbGVDaG9vc2VyOjphbGxvd2VkVHlw
ZXMoKSBjb25zdAoreworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxvd2VkVHlwZXM7CisgICAgZm9y
IChhdXRvJiB0eXBlIDogbV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAgIGFsbG93
ZWRUeXBlcy5hZGQodHlwZSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3NldHRpbmdz
LmFjY2VwdEZpbGVFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gdHlwZSA9IE1JTUVUeXBlUmVn
aXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykg
PyBleHRlbnNpb24ucmlnaHQoZXh0ZW5zaW9uLmxlbmd0aCgpIC0gMSkgOiBleHRlbnNpb24pOwor
ICAgICAgICBpZiAoIXR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgYWxsb3dlZFR5cGVzLmFk
ZCh0eXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGFsbG93ZWRUeXBlczsKK30KKwogdm9pZCBGaWxl
Q2hvb3Nlcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTcwLDcg
Kzg1LDcgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7CiAg
ICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5k
KEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWUpKTsKLSAgICBtX2NsaWVudC0+ZmlsZXNDaG9z
ZW4oZmlsZXMpOworICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgYWxsb3dlZFR5cGVz
KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTg5LDcgKzEwNCw3IEBAIHZv
aWQgRmlsZUNob29zZXI6OmNob29zZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcywgY29uc3QgU3RyaW5nCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZp
bGVzOwogICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCiAgICAgICAgIGZpbGVz
LmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7Ci0gICAgbV9jbGllbnQtPmZp
bGVzQ2hvc2VuKGZpbGVzLCBkaXNwbGF5U3RyaW5nLCBpY29uKTsKKyAgICBtX2NsaWVudC0+Zmls
ZXNDaG9zZW4oZmlsZXMsIHsgfSwgZGlzcGxheVN0cmluZywgaWNvbik7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0Mzg3OTVhNzZm
ZWM5YTNkYmY3YzZhMDg0ZWEwODg5NS4uN2Q5MTllYjljZDU1NjZiYTI3YzQ1YmI1NDFjOGMzNTdi
ZDVhMzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc2
LDcgKzc3LDcgQEAgY2xhc3MgRmlsZUNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgfkZpbGVDaG9vc2VyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGZp
bGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZFR5cGVzID0geyB9LCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlTdHJpbmcgPSB7IH0sIEljb24qID0gbnVsbHB0cikgPSAwOwogfTsKIAogY2xhc3MgRmls
ZUNob29zZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2hvb3Nlcj4gewpAQCAtMTAyLDYgKzEw
Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRmlsZUNob29zZXIoRmlsZUNob29zZXJDbGll
bnQqLCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAKKyAgICBIYXNoU2V0PFN0cmluZz4g
YWxsb3dlZFR5cGVzKCkgY29uc3Q7CisKICAgICBGaWxlQ2hvb3NlckNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CiAgICAgRmlsZUNob29zZXJTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVk
ZTJhZGIwMWExNTUwZTJmZTUwZDUwNjQzYjNmYTNmLi4xM2UyNTE2Zjk2MTI2NTY3ZTE1OWVhZTVm
NTVjMjI0YjA5MGVkODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRh
YmxlIGZvciBiZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0
eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04g
cmVzb3VyY2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAK
aW5kZXggNWFiZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNi4uYTcyNmU3MjU1
NzExNTk2NDg1Y2RhYTE0OTk2YjM4YWYwZGRmNDBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcApAQCAt
MzIsMTUgKzMyLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoKQorQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblR5cGUpCiAgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fbmFtZShuYW1lKQor
ICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX2Rlc3RpbmF0aW9uVHlwZShkZXN0aW5hdGlvblR5
cGUpCiB7CiB9CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKCFtX3JlcGxhY2Vt
ZW50UGF0aC5pc051bGwoKSkKKyAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpICYm
IG1fZGVzdGluYXRpb25UeXBlID09ICJhcHBsaWNhdGlvbi96aXAiX3MpCiAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CkBAIC00OCw3
ICs1MSw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgp
CiBjb25zdCBTdHJpbmcmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cGF0aCgpCiB7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpKQogICAgICAgICBn
ZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5p
c051bGwoKSkKQEAgLTYxLDcgKzY0LDcgQEAgY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnBhdGgoKQogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
c2l6ZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgaWYgKG1fcmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCkKKyAgICBpZiAocmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCgpKQogICAgICAgICBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwogI2VuZGlmCiAKQEAg
LTczLDcgKzc2LDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkK
ICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlvbnMgZm9yIGdlbmVy
YXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAgLy8gVW5mb3J0dW5h
dGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUgaGFuZGxpbmcgLSBG
aWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJseWluZyBmaWxlcyBj
aGFuZ2UuCi0gICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB8fCAhbV9yZXBs
YWNlbWVudFBhdGguaXNOdWxsKCkpCisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uVHlwZS5pc051bGwo
KSB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAjZW5kaWYKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBA
IC04Niw3ICs4OSw4IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5n
TW9kaWZpY2F0aW9ucygpCiAgICAgLy8gdGhlIGNvc3Qgb2YgdHJhY2tpbmcgZmlsZSBtb2RpZmlj
YXRpb25zLgogCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCi0gICAgbV9yZXBsYWNlbWVu
dFNob3VsZEJlR2VuZXJhdGVkID0gRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUobV9wYXRoKTsKKyAg
ICBpZiAoRmlsZTo6aXNGaWxlVHlwZVBhY2thZ2UobV9wYXRoKSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvblR5cGUgPSAiYXBwbGljYXRpb24vemlwIl9zOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTog
U29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lz
dGVtIG9iamVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KQEAgLTk3LDcgKzEwMSw3
IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9u
cygpCiAgICAgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUgPSBtZXRhZGF0YS52YWx1ZSgpLm1v
ZGlmaWNhdGlvblRpbWU7CiAKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICBpZiAo
bV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQorICAgIGlmIChyZXBsYWNlbWVudFNob3Vs
ZEJlR2VuZXJhdGVkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaApp
bmRleCA2NTg4MjlkMDdmY2ZiZDZiMDJhMjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li5iZGQxZWY4Mjk1
MmVmNDE0MTE3NmQzYzY5YjgxN2ExMzIyYzMxN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCi0jZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNSw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAg
c3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0eXBlID0geyB9LCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoLCBuYW1lLCB0eXBl
LCBkZXN0aW5hdGlvblR5cGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UoKTsKQEAgLTUyLDIyICs1MSwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJldm9rZUZpbGVBY2Nlc3MoKTsKIAogcHJvdGVjdGVkOgotICAgIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSA9IHsgfSwgY29uc3QgU3RyaW5nJiB0
eXBlID0geyB9LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVHlwZSA9IHsgfSk7CiAKIHByaXZh
dGU6CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCisgICAgYm9vbCByZXBsYWNlbWVudFNo
b3VsZEJlR2VuZXJhdGVkKCkgY29uc3Q7CiAgICAgdm9pZCBnZW5lcmF0ZVJlcGxhY2VtZW50Rmls
ZSgpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOworICAgIFN0cmluZyBtX25hbWU7Cisg
ICAgU3RyaW5nIG1fdHlwZTsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvblR5cGU7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgU3RyaW5nIG1fcmVwbGFjZW1lbnRQYXRoOwotICAg
IGJvb2wgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3NpemUgeyAwIH07CiAgICAgTWFya2FibGU8V2FsbFRp
bWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7
CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVlYzc3N2E4Njk5MDY3MTE4Y2JjZDU1MjhlOGY0ZmZl
OTJhNDQ4NmIuLjc3ODJmOGQ5OGU5MDcxOTU4MjA3ZjRhZGFkYTAyMmYxMjA4NjA5Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9C
bG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0KQEAgLTI4LDI1ICsyOCw3NCBAQAogCiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAKKyNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNp
bXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6cmVwbGFj
ZW1lbnRTaG91bGRCZUdlbmVyYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSAhPSBt
X2Rlc3RpbmF0aW9uVHlwZSAmJiBtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKTsKK30KKwogdm9p
ZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIHsKLSAg
ICBBU1NFUlQobV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpOwotICAgIEFTU0VSVChtX3JlcGxh
Y2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpOworICAgIEFTU0VSVChyZXBsYWNlbWVudFNob3VsZEJl
R2VuZXJhdGVkKCkpOwogCiAgICAgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKIAotICAgIGF1dG8g
Z2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUobV9w
YXRoKTsKLSAgICBpZiAoIWdlbmVyYXRlZEZpbGUuaXNOdWxsKCkpCi0gICAgICAgIG1fcmVwbGFj
ZW1lbnRQYXRoID0gV1RGTW92ZShnZW5lcmF0ZWRGaWxlKTsKKyAgICBTdHJpbmcgZ2VuZXJhdGVk
RmlsZTsKKyAgICBpZiAobV9kZXN0aW5hdGlvblR5cGUgPT0gImFwcGxpY2F0aW9uL3ppcCJfcykK
KyAgICAgICAgZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUobV9wYXRoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSAhPSBtX2Rl
c3RpbmF0aW9uVHlwZSk7CisgICAgICAgIEFTU0VSVChtX2Rlc3RpbmF0aW9uVHlwZS5zdGFydHNX
aXRoKCJpbWFnZS8iX3MpKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIGltYWdlIHNvdXJjZS4K
KyAgICAgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICAgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwgTlVMTCkp
OworICAgICAgICBpZiAoIXNvdXJjZSkgeworICAgICAgICAgICAgbV9kZXN0aW5hdGlvblR5cGUg
PSBtX3R5cGU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBD
b21wdXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIHByZWZpeCBhbmQgZmlsZSBleHRlbnNpb24u
CisgICAgICAgIGF1dG8gY29tcG9uZW50cyA9IG1fbmFtZS5zcGxpdCgnLicpOworICAgICAgICBh
dXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5
cGUobV9kZXN0aW5hdGlvblR5cGUpOworICAgICAgICBhdXRvIHByZWZpeCA9IG1ha2VTdHJpbmco
Y29tcG9uZW50cy5maXJzdCgpLCAiXyJfcyk7CisgICAgICAgIGF1dG8gc3VmZml4ID0gbWFrZVN0
cmluZygiLiJfcywgZXh0ZW5zaW9ucy5maXJzdCgpKTsKKworICAgICAgICAvLyBDcmVhdGUgYSB0
ZW1wb3JhcnkgZmlsZS4KKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHBs
YXRmb3JtRmlsZUhhbmRsZTsKKyAgICAgICAgZ2VuZXJhdGVkRmlsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKHByZWZpeCwgcGxhdGZvcm1GaWxlSGFuZGxlLCBzdWZmaXgpOworICAg
ICAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpIHsKKyAgICAgICAgICAgIG1fZGVzdGluYXRpb25UeXBlID0gbV90eXBlOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBtX3JlcGxhY2VtZW50U2hvdWxk
QmVHZW5lcmF0ZWQgPSBmYWxzZTsKLSAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgp
KSB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgZGF0YSBjb25zdW1lci4KKyAgICAgICAgQ0dEYXRh
Q29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyBbXSh2b2lkICppbmZvLCBjb25zdCB2b2lk
KiBidWZmZXIsIHNpemVfdCBjb3VudCkgLT4gc2l6ZV90IHsKKyAgICAgICAgICAgIGF1dG8gcGxh
dGZvcm1GaWxlSGFuZGxlID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSo+KGluZm8pOworICAgICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KHBsYXRmb3JtRmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNv
dW50KTsKKyAgICAgICAgfSwgTlVMTCB9OworCisgICAgICAgIGF1dG8gY29uc3VtZXIgPSBhZG9w
dENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlKCZwbGF0Zm9ybUZpbGVIYW5kbGUsICZjYWxsYmFja3Mp
KTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIGltYWdlIGRlc3RpbmF0aW9uLgorICAgICAgICBh
dXRvIHV0aSA9IFVUSUZyb21NSU1FVHlwZShtX2Rlc3RpbmF0aW9uVHlwZSk7CisgICAgICAgIGF1
dG8gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRh
Q29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAxLCBO
VUxMKSk7CisKKyAgICAgICAgLy8gV3JpdGUgdGhlIGltYWdlIHNvdXJjZSB0byB0aGUgaW1hZ2Ug
ZGVzdGluYXRpb24uCisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlRnJvbVNvdXJj
ZShkZXN0aW5hdGlvbi5nZXQoKSwgc291cmNlLmdldCgpLCAwLCBudWxscHRyKTsKKyAgICAgICAg
Q0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUocGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICB9CisKKyAgICBp
ZiAoIWdlbmVyYXRlZEZpbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9yZXBsYWNlbWVudFBhdGgg
PSBXVEZNb3ZlKGdlbmVyYXRlZEZpbGUpOwogICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IEZp
bGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRo
KSkKICAgICAgICAgICAgIG1fc2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzLm1tCmluZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAw
OGIxNDg4MjMuLjg2YTI0NTg4YTcxZDMwYzU2MTViMzM2ZWZkYjBkNjY3YjdiNjk3ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFt
ZXRlcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBh
bmVsUGFyYW1ldGVycy5tbQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIldLT3BlblBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3Ry
eS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTYyLDExICs2NCwxMyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIE5TU2V0PE5TU3RyaW5nICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQog
ICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRo
Q2xhc3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBp
ZiAoIWV4dGVuc2lvbnMgfHwgIUNGQXJyYXlHZXRDb3VudChleHRlbnNpb25zLmdldCgpKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1F
VHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKilleHRlbnNpb25zLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEFkZCBhZGRpdGlvbmFsIG1pbWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlk
ZW50aWZpZXJzKCkgbWF5IG5vdCByZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVU
eXBlKEAiaW1hZ2Uvd2VicCIsIEAid2VicCIpOworICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlN
RVR5cGUoQCJpbWFnZS93ZWJwIiwgQFtAIndlYnAiXSk7CiAKICAgICAgICAgcmV0dXJuIGV4dGVu
c2lvbnNGb3JNSU1FVHlwZU1hcDsKICAgICB9KCkpOwpAQCAtNzksNiArODMsMTggQEAgc3RhdGlj
IE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0
eXBlKQogICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkgb2JqZWN0Rm9yS2V5
Om1pbWV0eXBlXTsKIH0KIAorc3RhdGljIE5TU3RyaW5nICptaW1lVHlwZUZvckV4dGVuc2lvbihO
U1N0cmluZyAqZXh0ZW5zaW9uKQoreworICAgIE5TU2V0PE5TU3RyaW5nICo+ICptaW1lVHlwZXMg
PSBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkga2V5c09mRW50cmllc1Bhc3NpbmdUZXN0Ol5C
T09MKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJP
T0wgKikgeworICAgICAgICBpZiAoW21pbWVUeXBlIGhhc1N1ZmZpeDpAIioiXSkKKyAgICAgICAg
ICAgIHJldHVybiBOTzsKKyAgICAgICAgaWYgKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDow
XSA9PSAnLicpCisgICAgICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6
W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOworICAgICAgICByZXR1cm4gW2V4dGVu
c2lvbnMgY29udGFpbnNPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAgICB9XTsKKyAgICByZXR1cm4gW21p
bWVUeXBlcyBhbnlPYmplY3RdOworfQorCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTEzNiwzNiArMTUy
LDExOCBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShO
U1N0cmluZyAqbWltZXR5cGUpCiAgICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxs
T2JqZWN0c107CiB9CiAKLS0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRl
bnNpb25zVGl0bGVzCistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVu
c2lvbnMKIHsKLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlN
RVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0
ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJp
bWFnZS8qIikgYWxsT2JqZWN0c107Cit9CiAKLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1Rp
dGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUg
PSBAIkN1c3RvbSBGaWxlcyI7CistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxl
RXh0ZW5zaW9uc1RpdGxlcworeworICAgIE5TU3RyaW5nICphbGxGaWxlc1RpdGxlID0gV0VCX1VJ
X1NUUklORygiQWxsIEZpbGVzIiwgIkFsbCBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBO
U1N0cmluZyAqYWxsSW1hZ2VGaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiSW1hZ2UgRmlsZXMi
LCAiSW1hZ2UgRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmFsbFZpZGVv
RmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIlZpZGVvIEZpbGVzIiwgIlZpZGVvIEZpbGVzIGlu
IGZpbGVyIHBpY2tlciIpOworICAgIE5TU3RyaW5nICphbGxBdWRpb0ZpbGVzVGl0bGUgPSBXRUJf
VUlfU1RSSU5HKCJBdWRpbyBGaWxlcyIsICJBdWRpbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsK
KyAgICBOU1N0cmluZyAqY3VzdG9tRmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkN1c3RvbSBG
aWxlcyIsICJDdXN0b20gRmlsZXMgaW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmlt
YWdlVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCIlQCBpbWFnZSIsICJJbWFnZSBmb3JtYXQgdHlwZSBp
biBmaWxlIHBpY2tlciIpOworICAgIE5TU3RyaW5nICp2aWRlb1RpdGxlID0gV0VCX1VJX1NUUklO
RygiJUAgdmlkZW8iLCAiVmlkZW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAgICBO
U1N0cmluZyAqYXVkaW9UaXRsZSA9IFdFQl9VSV9TVFJJTkcoIiVAIGF1ZGlvIiwgIkF1ZGlvIGZv
cm1hdCB0eXBlIGluIGZpbGUgcGlja2VyIik7CisgICAgCisgICAgY29uc3RleHByIGF1dG8gaW1h
Z2VUeXBlID0gQCJpbWFnZSI7CisgICAgY29uc3RleHByIGF1dG8gdmlkZW9UeXBlID0gQCJ2aWRl
byI7CisgICAgY29uc3RleHByIGF1dG8gYXVkaW9UeXBlID0gQCJhdWRpbyI7CisgICAgY29uc3Rl
eHByIGF1dG8gY3VzdG9tVHlwZSA9IEAiY3VzdG9tIjsKICAgICAKLSAgICBpZiAoIVthY2NlcHRl
ZE1JTUVUeXBlcyBjb3VudF0gJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAg
ICAgICAgcmV0dXJuIEBbQWxsRmlsZXNUaXRsZV07CisgICAgYXV0byBjb21wb3NlVGl0bGVzID0g
XihOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSB7
CisgICAgICAgIE5TTXV0YWJsZUFycmF5KiB0aXRsZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
OworCisgICAgICAgIC8vIGlmIHsgdHlwZSBzdWJUeXBlIH0gPT0gImltYWdlL3BuZyIgdGhlbiBh
ZGQgIlBORyBJbWFnZSIKKyAgICAgICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0pIHsKKyAgICAgICAg
ICAgIE5TU3RyaW5nICp0eXBlVGl0bGUgPSBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBl
XSA/IGltYWdlVGl0bGUgOiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gPyB2aWRl
b1RpdGxlIDogYXVkaW9UaXRsZSk7CisgICAgICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8
PSA0KQorICAgICAgICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OnR5cGVUaXRsZSwgW3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5nXV1dOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OnR5cGVUaXRsZSwgc3ViVHlwZV1dOworICAgICAgICB9IGVsc2UgaWYg
KFt0eXBlIGlzRXF1YWxUb1N0cmluZzpjdXN0b21UeXBlXSkgeworICAgICAgICAgICAgLy8gaWYg
eyB0eXBlIHN1YlR5cGUgfSA9PSAiQ3VzdG9tIEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZpbGVz
IgorICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6Y3VzdG9tRmlsZXNUaXRsZV07CisgICAg
ICAgIH0KIAotICAgIGlmICghKFthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2Fj
Y2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmls
ZXNUaXRsZSwgQWxsRmlsZXNUaXRsZV07CisgICAgICAgIC8vIGlmIGFsbFR5cGUgPT0gImltYWdl
IiB0aGVuIGFkZCAiSW1hZ2UgRmlsZXMiCisgICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKSB7
CisgICAgICAgICAgICBOU1N0cmluZyAqYWxsVHlwZVRpdGxlID0gW2FsbFR5cGUgaXNFcXVhbFRv
U3RyaW5nOmltYWdlVHlwZV0gPyBhbGxJbWFnZUZpbGVzVGl0bGUgOiAoW2FsbFR5cGUgaXNFcXVh
bFRvU3RyaW5nOnZpZGVvVHlwZV0gPyBhbGxWaWRlb0ZpbGVzVGl0bGUgOiBhbGxBdWRpb0ZpbGVz
VGl0bGUpOworICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxsVHlwZVRpdGxlXTsKKyAg
ICAgICAgfQogCi0gICAgYXV0byBtaW1lVHlwZSA9IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9i
amVjdF07Ci0gICAgYXV0byByYW5nZSA9IFttaW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwot
ICAgIAotICAgIGlmICghcmFuZ2UubGVuZ3RoKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxl
c1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLSAgICAKLSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0g
W21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOwotICAgIGF1dG8gbWlt
ZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9u
ICsgMV07Ci0gICAgCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIq
Il0pCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBG
aWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJp
bmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nRnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRs
ZV07CisgICAgICAgIC8vIEluIGFsbCBjYXNlcyBhZGQgIkFsbCBGaWxlcyIKKyAgICAgICAgW3Rp
dGxlcyBhZGRPYmplY3Q6YWxsRmlsZXNUaXRsZV07CisgICAgICAgIHJldHVybiB0aXRsZXM7Cisg
ICAgfTsKKworICAgIC8vIE5vIGFjY2VwdCBhdHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4K
KyAgICBpZiAoIVtbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9h
Y2NlcHRlZEZpbGVFeHRlbnNpb25zXSBjb3VudF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0
bGVzKEAiIiwgQCIiLCBAIiIpOworCisgICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IGFkb3B0
TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6W3NlbGYgX2FjY2VwdGVkTUlN
RVR5cGVzXV0pOworCisgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIFtzZWxmIF9hY2Nl
cHRlZEZpbGVFeHRlbnNpb25zXSkgeworICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG1pbWVUeXBlRm9y
RXh0ZW5zaW9uKFtleHRlbnNpb24gc3Vic3RyaW5nRnJvbUluZGV4OjFdKTsKKworICAgICAgICAv
LyBVbmtub3duIGZpbGUgZXh0ZW5zaW9uOiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIueHl6
Ij4KKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wb3NlVGl0
bGVzKGN1c3RvbVR5cGUsIEAiIiwgQCIiKTsKKworICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMg
YWRkT2JqZWN0Om1pbWVUeXBlXTsKKyAgICB9CisKKyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsK
KyAgICBOU1N0cmluZyAqc3ViVHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5p
bDsKKworICAgIGZvciAoTlNTdHJpbmcgKm1pbWVUeXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzLmdl
dCgpKSB7CisgICAgICAgIE5TUmFuZ2UgcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpA
Ii8iXTsKKyAgICAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5k
ZXg6cmFuZ2UubG9jYXRpb25dOworICAgICAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVU
eXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOworCisgICAgICAgIC8v
IE9ubHkgaW1hZ2UsIHZpZGVvIGFuZCBhdWRpbyBtaW1lIHR5cGVzIHdpbGwgaGF2ZSBkZXNjcmlw
dGl2ZSB0aXRsZXMuIE90aGVyIHR5cGVzIHdpbGwgYmUgc2hvd24KKyAgICAgICAgLy8gYXMgIkN1
c3RvbSBGaWxlcyIuICJDdXN0b20gRmlsZXMiIHdpbGwgYmUgc2hvd24gYWxzbyBpZiBtb3JlIHRo
YW4gYSBtaW1lIHR5cGUgaXMgc3BlY2lmaWVkLgorICAgICAgICBpZiAoIVttaW1lVHlwZVByZWZp
eCBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSAmJiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxU
b1N0cmluZzp2aWRlb1R5cGVdICYmICFbbWltZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOmF1
ZGlvVHlwZV0pCisgICAgICAgICAgICB0eXBlID0gY3VzdG9tVHlwZTsKKyAgICAgICAgZWxzZSBp
ZiAoIXR5cGUpCisgICAgICAgICAgICB0eXBlID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVs
c2UgaWYgKCFbdHlwZSBpc0VxdWFsVG9TdHJpbmc6bWltZVR5cGVQcmVmaXhdKQorICAgICAgICAg
ICAgdHlwZSA9IGN1c3RvbVR5cGU7CisKKyAgICAgICAgLy8gIkN1c3RvbSBGaWxlcyIgYWxzbyB3
aWxsIGJlIHNob3duIGlmIG1vcmUgdGhhbiBvbmUgc3ViLXR5cGUgaXMgc3BlY2lmaWVkIHVubGVz
cyAiKiIgaXMgc3BlY2lmaWVkLgorICAgICAgICBpZiAoIXN1YlR5cGUgfHwgW21pbWVUeXBlU3Vm
Zml4IGlzRXF1YWxUb1N0cmluZzpAIioiXSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1lVHlw
ZVN1ZmZpeDsKKyAgICAgICAgZWxzZSBpZiAoIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioi
XSAmJiAhW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAg
ICAgIHN1YlR5cGUgPSBjdXN0b21UeXBlOworCisgICAgICAgIC8vIEFkZCAiSW1hZ2UgRmlsZXMi
IHRpdGxlIGlmIG1pbWVUeXBlIGlzIGFsbG93ZWQgZGVzdGVuYXRpb24gaW1hZ2UgZm9ybWF0Lgor
ICAgICAgICBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKQorICAgICAgICAgICAgYWxsVHlwZSA9IGltYWdl
VHlwZTsKKyAgICB9CisKKyAgICAvLyBDdXN0b20gRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJh
dWRpby8qLGltYWdlL3BuZyIgb3IgYWNjZXB0PSJhcHBsaWNhdGlvbi9wZGYiLgorICAgIGlmIChb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6Y3VzdG9tVHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3Nl
VGl0bGVzKGN1c3RvbVR5cGUsIEAiIiwgQCIiKTsKKworICAgIC8vICdUeXBlJyBGaWxlcywgQWxs
IEZpbGVzOiBhY2NlcHQ9ImltYWdlLyoiIG9yIGFjY2VwdD0iYXVkaW8vKiIuCisgICAgaWYgKFtz
dWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioiXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRs
ZXMoQCIiLCBAIiIsIHR5cGUpOwogCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9
IDQpCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAi
LCBbbWltZVR5cGVTdWZmaXggdXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxG
aWxlc1RpdGxlXTsKKyAgICAvLyBDdXN0b20gRmlsZXMsICdUeXBlJyBGaWxlcywgQWxsIEZpbGVz
OiBhY2NlcHQ9ImltYWdlL2pwZWcsaW1hZ2UvcG5nIi4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVh
bFRvU3RyaW5nOmN1c3RvbVR5cGVdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0
b21UeXBlLCBAIiIsIGFsbFR5cGUpOwogCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQCAlQCIsIG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZp
bGVzVGl0bGVdOworICAgIC8vICdTdWItdHlwZSBUeXBlJywgJ1R5cGUnIEZpbGVzLCBBbGwgRmls
ZXM6IGFjY2VwdD0iaW1hZ2UvcG5nIi4KKyAgICByZXR1cm4gY29tcG9zZVRpdGxlcyh0eXBlLCBz
dWJUeXBlLCBhbGxUeXBlKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
LmgKaW5kZXggMjllZTgxMjBlNGFmMWJhZWEyMmMwNjI0YWMyZTIzYjRlMWJkNGFkNi4uN2MxZmNk
MWIyYTcxZWE1NWFlNmE1Yzc0OTc2NDJlYjUxOGM4ODc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUHJpdmF0ZS5oCkBAIC0zMSw4ICszMSw5IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5z
aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93
ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAq
X2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkMTBkOTkyNDkxYmRiZDlkOGFhMWIzZTg3Yjg0NTAwMzI0
Yzk5NDAuLjZkZDdiM2M5OGU2OTRiYzI3NWRjMjUzMTU2ZTY3N2QzYzI1NDRjY2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAyMC0wNi0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxl
IGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVk
IHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHRoZSBudW1iZXIgb2YgdGhlIGZp
bGUgZXh0ZW5zaW9ucycgdGl0bGVzIGlzIHRocmVlLCBzZW5kIGFuIGFycmF5IG9mIAorICAgICAg
ICBhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHRvIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQuIEFs
c28gc2V0IHRoZSBpbml0aWFsCisgICAgICAgIHNlbGVjdGlvbiBvZiB0aGUgZmlsdGVyIHRvIHRo
ZSBpdGVtIG5hbWVkICJJbWFnZSBGaWxlcyIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMv
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQ
b3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6YWxsSW1h
Z2VGaWxlRXh0ZW5zaW9uczpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCBwb3B1cEFjdGlvbjpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
Y3JlYXRlRmlsdGVyVmlldzpwb3B1cFRhcmdldDpdKToKKyAgICAgICAgKC1bV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFt
ZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4
dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDYtMjEgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGbGF0cGFrXSBOaWdodGx5IHJ1bm5lciBm
YWlscyB0byBleHRyYWN0IHppcCBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCA1NzBhYWE1NGRiOTcwZTQ3NDI0ODk0
ZjdiZDg3MWE3M2YyYzdkZDBlLi5kYmY5ZDJhNjA0NDJjY2MyZDYyYjg3ODg2ZWIwY2FlMWZjMWE1
ZmJjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQpAQCAtNzcsMTUgKzc3LDE3IEBAIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQ
b3B1cFRhcmdldCA6IE5TT2JqZWN0IHsKIEBwcml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVu
UGFuZWw7CiAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsK
KyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKIH0KIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKIAotLSAoaWQp
aW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRl
bnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKKy0g
KGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxl
RXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBh
bGxJbWFnZUZpbGVFeHRlbnNpb25zOiAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbEltYWdlRmls
ZUV4dGVuc2lvbnMgewogICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAg
X29wZW5QYW5lbCA9IG9wZW5QYW5lbDsKICAgICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9
IFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29weV07CisgICAgICAgIF9hbGxJbWFnZUZpbGVFeHRl
bnNpb25zID0gW2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY29weV07CiAgICAgfQogICAgIHJldHVy
biBzZWxmOwogfQpAQCAtMTAwLDYgKzEwMiwxMiBAQCAtICh2b2lkKXBvcHVwQWN0aW9uOihpZClz
ZW5kZXIgewogICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0Ai
Il1dOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmls
ZVR5cGVzOl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IE1pZGRsZSBpdGVtLgorICAgICAgICBpZiAoIVtfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBjb3Vu
dF0pCisgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlw
ZXM6X2FsbEltYWdlRmlsZUV4dGVuc2lvbnNdOwogICAgIH0KIH0KIApAQCAtNjQ0LDcgKzY1Miw3
IEBAIC0gKG51bGxhYmxlIE5TVmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRs
ZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNpCiAgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBU
YXJnZXRdOwogICAgIFtidXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsK
ICAgICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDow
XTsKKyAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4Olt0aXRsZXMgY291bnRdIDw9IDIgPyAw
IDogMV07CiAgICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07CiAgICAgCiAgICAg
TlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3RdIGF1dG9yZWxlYXNlXTsKQEAgLTY4NywxMCArNjk1LDEzIEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVu
UGFuZWxQYXJhCiAKICAgICBvcGVuUGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJh
bWV0ZXJzLmFsbG93c011bHRpcGxlU2VsZWN0aW9uOwogCisgICAgTlNBcnJheSAqYWxsb3dlZEZp
bGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0
bGVzOworICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IHBhcmFtZXRlcnMuX2Fs
bG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBOU0FycmF5ICphbGxJbWFnZUZpbGVFeHRlbnNpb25z
ID0gW2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBjb3VudF0gPT0gMiA/IEBbXSA6IHBhcmFt
ZXRlcnMuX2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7CisgICAgCiAgICAgW19maWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwotICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0g
W1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3Bl
blBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRl
bnNpb25zXTsKKyAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnM6IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNp
b25zOiBhbGxJbWFnZUZpbGVFeHRlbnNpb25zXTsKIAotICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxl
RXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
czsKICAgICBOU1ZpZXcgKmZpbHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93
ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBwb3B1cFRhcmdldDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRh
cmdldF07CiAgICAgaWYgKGZpbHRlclZpZXcpCiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNz
b3J5VmlldzpmaWx0ZXJWaWV3XTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NjVkMDE3OWE2MThmMzk1ODAzMzM3ZDc2NGY2
ZmI1ZmQxZWExNTQ4Li5iNDlhMjVlMjcxNzc3NDkzZGIxNGRmODQ4NmViYjFiYWEwNDA1MGQxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDYtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fi
b3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24t
YWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBz
aG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtY29weS1kZXN0aW5h
dGlvbi1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5lbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2Vz
L2ltYWdlcy8xMDB4MTAwLXJlZC5wc2Q6IEFkZGVkLgorICAgICAgICBUZXN0cyBjaG9vc2luZyBh
IFBTRCBpbWFnZSB2aWEgdGhlIGZpbGUgcGlja2VyIHdpbGwgY29udmVydCBpdCB0byBhbgorICAg
ICAgICBhY2NlcHRlZCBkZXN0aW5hdGlvbiB0eXBlLgorCiAyMDIwLTA2LTIxICBHZW9mZnJleSBH
YXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgY29tcG9zaXRpbmcvdmlkZW8vdmlk
ZW8tYm9yZGVyLXJhZGl1cy1jbGlwcGluZy5odG1sIHdhcyBhIGZsYWt5IGZhaWx1cmUgYWZ0ZXIg
cjI2MzIyMwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMt
YXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtY29weS1kZXN0aW5hdGlv
bi1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDIxOGJjNGRjODEyZTczMzY5
OWFiYTUyOGJkZDgwOTBkMTFlMTBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5l
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorT1BFTiBGSUxFIFBBTkVMCitUZXN0cyBh
biBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIsIHdpbGwgYmUgY29udmVydGVkIHRv
IGFuIGFjY2VwdGVkIGRlc3RpbmF0aW9uIGZvcm1hdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgZmlsZUxpc3QubGVuZ3RoIGlzIDEKK1BBU1MgZmlsZS50eXBlIGlzICJp
bWFnZS9wbmciCitQQVNTIGZpbGUuc2l6ZSBpcyBub24temVyby4KK1BBU1MgaW1nLndpZHRoIGlz
IDEwMAorUEFTUyBpbWcuaGVpZ2h0IGlzIDEwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHktZGVzdGluYXRpb24tb3Blbi1wYW5lbC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLWNvcHkt
ZGVzdGluYXRpb24tb3Blbi1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNzQ5OGE1NTYwZmJiNWY0
MjQyODMwZDMyYTRlOTNjZDk2YjAyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtY29weS1kZXN0aW5hdGlvbi1vcGVuLXBh
bmVsLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGFj
Y2VwdD0iLnBuZyIgb25jaGFuZ2U9ImNoYW5nZWQoZXZlbnQpIj48L2lucHV0PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBhbiBpbWFnZSwgY2hvc2VuIHZpYSB0aGUg
ZmlsZSBwaWNrZXIsIHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGFjY2VwdGVkIGRlc3RpbmF0aW9u
IGZvcm1hdC4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0T3Bl
blBhbmVsRmlsZXMoWydyZXNvdXJjZXMvaW1hZ2VzLzEwMHgxMDAtcmVkLnBzZCddKTsKKworICAg
ICAgICAgICAgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lu
cHV0JylbMF07CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGlucHV0RWxlbWVudC5v
ZmZzZXRMZWZ0ICsgaW5wdXRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAgICAgICAg
ICBpbnB1dEVsZW1lbnQub2Zmc2V0VG9wICsgaW5wdXRFbGVtZW50Lm9mZnNldEhlaWdodCAvIDIp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hhbmdlZChldmVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgZmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7CisgICAgICAgICAg
ICBzaG91bGRCZSgiZmlsZUxpc3QubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgZmlsZSA9
IGZpbGVMaXN0WzBdOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlLnR5
cGUiLCAiaW1hZ2UvcG5nIik7CisgICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZpbGUuc2l6
ZSIpOworCisgICAgICAgICAgICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgICAgICAg
ICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFkZXIub25s
b2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcud2lkdGgiLCAiMTAwIik7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJpbWcuaGVpZ2h0IiwgIjEwMCIpOworICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IGltZy5zcmMgPSByZWFkZXIucmVzdWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJl
YWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOworICAgICAgICB9CisgICAgICAgIHJ1blRlc3QoKTsK
KyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzLzEwMHgxMDAtcmVk
LnBzZCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMv
aW1hZ2VzLzEwMHgxMDAtcmVkLnBzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzRjY2FmZTNlNDgwNzJhYTZmNTcx
NTVlMDYyMDk2NTU2ZDAwYzM2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NTcwCnpjbWVIfmNU
Xkt1N3JAYGxxIShJMzFmJmVUY1l5I1J5JE1LX0NNcSFyNUs2JDFmWT1NN2YtOCFPTlU8UVJBfStX
Vgp6Sy1QKlY3OFY3MlU2NGhAd3ohSDdtMlU/MnB4PH1TPylSUGp7XyR9M3kpJG9xYk1Ka2JKTkxl
cXh4QDdjMj9yMXUKelozT0hqNyYjfmE4NUo/fHhnUCNPJGN2RkhDTD08XjZLN2BkQnRrSmkyYUlU
Kms3eUt0QTlqWVl7PkteRDUjKF9sCnoxQ3VjUDAhODk8U09JYEV1flpWfj53IWtjI0c+U08wMFN4
QDBjIXd3e0xHQT9hR3daI2hRR0hibnUhX1Z7SDQ5UQp6RzN3YDRiSDVOMntVWk9MTlJnaSprengq
cFZBaSQqVkowOHJUI1FxKnI1VSg8MEF1IT82cjVvXjNUejRIQWpUPjwKekN5dWgmaHxNVXc7VmVp
S1c2Xj9mcEVDcSQwLVJlZ1VZI1dxVnZHYzBvUj1qTVdAQ0h9VzQlO2FuaDRgfTdfLXhhCnp5aTVR
SDN8dVoxQHs9Jk8hazhoNjI9bH52RzV7MXQ7I1dOOUUwemw5VlNXUE9uVnlqJjVoVyVgUTZzKUZZ
VkdMQQp6TWc0QD9zWTBwTEpjUCRqO1lrRmpYTD8hJlBuPzZMYj54fXhTd0lQb0VzNiElLXJDWEwt
clU5bDM7JFVBT1habD0KelVqdkBvUUh4aWhCUlBYT1pDXyt4PTY7Yy1SfDNFdCNBMzdsaSlfd1Qw
Mik+VHBtT0puT203RE9eMEAlaVU7Z1RPCnpJUVYpPWwxZWsyRUdASU12bkBuSXo2Qm84dkchakwj
d2BDRnpQZ19VZSFzRVVwPGNvU28tOT8wO3o4eDdyPjRzIQp6RDdIaVJMZSVefTd4Q1lvXz8yNTxg
QyUzJk9jM0hiUUhWeGp0NHQoTCNMX0ptaEBfJSlGKTktT1MlJn1TdzZBPT8KemFkY2Z7el5lS1Qq
dDBFdyFldXI8cDBAITRpdz07dVpJfWljJVVkOGQ2NXU7OE5+Pj5sLUQ4YURONSsyfTs2bSZZCnom
Si1vMHhZI28rMF9EcGpTdlheUjB3MEtnMklLKTdyfip4KDN5Z3B7dW1LTGg4TXB5JkZjayFZMm9N
OGkwWHwzcQp6WCtRJDkhOXVWTTxiZVhQOSY4NHNVXn1QKyl1MHZ9MVAkT0FJMVNFJE9XK0UpNChA
XzMmPG1ifDBxX1A0S0BkY1MKem09RnQ2Z3xyfWokUH1gSHhYPXtIOHchTk5wY3A2fk5gJUNhM3xh
YFNmQ2BgQHMxKGA+UllOflFOMUBadTEqaWtNCno0UnU1UChDXlIoNz1hbHU4YGdqZ1VgdjxfeVRi
dSsxVXdUP2d5K0taO2FxcWZUbW8wWmB7OD17Rzwqclo0dEsjJQp6O1h3by1iY0JPd0JqeU1mQGtE
fT1TUj9fRkFkOFdGcSFfNzBZTE88UzZ9Z0laQTx2TmExUUxOb0tuZG1xWE0hSkwKekkpUDdeT0lT
PTtPREhBbUNEYXBJMnYtVCtnYU57NUI5b3wyRyRsRl97ZldgVUx9RTVFazYyOUhPKn0kOE9UMTMo
CnpDQjdrJU5GMChPJCR7aVlpWGtQRjdMZUFHRG9BeXRRPXxAMzR7NEIwQ2FhUTckdTh0ekdMSX1K
PWFJTFBfbWZZTwp6SklUR3xjTjk4QmkoKjZacH5PPGVsO3hDUyUwOXtvTisrZHtHREtDTj5Ra01s
IUJoYj9oZ3dManFCYz00USt1Z0gKekcpMDtyJjRtXzBPUXRRT21DJE53WEtEOW51anE4VDQmOUwr
TipCP1cobzUoRT07IUkoXiFFJVVoNiUleTV5eX0qCnopLW09bFBCQ3NYVU5NPFcxRXcxQG1NTFlm
Vl4lWklGZHMxQSQrNkB0PG94OVhhIWNnTzxtJS0qPHpDMkI8QE0jPQp6PCE4eXltb0p0LUIhNX17
bkYzWThLKjNYaXI/Nk98T3lRYClPQCU+NG1aRyZ7dXd0NnhURSVeZTdaZXtXayhDVVQKenlwO3E+
eGt8Zn4mTTVWOzVTQXs+bGZgR1BVeyRmc3ZVPUdod2p0WX1veTt5XnxHO2klND01YHNQZzBJbG9+
Sy08CnpkfGJKVWdLIUt1eyt2YCFBP0cwSDJJcz5CalMyMShnY0hfR3NHWk9gO2pQTDw2Km0+M08x
P14rJTV7fHdzO0h7Qgp6WUtyT3gpZHRvM1k2TFlDd05TTmV3UVh1PSl0KmdjUGpzSGhwT2A9SztL
ViFYdSkyd1FuRUM/c1VGdlA+Z0JxRnwKeno4Vj1DVFEkeVRKayNXOHhAamhCWnFodVYqe3tYWW54
WkFyK041PC0+anxvaXh9JkxSM0VGfVZYc2NgY1kwST5DCnpZUFZ8LT1Ae3h2KklCTXByKm1KSXJw
d2gkKEF9aWx0VUk4bXI1QntQUF9JVnNqeV9lTnREbUk1TVpaPTV0JTBGSQp6bCkpOzQyN3x8akR1
KGBzXjleZVo/LT88VFQjZT0kUlReRDBDSys+JFE7YUsmdWI5OWxifHkoQ1doUiRSVk4taWsKemsh
Z2kjaFopaCMoTSlWc1g/RHxgVmVXMzhXbk4/NlpOYWUhdnstSkBWRFo5SSZvYjY+Z0pyQWJYRGQ2
YVJJNGhoCnp5VmdxOVE+flg8SChDRX5WYDlVJURZTG18JWUze2VVMUhtNGAqTT0kQjtsbE9sV3k2
dT8xSm84Kilgakp2VWprVAp6KndAPGtKTG95WUpDci16PGcmUlQrX2x7RWp6bVdmJDBkJSg5TiM8
SEo0dX1tSXtvSHM/d3NQaCYtdzlXIV55KFEKelJnLSZNYlg8NVlKNipiX3BpfDxmPzNtSyFzX257
aXQjcDBwcnQybmYrd0lvcFp0Un15elRmP1lobjB1SzxBfSN3CnpQYmJlc29+T0pKRkpHXkd1WGIt
R0A5RXk5LVZjMHFkPWg8WGQ8Sn4mZD44bmhAKzB+TV8tKmpKPjk2Nj5fcGtPSgp6bkNkV2YoYlNk
ek1uSEgjWH40cmtsUiF5ZVF4Rl85SEUzaGR5PW5UPiNNMnNyTDlsPUQjXkMhUWg5UHI5ZWhNWHAK
emhKPT1kSl9AckFUTnVfRiZJK0YkekF5WXVnaHhiUyNORnZlKGBEMH1CanFGR0JDOHxjTXRNYVFN
Umk0Nk1sWHVLCno2ciZhK2lmTjFgJDQxOFBqdmJ1Z0ohQThYLVo7Q3N5dG9AUDRRSX1xZDEwMj90
a2hZQFhVb3MjJXt+LVFqRXs9bgp6N3lwcUwlJlgpTCZoZWo5SzQqYU0kPXx8JURzVTVRNjcmbVFn
aGolPjFlYilPZ3ZXXzRpNW5DOWxVJFJFbGIocUAKek1XdiNiJCRyVihsaSNLVXJ8ZH0/UEtgPmZP
UVdSNHJ5VWg1aUJyVGE+Nis+RChtT0l0R3g5Uko8fnEmWUphPDQ2CnpBbGFQPld6TmlPbChNbTZz
IWU3alRQZj8jbnZ6d1BeKTVSeWBfTWVhZEUkOShJVkwlNGF7QWBgJT5SQT9WRjc8Wgp6XkZyLX4l
TkJNb2EkbUdfRnw+SGo7XnJsfk9MQ1g9Rjc7aXljTnVNMiVDZXVBVFAtaEl7KDQyIWlsJHRSK0At
bGEKekR9N2hpPGpMaHBAQH1xalViVEhTVllPJj1geEBJZFRpMU5mN3Z4X291cXI0bl9fJnQ4X1Rx
UWUtPDVuZnllP3J+CnpkIWM+ZHcpTGQtO2BLSyt4Tmd7NnEqeWUrc0FwcikjYDthQHJ1PEU+SF96
VURwP0ZnOV9BUnQ2dk1wVURmaENQdwp6XnxyM3hgbXI+cl5tPl5gU3pXbiRgSV8+IzZAclMrWkVv
OVl3YCopSyojMlJNWHZlTGN6Qn10SDRKd093ayM9UzYKemRRPXJ6KSVyZDZgfDkwbHk5OylJKzlU
ZjZ3S3JeVU9TTUNGXio7NHxnKjktRXRmcWZ8LTJOKitjPlR+PVloSnN2CnpqI0YxfjAzNDdWYz1C
V1hrMmVrbTlCZStzSnlkJkd8OFYmYyl7Kj5yczZNQkRwZHFRRHQxK2dyPExLMColfXZmdAp6TX1E
JlNZMG9rM1ZgYXljan5BWXhveWF7Z2R+KktEIUJaS2hvfUVyUy1QMWd+YFI8d01HdUspfFRpVllD
b0lRV2UKej1pSGZBX3R1bD1VQ3RsNztCP3tXTWVmQ2hPWkohUSt3OXRve0F+QzBrI19zYGBwWFdO
OD9RS0NZM2k4VmFpWV87CnpeWW00KHRMTHV5VSVQYUQrVnplYih7SjNtOEYjYm1tZitVbytvYHUt
LXBSVCViYSZ9Sjs9VE8pM2lwZDJzNlZMdQp6I3JUKUhGOGkrSS1Db15vNTVwaGM/Y3cpNHtXYkh+
a0c7OCVuMihENHdFQyhhK2RNd2pANiYoZiQmNHF4UGN4bmwKeko8RUhwX2BManUoVGxec3gmNzhR
NUl4WlFRdTE+Nl9xREg3VStzQjQ+Mj5wOSRsIXhGWD5XJCE9RCQ7WXhBIzV3CnplZH52KTR9Qyt+
QUlUcH1Ke2Y7JWBXKjIyLWYtSVJGYVZAUj5eT3xtU2k+cjk/Mzt5diViKzQkaWo3IWhmc0hVZQp6
O0A9X1NiVj1HRFF9N3lscT4lJThJWUozKWpxNmlvVnlySTVzdE4kZUFRMTNDNGlJQTExQiFvX1Y3
fj5BazZ0bDYKektLZWZ5YFBUOXtqeHF1JiN6cEBwQml+dmMkNF5HYSRKXzlxcn0pKylAVTZZb3s8
YzVrO3RsZXh7ZVMpK3sqMDVsCkZfaDB8bWx+dz0lCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403030</attachid>
            <date>2020-06-28 23:31:40 -0700</date>
            <delta_ts>2020-06-28 23:38:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200628233139.patch</filename>
            <type>text/plain</type>
            <size>86708</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNkZDkxNGQwMjNjODc1MjlmMzE2NWUw
YTJjZmVjMDZkYTRmODIyZmYuLmRlMjA3YjIyZWFjYzkwNjI4NTkyOWExNTVhMzIyMzk4NjBkNTNi
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBDaGVjayBHaWdhY2FnZSB1c2FnZSBiZWZvcmUgbGF1bmNoaW5nIFZNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZGM4NDYxY2YwOTVmNDM0NjE2NDVlMTA2NDNmMmRkYTIwMzE5MzcxMy4uOGU1
YjE5YmRkM2EyY2E1ODU0M2E2Zjc1YWYyY2QwYTc2NmJiNjBhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUxIEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGlt
YWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZl
cnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4
NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogZmls
ZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oOgorICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgor
ICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVDaG9vc2VyOjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm86OkZpbGVDaG9vc2VyRmls
ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjptaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjphcHBl
bmRVbmlxdWVTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE1JTUVUeXBlc0ZvckV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBcHBlbmRBbGxJbWFnZXNFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZp
bGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRp
bmdzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpwYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnkuaDoKKwogMjAyMC0wNi0yMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29udmVydCBtdWNoIG9mIHRoZSBTVkcgc3RyaW5nIHBhcnNpbmcg
Y29kZSB0byB1c2UgT3B0aW9uYWwgYmFzZWQgcmV0dXJuIHZhbHVlcyByYXRoZXIgdGhhbiBvdXQt
cGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MDI0YjEyNDYxYTVjNjJkMDMzNGJjZDlmMTBkNTVkNDg0
MzIxZTgwLi5lZjViNDc2ZjczZTBjZTFkMzMyYjUyYjQzYWJmZjBkNTg3YzY2ZGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9m
IHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNo
IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJs
b2JSZWdpc3RyeSk6CisgICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OnRyYW5zY29k
ZUltYWdlcyk6CisgICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBTaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lv
bjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAq
IFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3QpOgorICAg
ICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29u
c3QpOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6dHJhbnNjb2Rl
RGlzYWxsb3dlZEltYWdlcyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRl
cnM6OnNldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMpOgorICAgICAgICAoQVBJOjpPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbToKKyAgICAgICAgKC1bV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAgKC1bV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzIF90cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzXSk6CisgICAgICAg
ICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfc2V0VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlczpd
KToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNUaXRsZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9w
ZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDYtMjEgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0IGZhaWxzIHRvIGxlYXZlIGF1ZGlvIHJvdXRp
bmcgYXJiaXRyYXRpb24gZHVyaW5nIG5hdmlnYXRpb24sIGNsb3NpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNDk0OTE3ZjlmYjE2ZWRmMWZlMTAyMjQxNDFhOGJhYzM3ZTY3OTZj
Mi4uN2E4Yjk1MzQ0MTgxNDllZjJlMzg4YTg1NGMzMjZmMmFiZjA2NDdmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhl
IEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3Rpbmcg
YWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBh
dHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIw
MjAtMDYtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IFByZWZpeGVkIFdlYkF1ZGlvIGludGVyZmFjZXMgYmVoaW5kIHRoZWlyIG93biBmZWF0dXJlIGZs
YWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2MGIzMmU0NmZjNDI5MDgyM2E2MjliZGEzZWQyNzJhODNi
NmFiNGE2Li5iZmU4NDEyOTZkM2M2ZDUyYThhOGFmMTU1ZTZlOGVlOGY5MTIwMTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKIGlubGluZSBi
b29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0
dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKIC8vIFByZWZpeCBp
cyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxs
IHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJ
VkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
T3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFs
bCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0
aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwg
LTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3Rl
bUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4
IGFjZWRmNWZkZDFiMmU3NjgyNGZmYTg5ZDRkY2RmNDBhYzFiMWI4N2QuLjNhY2I4NmFjNzc1Y2Rh
ZGY3MjVjZDg4MDg4ZDJiNWNkNGIxNGI1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0KQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkK
ICAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZp
bGVIYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1
ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwogCkBAIC0xMTMsOSArMTEzLDEzIEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVICiAgICAg
Q1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0
aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRl
bXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7CisKKyAgICAvLyBBcHBlbmQgdGhl
IGZpbGUgbmFtZSBzdWZmaXguCisgICAgQ1N0cmluZyBzdWZmaXhVdGY4ID0gc3VmZml4LnV0Zjgo
KTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoc3VmZml4VXRmOC5kYXRhKCksIHN1ZmZp
eFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKIAot
ICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgp
KTsKKyAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wcyh0ZW1wb3JhcnlGaWxlUGF0aC5k
YXRhKCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUg
PT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGU0YWIwMGZiZGFkOWZm
YjcxYjUwMjJjY2VjNDFjMTBiNWNhMGY1ZGYuLmZhMGI1MzFmZTEwZmY3NGViYWI4NjVmM2NhMDkx
NWRhMWQ5NTc1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0z
MjYsNyArMzI2LDcgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCi1T
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVm
aXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpKTsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdf
Z2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGM5ZjUwMTQzNmFiY2M4MDk0ZTg0MTQ4MGQy
MWZlMzZhNDcxZTgxZmYuLmIzYzA0MDFiNTA2ZmRjZTMyMzJlZDZmZWZiYmJmMGU1MmQxMDAzYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDQyLDcgKzQ0
Miw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0
X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUp
CitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGNoYXIgYnVmZmVyW1BB
VEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dU
Ri93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDY1OWRmZDUyNzI3ZGM5ZWY2OTliN2Y5
MjRkNWQyZTcyZDg0ZTBhZTcuLmI2MzE0OTU3M2E0ODQxZmU2MDAxZWVmYWZkZDAwOTJjZmM3NDFh
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQwNCw3ICs0MDQsNyBA
QCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29s
KGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAgIHJldHVybiBwcm9wb3NlZFBhdGg7CiB9CiAK
LVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0
Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBoYW5kbGUgPSBJ
TlZBTElEX0hBTkRMRV9WQUxVRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyMGEyMDFkYTU0MmU4M2Yw
OWJlNjFjOGJiZjM0NjU2Y2M4ZDY0MjNkLi5hOTFjY2IxZjhlZjMyZmU1MmU2ZjQ3ZGJkYmVjOWUz
MGZjYmE1YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc5NSw2ICsxNzk1LDcgQEAgcGxhdGZvcm0v
RHJhZ0RhdGEuY3BwCiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiBwbGF0Zm9ybS9FdmVudFRyYWNr
aW5nUmVnaW9ucy5jcHAKIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorcGxhdGZvcm0vRmlsZUNo
b29zZXJTZXR0aW5ncy5jcHAKIHBsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCiBwbGF0Zm9ybS9GaWxl
TW9uaXRvci5jcHAKIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjJkMGY5NTllMzRhNWEx
ZTEyY2VhZDMwYjc0OWQzNjE3MGVjNjAwMy4uOGY1YWY4YWRlNzdmOWEwYzhiNjNlMWQ5MzY3Mzlj
ZDE0MTg4NjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjE0MCw2ICsyMTQwLDcgQEAKIAkJNzIxNDQzMzMyMjNFQzhCMDAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMz
NDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8q
IFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
QzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNDhERDRDMjRBNUMz
RUQwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQ4REQ0OTI0QTU5MDA2MDBERTAyQjggLyogRmls
ZUNob29zZXJTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMz
MDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1
MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFj
dGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3MjYs
NiArOTcyNyw4IEBACiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRlZFZh
bHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZGNyAv
KiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8q
IEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFtZVJhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0OERENDkyNEE1OTAwNjAwREUwMkI4
IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZUNob29zZXJTZXR0
aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjQ4REQ0QjI0QTU5MEM5MDBE
RTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxl
Q2hvb3NlclNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQz
MjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkExQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzJCMUEzQTdFNTQwMEY1RjEzQyAvKiBF
WFRCbGVuZE1pbk1heC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUQmxlbmRNaW5NYXgu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MTYsNiArMjY0MTksOCBAQAog
CQkJCTI2MkVDNDE5MUQwNzhGM0QwMEJBNzhGQyAvKiBFdmVudFRyYWNraW5nUmVnaW9ucy5oICov
LAogCQkJCTkzNEZFOUU0MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8sCiAJ
CQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCisJCQkJNzI0
OERENEIyNEE1OTBDOTAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwICovLAorCQkJ
CTcyNDhERDQ5MjRBNTkwMDYwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi8sCiAJ
CQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUz
NTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggKi8sCiAJCQkJN0EwOUNFRUIx
RjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmNwcCAqLywKQEAgLTMwNjM2LDYgKzMwNjQx
LDcgQEAKIAkJCQk5NzZENkM4MTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM4Rjg2REExRjUwOUU3NDAwRThDRkM1IC8qIEZpbGVDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDY2Qzc3MkIwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MjQ4REQ0QzI0QTVDM0VEMDBERTAyQjggLyogRmlsZUNob29z
ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM1MUQ0QjExREY5MTZCNDAwODAxMENE
IC8qIEZpbGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODhBOTA1MTc1NTNDRDcwMDBD
NzRGOSAvKiBGaWxlSWNvbkxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQkUxMjUx
RjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5jcHAKaW5kZXggOGQ2ZTM4NzM4NTUxM2RkZDQxZTAzNzI0MDk4YjQzMmVhY2VjZWJj
MC4uMzcxMDA3YjQwMzgzNmViMzE5OTI4OGJmYTE2Y2QyMzI0YmRhMjJmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuY3BwCkBAIC00NiwxNiArNDYsMTcgQEAgUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZVdp
dGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXYK
ICAgICByZXR1cm4gZmlsZTsKIH0KIAotUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQorUmVmPEZpbGU+IEZpbGU6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBj
b25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJp
bmcgdHlwZTsKLSAgICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKHBhdGgsIG5hbWVPdmVycmlk
ZSwgbmFtZSwgdHlwZSk7CisgICAgU3RyaW5nIGVmZmVjdGl2ZVBhdGggPSAhcmVwbGFjZW1lbnRQ
YXRoLmlzTnVsbCgpID8gcmVwbGFjZW1lbnRQYXRoIDogcGF0aDsKKyAgICBjb21wdXRlTmFtZUFu
ZENvbnRlbnRUeXBlKGVmZmVjdGl2ZVBhdGgsIG5hbWVPdmVycmlkZSwgbmFtZSwgdHlwZSk7CiAK
ICAgICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAg
ICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJM
LCBwYXRoLCB0eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVC
bG9iVVJMKGludGVybmFsVVJMLCBwYXRoLCByZXBsYWNlbWVudFBhdGgsIHR5cGUpOwogCi0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0
eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3RyaW5n
IHsgZWZmZWN0aXZlUGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CiB9CiAKIEZpbGU6OkZpbGUoVVJM
JiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuaAppbmRleCBkMmY5MzhiNDIwZDNhNjBmYjkzZjc0MGJjYjA0ZDc0MWY4M2Vm
Zjc4Li44Nzk3NGQwMDNjMzlkY2U1ZDgzNGZjOTdmMDQ2OGZiMzJkZWQzMjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENy
ZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAo
dmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJz
IGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bmFtZU92ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRo
ID0geyB9LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSk7CiAKICAgICAvLyBDcmVh
dGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNvbnN0cnVjdG9yLgogICAgIHN0YXRpYyBS
ZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50
cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFn
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5j
cHAKaW5kZXggNWUxZDRjMDBhOWMwNjhjODAzMWMyNGNjZDYwYWIyMGE2YWZhMDYwYi4uMTEzZjJl
OTA2ZGJiNTdkMzBiY2E5ZDk1NTJlY2VjMzU1NmIzYjNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC02NCwxNSArNjQsMTYg
QEAgc3RhdGljIFRocmVhZFNwZWNpZmljPEJsb2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQog
ICAgIHJldHVybiAqbWFwOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKKyAg
ICBTdHJpbmcgZWZmZWN0aXZlUGF0aCA9ICFyZXBsYWNlbWVudFBhdGguaXNOdWxsKCkgPyByZXBs
YWNlbWVudFBhdGggOiBwYXRoOwogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBi
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGVm
ZmVjdGl2ZVBhdGgpLCBwYXRoLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGgg
PSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVk
Q29weSgpXSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJs
LCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgZWZmZWN0aXZlUGF0
aCA9IGVmZmVjdGl2ZVBhdGguaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29w
eSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OmNyZWF0ZShlZmZlY3RpdmVQYXRoKSwgcGF0aCwgY29udGVudFR5cGUpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oCmluZGV4IGE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIuLmVjYjc0
ZjE3YzA2ZGJlYmM3MzQ5ODNkYjM5MjFkYzk4OTg0MTU5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCAxYWY5ZWIy
MmM0YTY0MzUyMTQxZTcxOTU2ZTUyYTZjZmY2MmEwZjQ3Li5mMDA5ODlkZDAzZmMxMjk1NjNhODg1
NDg2ZDVhNTdhYTdhZDIwZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVj
dG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3Rv
cnlGaWxlTGlzdENyZWF0b3IuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBSZWY8RmlsZUxp
c3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0
aHMpCiAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBG
aWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBh
cHBlbmREaXJlY3RvcnlGaWxlcyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShpbmZvLnBhdGgpLCBmaWxlT2JqZWN0cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZp
bGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGUoaW5mby5wYXRoLCBpbmZvLmRpc3BsYXlOYW1l
KSk7CisgICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0
aCwgeyB9LCBpbmZvLmRpc3BsYXlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBGaWxlTGlzdDo6
Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1ZTRiODIwZWI2ODBmN2NjNDI2NTVmMGI5ZTJkNmQu
LjdkNTRmNTllMDJjNjFiM2NlOTM2MjJjNmViNWIxMWQwM2E2ZmViZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgRmlsZUlucHV0
VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRo
cywgY29uc3QKIAogICAgIGlmICghYWxsb3dzRGlyZWN0b3JpZXMoKSkgewogICAgICAgICBhdXRv
IGZpbGVzID0gcGF0aHMubWFwKFtdKGF1dG8mIGZpbGVJbmZvKSB7Ci0gICAgICAgICAgICByZXR1
cm4gRmlsZTo6Y3JlYXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lKTsKKyAg
ICAgICAgICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZmlsZUluZm8ucGF0aCwgZmlsZUluZm8ucmVw
bGFjZW1lbnRQYXRoLCBmaWxlSW5mby5kaXNwbGF5TmFtZSk7CiAgICAgICAgIH0pOwogICAgICAg
ICBkaWRDcmVhdGVGaWxlTGlzdChGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZXMpKSwgaWNv
bik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cAppbmRleCBhYzdmNWQ0N2JjZjQ1MzhmZWQ4MGM2MmI5OWMyNDczNTA0NzQ4ODViLi5kMTQ0ZDFh
YzMyZWM1ZWE2YjE3Zjg4MGMxY2EyZTEyMGFmZTMzOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgRmlsZUNob29zZXI6OmNo
b29zZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICBjaG9vc2VGaWxlcyhmaWxlbmFt
ZXMpOwogfQogCi12b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzKQordm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50
TmFtZXMpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBzaG91bGQgbm90
IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KICAgICBpZiAobV9zZXR0aW5ncy5zZWxlY3Rl
ZEZpbGVzID09IGZpbGVuYW1lcykKQEAgLTY4LDggKzY4LDggQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6
Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwotICAgIGZvciAo
YXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCi0gICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hv
b3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBm
aWxlbmFtZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBmaWxlcy5hcHBlbmQoRmls
ZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZXNbaV0sIGkgPCByZXBsYWNlbWVudE5hbWVzLnNpemUo
KSA/IHJlcGxhY2VtZW50TmFtZXNbaV0gOiBudWxsU3RyaW5nKCkpKTsKICAgICBtX2NsaWVudC0+
ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
aAppbmRleCBlNTFlYjllODQzODc5NWE3NmZlYzlhM2RiZjdjNmEwODRlYTA4ODk1Li5lYzNmNGI2
NzllYjgyODE1ZDkzYjAyNmU2MzVlNTE3MzljMjk0Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVDaG9vc2VyLmgKQEAgLTI5LDcgKzI5LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJGaWxlQ2hvb3NlclNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtNDYsOCArNDgsOSBAQCBjbGFzcyBGaWxlQ2hvb3NlcjsKIGNsYXNzIEljb247CiAKIHN0cnVj
dCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKLSAgICBGaWxlQ2hvb3NlckZpbGVJbmZvKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSA9IFN0cmluZygpKQorICAgIEZp
bGVDaG9vc2VyRmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50UGF0aCA9IHsgfSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSA9IHsgfSkKICAgICAg
ICAgOiBwYXRoKHBhdGgpCisgICAgICAgICwgcmVwbGFjZW1lbnRQYXRoKHJlcGxhY2VtZW50UGF0
aCkKICAgICAgICAgLCBkaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKICAgICB7CiAgICAgfQpAQCAt
NTgsMjAgKzYxLDEwIEBAIHN0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKICAgICB9CiAKICAg
ICBjb25zdCBTdHJpbmcgcGF0aDsKKyAgICBjb25zdCBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoOwog
ICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZTsKIH07CiAKLXN0cnVjdCBGaWxlQ2hvb3NlclNl
dHRpbmdzIHsKLSAgICBib29sIGFsbG93c0RpcmVjdG9yaWVzIHsgZmFsc2UgfTsKLSAgICBib29s
IGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxTdHJpbmc+IGFjY2Vw
dE1JTUVUeXBlczsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9uczsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOwotI2lmIEVOQUJMRShNRURJQV9DQVBUVVJF
KQotICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5
cGVOb25lIH07Ci0jZW5kaWYKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTg2LDgg
Kzc5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNob29zZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50TmFtZXMgPSB7
IH0pOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rp
b24gaXMgYWxtb3N0IGlkZW50aWNhbCB0byBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKS4gV2Ug
c2hvdWxkIG1lcmdlIHRoaXMKICAgICAvLyBmdW5jdGlvbiB3aXRoIEZpbGVDaG9vc2VyOjpjaG9v
c2VGaWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTg5NmNhYmEwYWQ3OTRlZWUxNmM5ZTkyMjcwYzYyN2ZlNzlhZmNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5n
cy5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbGVDaG9vc2Vy
U2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1F
VHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0ZW5zaW9uLnJp
Z2h0KGV4dGVuc2lvbi5sZW5ndGgoKSAtIDEpIDogZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZv
aWQgYXBwZW5kVW5pcXVlU3RyaW5ncyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncywgVmVj
dG9yPFN0cmluZz4mIGFsbFN0cmluZ3MpCit7CisgICAgZm9yIChhdXRvJiBzdHJpbmcgOiBzdHJp
bmdzKQorICAgICAgICBhbGxTdHJpbmdzLmFwcGVuZElmTm90Q29udGFpbnMoc3RyaW5nKTsKK30K
Kworc3RhdGljIHZvaWQgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZXh0ZW5zaW9ucywgVmVjdG9yPFN0cmluZz4mIGFsbE1JTUVUeXBlcykKK3sKKyAg
ICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1l
VHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgIGlmIChtaW1l
VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG1p
bWVUeXBlLmNvbnRhaW5zKCcvJykpOworICAgICAgICBhbGxNSU1FVHlwZXMuYXBwZW5kSWZOb3RD
b250YWlucyhtaW1lVHlwZSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBlbmRFeHRlbnNp
b25zRm9yTUlNRVR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIFZlY3RvcjxT
dHJpbmc+JiBhbGxFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBtaW1l
VHlwZXMpIHsKKyAgICAgICAgQVNTRVJUKG1pbWVUeXBlLmNvbnRhaW5zKCcvJykpOworICAgICAg
ICBhcHBlbmRVbmlxdWVTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JN
SU1FVHlwZShtaW1lVHlwZSksIGFsbEV4dGVuc2lvbnMpOworICAgIH0KK30KKworc3RhdGljIGJv
b2wgc2hvdWxkQXBwZW5kQWxsSW1hZ2VzRXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiYgYWxsRXh0
ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGFsbEV4dGVuc2lvbnMpIHsK
KyAgICAgICAgYXV0byBtaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7
CisgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVG
b3JFbmNvZGluZyhtaW1lVHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IEZpbGVDaG9vc2VyU2V0dGluZ3M6OmFs
bG93ZWRNSU1FVHlwZXMoKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1F
VHlwZXM7CisKKyAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2VwdE1JTUVUeXBlcywg
YWxsb3dlZE1JTUVUeXBlcyk7CisgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyh0aGlz
LT5hY2NlcHRGaWxlRXh0ZW5zaW9ucywgYWxsb3dlZE1JTUVUeXBlcyk7CisKKyAgICBpZiAoIXRo
aXMtPnRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMpIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25z
ID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUoImlt
YWdlLyoiX3MpOworICAgICAgICBhcHBlbmRNSU1FVHlwZXNGb3JFeHRlbnNpb25zKGV4dGVuc2lv
bnMsIGFsbG93ZWRNSU1FVHlwZXMpOworICAgIH0KKworICAgIHJldHVybiBhbGxvd2VkTUlNRVR5
cGVzOworfQorCitWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkRmls
ZUV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0
ZW5zaW9uczsKKworICAgIGFwcGVuZEV4dGVuc2lvbnNGb3JNSU1FVHlwZXModGhpcy0+YWNjZXB0
TUlNRVR5cGVzLCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpOworICAgIGFwcGVuZFVuaXF1ZVN0cmlu
Z3ModGhpcy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk7CisK
KyAgICBpZiAoc2hvdWxkQXBwZW5kQWxsSW1hZ2VzRXh0ZW5zaW9ucyhhbGxvd2VkRmlsZUV4dGVu
c2lvbnMpKSB7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dEV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKCJpbWFnZS8qIl9zKTsKKyAgICAgICAgYXBw
ZW5kVW5pcXVlU3RyaW5ncyhleHRlbnNpb25zLCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpOworICAg
IH0KKworICAgIHJldHVybiBhbGxvd2VkRmlsZUV4dGVuc2lvbnM7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWUx
MTM4Yzk4ZjkyZDQ3YjBjODAzNTU5N2UzZjJiODNmYTg1MDJlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzIHsKKyAgICBib29sIGFsbG93c0Rp
cmVjdG9yaWVzIHsgZmFsc2UgfTsKKyAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxz
ZSB9OworICAgIGJvb2wgdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyB7IGZhbHNlIH07CisgICAg
VmVjdG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3RvcjxTdHJpbmc+IGFjY2Vw
dEZpbGVFeHRlbnNpb25zOworICAgIFZlY3RvcjxTdHJpbmc+IHNlbGVjdGVkRmlsZXM7CisjaWYg
RU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgTWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVU
eXBlIHsgTWVkaWFDYXB0dXJlVHlwZU5vbmUgfTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVkZTJhZGIwMWExNTUwZTJmZTUwZDUwNjQzYjNmYTNm
Li44ZGU1NDQxMzQ4YTZjNmI5YWNmNzA0ZDA1MDI4MmY4YmZjNDE3ZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC01OCwxMSArNTgsMTIgQEAgcHVi
bGljOgogCiAgICAgLy8gRklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQg
bm90IGhhdmUgdGhlIHdvcmQgImdldCIgaW4gdGhlIG5hbWVzIG9mIHRoZXNlIGZ1bmN0aW9ucy4K
ICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldEV4dGVuc2lvbnNG
b3JXaWxkY2FyZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2V0TWVkaWFN
SU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CiAgICAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IGdldE1lZGlhTUlNRVR5cGVzRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgZ2V0TUlNRVR5cGVGb3JQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBnZXRN
SU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+IGNyZWF0ZU1JTUVUeXBl
UmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAKQEAgLTc0LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZH
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUg
aWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCi0gICAgc3RhdGlj
IGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBD
aGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBh
cyBhIEphdmFTY3JpcHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBl
UmVnaXN0cnlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBl
UmVnaXN0cnlDb2NvYS5tbQppbmRleCAyYjNmZTA1NTg0Zjk2NGUwOTk3Njg0NmFhMTI5ODA3NmVh
NGJlMTUwLi4yODNmNjA3MDgxY2IyZmNjZTIzMDFkYjI4OTVkNzg2NTBlNmJjNDNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNv
Y29hLm1tCkBAIC0yNywxMSArMjcsNTkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNl
c1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEku
aD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0YXRpYyBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxTdHJpbmc+PiYgZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwKCkKK3sKKyAgICBzdGF0aWMgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5
cGVNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBIYXNoTWFwPFN0cmluZywg
SGFzaFNldDxTdHJpbmc+PiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CisKKyAgICAgICAgYXV0
byBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSA9IFsmXShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uKSB7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGV4dGVu
c2lvbnNGb3JNSU1FVHlwZU1hcC5lbnN1cmUodHlwZSwgW10oKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEhhc2hTZXQ8U3RyaW5nPigpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFkZChleHRlbnNpb24pOworICAgICAgICB9OworCisg
ICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlID0gWyZdKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgQ0ZBcnJheVJlZiYgZXh0ZW5zaW9ucykgeworICAgICAgICAgICAgYXV0byB3
aWxkY2FyZE1JTUVUeXBlID0gbWFrZVN0cmluZyh0eXBlLnNwbGl0KCcvJykuZmlyc3QoKSwgIi8q
Il9zKTsKKworICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlH
ZXRDb3VudChleHRlbnNpb25zKTsgaSA8IGNvdW50OyBpKyspIHsKKworICAgICAgICAgICAgICAg
IENGU3RyaW5nUmVmIGV4dGVuc2lvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoZXh0ZW5zaW9ucywgaSkpOworICAgICAgICAgICAgICAgIGlm
ICghZXh0ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8gd2lsZGNhcmRNSU1FVHlwZSwgZm9yIGV4YW1wbGUg
YWRkICJwbmciIHRvICJpbWFnZS8qIgorICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1J
TUVUeXBlKHdpbGRjYXJkTUlNRVR5cGUsIGV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgLy8g
QWRkIGV4dGVuc2lvbiB0byBpdHNtaW1lVHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJp
bWFnZS9wbmciCisgICAgICAgICAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUodHlwZSwg
ZXh0ZW5zaW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gYWxsVVRJcyA9IGFkb3B0Q0YoX1VUQ29weURlY2xhcmVkVHlwZUlkZW50
aWZpZXJzKCkpOworCisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5
R2V0Q291bnQoYWxsVVRJcy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICBh
dXRvIHV0aSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGFsbFVUSXMuZ2V0KCksIGkpKTsKKyAgICAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0Q0YoVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsK
KyAgICAgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xh
c3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBpZiAo
IWV4dGVuc2lvbnMgfHwgIUNGQXJyYXlHZXRDb3VudChleHRlbnNpb25zLmdldCgpKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlw
ZSh0eXBlLmdldCgpLCBleHRlbnNpb25zLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CisgICAgfSgpKTsKKworICAgIHJldHVybiBl
eHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7Cit9CisKIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBy
ZXR1cm4gW1tOU1VSTEZpbGVUeXBlTWFwcGluZ3Mgc2hhcmVkTWFwcGluZ3NdIE1JTUVUeXBlRm9y
RXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4dGVuc2lvbl07CkBAIC00Miw2ICs5MCwxNyBAQCBWZWN0
b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiBtYWtlVmVjdG9yPFN0cmluZz4oW1tOU1VSTEZp
bGVUeXBlTWFwcGluZ3Mgc2hhcmVkTWFwcGluZ3NdIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTp0eXBl
XSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNG
b3JXaWxkY2FyZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiBleHRlbnNpb25zOworCisgICAgYXV0byBpdGVyID0gZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
TWFwKCkuZmluZCh0eXBlKTsKKyAgICBpZiAoaXRlciAhPSBleHRlbnNpb25zRm9yTUlNRVR5cGVN
YXAoKS5lbmQoKSkKKyAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmRSYW5nZShpdGVyLT52YWx1ZS5i
ZWdpbigpLCBpdGVyLT52YWx1ZS5lbmQoKSk7CisKKyAgICByZXR1cm4gZXh0ZW5zaW9uczsKK30K
KwogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICAvLyBTeXN0ZW0gUHJldmlld3MgYWNjZXB0
IHNvbWUgbm9uLXN0YW5kYXJkIE1JTUVUeXBlcywgc28gd2UgY2FuJ3QgcmVseSBvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCmluZGV4IGY4NzU2
NGQ5OTg2Y2U0YTExMzBiNTkwNTc4Yjc3OWQyZjkwYWRmZDUuLjg1YjFjODhkYjZmNzZiYTg4OGEy
Yzc2MjMzYWMxODhjMGJmZjI1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxBdWRpb1Rv
b2xib3gvQXVkaW9Ub29sYm94Lmg+CiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCA1YWJmZDc1Y2I0
OTQ1NmU0MmQzOWQ0NGQzYmMyMjU5YWFmZmE1MjI2Li5lYmFiNjE4MmUzZWE0ODljY2Q4MjI0NjZh
NjNhYjRlMjRlZDBlODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zMiwxNyArMzIsMTYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCitCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRQYXRoKQogICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlcGxhY2VtZW50
UGF0aChyZXBsYWNlbWVudFBhdGgpCiB7CiB9CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJs
b2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7Ci0jaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAg
ICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKICAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0aCk7Ci0jZW5kaWYKIH0KIAogY29uc3QgU3RyaW5n
JiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQpAQCAtNTAsMTAgKzQ5LDkgQEAgY29uc3Qg
U3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQogI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQogICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCiAgICAg
ICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCk7Ci0KKyNlbmRpZgogICAgIGlmICghbV9yZXBs
YWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBtX3JlcGxhY2VtZW50UGF0aDsK
LSNlbmRpZgogCiAgICAgcmV0dXJuIG1fcGF0aDsKIH0KQEAgLTEwMSw2ICs5OSwxMiBAQCB2b2lk
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogICAg
ICAgICByZXR1cm47CiAjZW5kaWYKIAorICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxs
KCkpIHsKKyAgICAgICAgbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dp
bmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIGlmICghbWV0YWRhdGEpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIG1fc2l6ZSA9IG1ldGFkYXRhLnZh
bHVlKCkubGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAppbmRleCA2NTg4MjlkMDdmY2ZiZDZiMDJh
MjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li44ZmNiZThjMTFmMjEzNDhjZWZlNDhlZDAyNjY1YzU1ZDYz
Njk2NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iRGF0YUZpbGVSZWZlcmVuY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkK
KyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGggPSB7IH0pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCwg
cmVwbGFjZW1lbnRQYXRoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKCk7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmV2
b2tlRmlsZUFjY2VzcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
KGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgpOwogCiBwcml2YXRlOgog
I2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpAQCAtNjAsOCArNjAsOCBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOwotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5U
KQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKKyNpZiBFTkFCTEUoRklMRV9SRVBMQUNF
TUVOVCkKICAgICBib29sIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB7IGZhbHNlIH07
CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggZmU5MWU4MWFh
ZDQzMDJlMDNkYjk2N2E0NmEzMDZhYzZkNDJjY2U1NS4uNGIxNWNkZGJlMGU0Yzc2ZThmOTJiMDAy
ZDYyYTlhYjAyYjdhNmJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJs
b2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZl
cnJpbmcgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZp
bGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAgIC8vIFJl
Z2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4K
ICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9i
UGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCAyY2M5YjdiYzc0ODEwMjdlOWE2MWZhMWNhZDQ4NWIyMjc4Y2VhM2M3
Li5lODEyZGRhOTc1ZmZiYjEwMWI4ODg1ZDdlN2ZmZmE1MzZjMzI4MzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNzM3LDcgKzczNyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmFsbENvb2tpZXNEZWxldGVkKCkKIAogI2VuZGlmCiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0
ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewogICAgIE5FVFdPUktfUFJPQ0VTU19NRVNTQUdFX0NIRUNLKCF1cmwuaXNFbXB0
eSgpKTsKIApAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAgICAg
aWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShleHRlbnNpb25IYW5kbGUpKSksIGNvbnRlbnRUeXBlKTsKKyAgICBzZXNzaW9uLT5ibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShwYXRoLCByZXBsYWNlbWVudFBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5
cGUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC03NzQsNyArNzc0LDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
Y29uc3QgVVIKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlc3Np
b24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVy
bCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVudFR5cGUpOworICAgIHNlc3Npb24t
PmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwg
c3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
KGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCmluZGV4IGU4MjMwMDA5ZWM5NmJmZWVmMjA5OGExYWVlZTdhMjdhYzM5OGMz
ZGEuLjE4Y2NlZDk3YzY1MzJhMzZhNzBhMzFkZDcxZDZhZmJhZjhkNjZlOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAgIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCk7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMjAwZDRjNGFkMjBjZjZjMmYxYTViN2E0MDM2YjA2
NzQ4MDE0M2VlLi43YjgyMjUyMzI3MDBhYTY4OGM5ZDg0YWFjMDQyMGM0OTdiNmU1Y2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ2LDcgKzQ2LDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFzaFNl
dDxTdHJpbmc+IGhvc3RzKQogI2VuZGlmCiAKLSAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1
cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNp
b25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVS
TCB1cmwsIFN0cmluZyBwYXRoLCBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkK
ICAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBi
bG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKICAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJM
KFVSTCB1cmwsIFVSTCBzcmNVUkwpCiAgICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcg
Y29udGVudFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY2OTYw
MWNlZjBlZmM5M2RiZWQzZTA1M2Q1MzQwODE0N2JlM2VkOTcuLmNmZmM5OWY4MmIwNDRjNDliMDUw
MmJlOTVkY2M4Y2I4OTkxYzIyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIEJsb2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgICAgY2xhc3MgRW1wdHlCbG9iUmVnaXN0cnkgOiBwdWJsaWMgV2ViQ29yZTo6Qmxv
YlJlZ2lzdHJ5IHsKLSAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYs
IFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckZp
bGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
LCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAppbmRleCBhZjA4
ZjZkNWVmYjRhYWE4NmIxMDRhNDljOTg1NWYyMDcyNWI2ODA4Li4yZTY4YTBjOTEzYjEwYzA4MTA0
YWEzYjk0ZTNiNDA1ODc5MjRmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0NHVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRp
bGl0aWVzLmNwcApAQCAtMjYsNiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDR1V0aWxpdGllcy5oIgogCisjaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElV
dGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgcGFpbnRJbWFnZShD
R0NvbnRleHRSZWYgY29udGV4dCwgQ0dJbWFnZVJlZiBpbWFnZSwgQ0dGbG9hdCBzY2FsZUZhY3Rv
ciwgQ0dQb2ludCBkZXN0aW5hdGlvbiwgQ0dSZWN0IHNvdXJjZSkKQEAgLTQ2LDQgKzUyLDgyIEBA
IHZvaWQgcGFpbnRJbWFnZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dJbWFnZVJlZiBpbWFnZSwg
Q0dGbG9hdCBzY2FsZUZhY3RvciwgQ0dQCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250
ZXh0KTsKIH0KIAorU3RyaW5nIHRyYW5zY29kZUltYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBBU1NFUlQobWltZVR5cGUuc3RhcnRzV2l0aCgi
aW1hZ2UvIl9zKSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIGltYWdlIHNvdXJjZS4KKyAgICBhdXRv
IHNvdXJjZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBh
dGhTdHlsZSwgZmFsc2UpKTsKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJj
ZUNyZWF0ZVdpdGhVUkwoc291cmNlVVJMLmdldCgpLCBudWxscHRyKSk7CisgICAgaWYgKCFzb3Vy
Y2UpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiU291cmNlIHBh
dGggaXMgbm90IGEgdmFsaWQgaW1hZ2UuIik7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0K
KworICAgIGF1dG8gc291cmNlVVRJID0gU3RyaW5nKENHSW1hZ2VTb3VyY2VHZXRUeXBlKHNvdXJj
ZS5nZXQoKSkpOworICAgIGF1dG8gcmVwbGFjZW1lbnRVVEkgPSBXZWJDb3JlOjpVVElGcm9tTUlN
RVR5cGUobWltZVR5cGUpOworICAgIGlmIChzb3VyY2VVVEkgPT0gcmVwbGFjZW1lbnRVVEkpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiU291cmNlIGltYWdlIGFs
cmVhZHkgaGFzIHRoZSByZXBsYWNlbWVudCBNSU1FIHR5cGUuIik7CisgICAgICAgIHJldHVybiBw
YXRoOworICAgIH0KKworICAgIC8vIENvbXB1dGUgdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUgcHJl
Zml4IGFuZCBmaWxlIGV4dGVuc2lvbi4KKyAgICBhdXRvIGNvbXBvbmVudHMgPSBGaWxlU3lzdGVt
OjpwYXRoR2V0RmlsZU5hbWUocGF0aCkuc3BsaXQoJy4nKTsKKyAgICBhdXRvIGV4dGVuc2lvbiA9
IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHByZWZpeCA9IG1ha2VTdHJpbmcoY29tcG9uZW50cy5m
aXJzdCgpLCAiXyJfcyk7CisgICAgYXV0byBzdWZmaXggPSBtYWtlU3RyaW5nKCIuIl9zLCBleHRl
bnNpb24pOworCisgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIHJlcGxhY2VtZW50RmlsZUhhbmRsZTsKKyAgICBTdHJpbmcg
cmVwbGFjZW1lbnRQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUocHJlZml4LCBy
ZXBsYWNlbWVudEZpbGVIYW5kbGUsIHN1ZmZpeCk7CisgICAgaWYgKHJlcGxhY2VtZW50RmlsZUhh
bmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIlJlcGxhY2VtZW50IGltYWdlIGNhbid0
IGJlIGNyZWF0ZWQuIik7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0KKworICAgIC8vIENy
ZWF0ZSB0aGUgZGF0YSBjb25zdW1lci4KKyAgICBDR0RhdGFDb25zdW1lckNhbGxiYWNrcyBjYWxs
YmFja3MgPSB7IFtdKHZvaWQgKmluZm8sIGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50
KSAtPiBzaXplX3QgeworICAgICAgICBhdXRvIHBsYXRmb3JtRmlsZUhhbmRsZSA9ICpzdGF0aWNf
Y2FzdDxGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUqPihpbmZvKTsKKyAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKHBsYXRmb3JtRmlsZUhhbmRsZSwgc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICB9LCBudWxscHRyIH07CisKKyAg
ICAvLyBDcmVhdGUgdGhlIGltYWdlIHJlcGxhY2VtZW50LgorICAgIGF1dG8gY29uc3VtZXIgPSBh
ZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlKCZyZXBsYWNlbWVudEZpbGVIYW5kbGUsICZjYWxs
YmFja3MpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50ID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRp
b25DcmVhdGVXaXRoRGF0YUNvbnN1bWVyKGNvbnN1bWVyLmdldCgpLCByZXBsYWNlbWVudFVUSS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAxLCBudWxscHRyKSk7CisKKyAgICAvLyBXcml0ZSB0aGUg
c291cmNlIGltYWdlIHRvIHRoZSByZXBsYWNlbWVudCBpbWFnZS4KKyAgICBzaXplX3QgaW5kZXgg
PSBDR0ltYWdlU291cmNlR2V0UHJpbWFyeUltYWdlSW5kZXgoc291cmNlLmdldCgpKTsKKyAgICBD
R0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3VyY2UocmVwbGFjZW1lbnQuZ2V0KCksIHNv
dXJjZS5nZXQoKSwgaW5kZXgsIG51bGxwdHIpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFs
aXplKHJlcGxhY2VtZW50LmdldCgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVwbGFj
ZW1lbnRGaWxlSGFuZGxlKTsKKworICAgIHJldHVybiByZXBsYWNlbWVudFBhdGg7Cit9CisKK1Zl
Y3RvcjxTdHJpbmc+IHRyYW5zY29kZUltYWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQoreworICAgIFZlY3RvcjxT
dHJpbmc+IHJlcGxhY2VtZW50UGF0aHM7CisgICAgU3RyaW5nIHByZWZlcnJlZEVuY29kaW5nTUlN
RVR5cGU7CisgICAgCisgICAgZm9yIChhdXRvIG1pbWVUeXBlIDogYWxsb3dlZE1JTUVUeXBlcykg
eworICAgICAgICBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKSB7CisgICAgICAgICAgICBwcmVmZXJyZWRF
bmNvZGluZ01JTUVUeXBlID0gbWltZVR5cGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChwcmVmZXJyZWRFbmNvZGluZ01JTUVUeXBlLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoczsKKworICAgIGZvciAoYXV0byYgcGF0aCA6
IHBhdGhzKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgocGF0aCk7CisgICAgICAgIGlmIChhbGxvd2VkTUlNRVR5
cGVzLmNvbnRhaW5zKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIHJlcGxhY2VtZW50UGF0aHMuYXBw
ZW5kKG51bGxTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGxhY2VtZW50
UGF0aHMuYXBwZW5kKHRyYW5zY29kZUltYWdlKHBhdGgsIHByZWZlcnJlZEVuY29kaW5nTUlNRVR5
cGUpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aHM7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
Zy9DR1V0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5o
CmluZGV4IDg1MWQxODFhOGZjNzU3M2M5MzBjZmM2MDNiMGY0MTQyODc0N2IyMmQuLjk1ZGE2ZDkz
Nzc5OGIyY2EyOTE3YTg2MGU2ZjE1MGNmMjIxNWZhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0NHVXRpbGl0aWVzLmgKQEAgLTI5LDYgKzI5LDggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiB2b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNjYWxl
RmFjdG9yLCBDR1BvaW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKTsKK1N0cmluZyB0cmFu
c2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwor
VmVjdG9yPFN0cmluZz4gdHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRo
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCmluZGV4IGZj
NzRiNjAxNzNjNTUyNTkwYjU0ZTM0MGM2NmFlMWZhMzY4NDU3MGEuLjlhNTZlMzliOTI2Yjk2NjI0
NWQ2OWI1NzkyMjNkMTAxZjA1NWZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lv
bi5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUJsb2JEYXRh
RmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24pCi0gICAgOiBCbG9iRGF0YUZpbGVSZWZlcmVuY2Uo
cGF0aCkKK0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBz
YW5kYm94RXh0ZW5zaW9uKQorICAgIDogQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgsIHJlcGxh
Y2VtZW50UGF0aCkKICAgICAsIG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKHNhbmRib3hFeHRl
bnNpb24pKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKaW5kZXggNzVhNWQ0
ZDBjYmJlYzA4NWFmZGRiMzhmZWJiNTMzZTczNjQwNjMyNi4uN2I4MzI5ZjIyOWE1NWZkNGRiYzNj
NDQ2ODM3OWJiMzFiZjEwMzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCkBA
IC0zNCwxMyArMzQsMTMgQEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAogY2xhc3MgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRi
b3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFBhdGggPSB7IH0sIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hF
eHRlbnNpb24gPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwgV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCByZXBsYWNlbWVudFBhdGgs
IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbikpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRo
LCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50UGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYpOwogICAgIHZpcnR1YWwg
fkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKCk7CiAKICAgICB2b2lk
IHByZXBhcmVGb3JGaWxlQWNjZXNzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKaW5kZXggODUxZWJm
NWMwMzllN2IyODkxOWFmOTEwYjAyZmVhMDBjZWVlZGY0Ny4uZDM1YTc0YTg3YWEwYjg1MmY0MDg3
NDYxZDdjODUyNGRkNmIwZTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcApAQCAtNTgsMTIgKzU4LDE1IEBAIFJl
ZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphY2NlcHRGaWxlRXh0ZW5zaW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KG1fc2V0dGlu
Z3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMpOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUp
Ci1XZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIE9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2Fw
dHVyZVR5cGUoKSBjb25zdAorUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFs
bG93ZWRNSU1FVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiBtX3NldHRpbmdzLm1lZGlhQ2Fw
dHVyZVR5cGU7CisgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KG1fc2V0
dGluZ3MuYWxsb3dlZE1JTUVUeXBlcygpKTsKK30KKworUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5l
bFBhcmFtZXRlcnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KG1fc2V0dGluZ3MuYWxsb3dlZEZpbGVFeHRl
bnNpb25zKCkpOwogfQotI2VuZGlmCiAKIFJlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0
ZXJzOjpzZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAppbmRleCA3MzBlNWQ1ZWVm
ZjJiYTBiZTQ4OTQ3YjBkNzk3ZTYzMTVjMzI2YjkxLi5iMmUwOGJlOWQ1MDE5YzhlY2Y4NzUyZmQ3
YTcyOTI0ZjEwMjM2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKQEAgLTQyLDkgKzQyLDEzIEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuYWxs
b3dzTXVsdGlwbGVGaWxlczsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRNSU1FVHlwZXMo
KSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0RmlsZUV4dGVuc2lvbnMoKSBjb25z
dDsKKyAgICBSZWY8QVBJOjpBcnJheT4gYWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0OworICAgIFJl
ZjxBUEk6OkFycmF5PiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKICAgICBSZWY8QVBJ
OjpBcnJheT4gc2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdDsKKyAgICBib29sIHRyYW5zY29kZURp
c2FsbG93ZWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLnRyYW5zY29kZURpc2Fs
bG93ZWRJbWFnZXM7IH0KKyAgICB2b2lkIHNldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMoYm9v
bCBmbGFnKSB7IG1fc2V0dGluZ3MudHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyA9IGZsYWc7IH0K
ICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLSAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBl
IG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBl
IG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLm1lZGlhQ2FwdHVy
ZVR5cGU7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KaW5kZXggZDkw
MGY5ZThkNjc1NDFjYjhjMjllZDQyOGExZTliMDA4YjE0ODgyMy4uN2IyOTljOWJhMmNkZGU5ZDYx
ZjA5YzlmYzVhY2Y1NGFhY2VmMDc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCkBAIC0yNSw2MCAr
MjUsMTEgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS09wZW5QYW5lbFBhcmFt
ZXRlcnNJbnRlcm5hbC5oIgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEku
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAKLXN0YXRp
YyBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4gKmV4dGVuc2lv
bnNGb3JNSU1FVHlwZU1hcCgpCi17Ci0gICAgc3RhdGljIGF1dG8gZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgYXV0byBleHRlbnNpb25z
Rm9yTUlNRVR5cGVNYXAgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOwotICAgICAgICBhdXRvIGFsbFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNsYXJlZFR5cGVJ
ZGVudGlmaWVycygpKTsKLQotICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlID0g
XihOU1N0cmluZyAqbWltZVR5cGUsIE5TU3RyaW5nICpleHRlbnNpb24pIHsKLSAgICAgICAgICAg
IGlmICghZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSkKLSAgICAgICAg
ICAgICAgICBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVdID0gW05TTXV0
YWJsZVNldCBzZXRdOwotICAgICAgICAgICAgW2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQo
KVttaW1lVHlwZV0gYWRkT2JqZWN0OmV4dGVuc2lvbl07Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
YXV0byBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUgPSBeKE5TU3RyaW5nICptaW1lVHlwZSwgTlNB
cnJheTxOU1N0cmluZyAqPiAqZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgYXV0byB3aWxkY2Fy
ZE1JTUVUeXBlID0gW1ttaW1lVHlwZSBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCIvIl1b
MF0gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIvKiJdOwotCi0gICAgICAgICAgICBmb3IgKE5T
U3RyaW5nICpleHRlbnNpb24gaW4gZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgICAgIGlmICgh
ZXh0ZW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICAvLyBBZGQgZXh0ZW5zaW9uIHRvIHdpbGRjYXJkTUlNRVR5cGUsIGZvciBleGFtcGxlIGFkZCAi
cG5nIiB0byAiaW1hZ2UvKiIKLSAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlw
ZSh3aWxkY2FyZE1JTUVUeXBlLCBleHRlbnNpb24pOwotICAgICAgICAgICAgICAgIC8vIEFkZCBl
eHRlbnNpb24gdG8gaXRzbWltZVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2Uv
cG5nIgotICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlLCBl
eHRlbnNpb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIGZvciAoQ0ZJ
bmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoYWxsVVRJcy5nZXQoKSk7IGkgPCBj
b3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIHV0aSA9IHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGFsbFVUSXMuZ2V0KCksIGkpKTsKLSAgICAgICAg
ICAgIGF1dG8gbWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xh
c3ModXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgICAgICAgICBpZiAoIW1pbWVUeXBl
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byBleHRlbnNpb25z
ID0gYWRvcHRDRihVVFR5cGVDb3B5QWxsVGFnc1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzRmls
ZW5hbWVFeHRlbnNpb24pKTsKLSAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgo
X19icmlkZ2UgTlNTdHJpbmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilleHRlbnNpb25zLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFk
ZCBhZGRpdGlvbmFsIG1pbWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZp
ZXJzKCkgbWF5IG5vdCByZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKEAi
aW1hZ2Uvd2VicCIsIEAid2VicCIpOwotCi0gICAgICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlN
RVR5cGVNYXA7Ci0gICAgfSgpKTsKLQotICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVN
YXAuZ2V0KCkuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlKE5TU3RyaW5nICptaW1ldHlwZSkKLXsKLSAgICByZXR1cm4gW2V4dGVuc2lv
bnNGb3JNSU1FVHlwZU1hcCgpIG9iamVjdEZvcktleTptaW1ldHlwZV07Ci19Ci0KIEBpbXBsZW1l
bnRhdGlvbiBXS09wZW5QYW5lbFBhcmFtZXRlcnMKIAogLSAoQk9PTClhbGxvd3NNdWx0aXBsZVNl
bGVjdGlvbgpAQCAtMTE0LDU4ICs2NSwxNyBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4
dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAKIC0gKE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zCiB7Ci0gICAgLy8gQWdncmVnYXRlIGV4
dGVuc2lvbnMgYmFzZWQgb24gc3BlY2lmaWVkIE1JTUUgdHlwZXMuCi0gICAgYXV0byBhY2NlcHRl
ZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAgYXV0byBhY2NlcHRl
ZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAg
YXV0byBhbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9j
XSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgZW51bWVyYXRlT2JqZWN0c1VzaW5n
QmxvY2s6XihOU1N0cmluZyAqbWltZVR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wqIHN0b3Ap
IHsKLSAgICAgICAgQVNTRVJUKFttaW1lVHlwZSBjb250YWluc1N0cmluZzpAIi8iXSk7Ci0gICAg
ICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgdW5pb25TZXQ6ZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
KG1pbWVUeXBlKV07Ci0gICAgfV07Ci0KLSAgICBhdXRvIGFkZGl0aW9uYWxBbGxvd2VkRmlsZUV4
dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAg
IFthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNT
dHJpbmcgKmV4dGVuc2lvbiwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqc3RvcCkgewotICAgICAg
ICBBU1NFUlQoW2V4dGVuc2lvbiBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICcuJyk7Ci0gICAgICAg
IFthZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdDpbZXh0ZW5zaW9uIHN1
YnN0cmluZ0Zyb21JbmRleDoxXV07Ci0gICAgfV07Ci0gICAgCi0gICAgW2FsbG93ZWRGaWxlRXh0
ZW5zaW9ucyBhZGRPYmplY3RzRnJvbUFycmF5OmFkZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVuc2lv
bnMuZ2V0KCldOwotICAgIHJldHVybiBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbE9iamVjdHNd
OworICAgIHJldHVybiB3cmFwcGVyKF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkRmlsZUV4
dGVuc2lvbnMoKSk7Cit9CisKKy0gKEJPT0wpX3RyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMKK3sK
KyAgICByZXR1cm4gX29wZW5QYW5lbFBhcmFtZXRlcnMtPnRyYW5zY29kZURpc2FsbG93ZWRJbWFn
ZXMoKTsKIH0KIAotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNUaXRsZXMKKy0gKHZvaWQpX3NldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXM6KEJPT0wpZmxh
ZwogewotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlw
ZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZp
bGVFeHRlbnNpb25zXTsKLQotICAgIGNvbnN0ZXhwciBhdXRvIEFsbEZpbGVzVGl0bGUgPSBAIkFs
bCBGaWxlcyI7Ci0gICAgY29uc3RleHByIGF1dG8gQ3VzdG9tRmlsZXNUaXRsZSA9IEAiQ3VzdG9t
IEZpbGVzIjsKLSAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYgIVth
Y2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxsRmlsZXNU
aXRsZV07Ci0KLSAgICBpZiAoIShbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdID09IDEgJiYgIVth
Y2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZp
bGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgYXV0byBtaW1lVHlwZSA9IFthY2NlcHRl
ZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byByYW5nZSA9IFttaW1lVHlwZSByYW5n
ZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2UubGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLSAgICAKLSAgICBhdXRv
IG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRp
b25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUlu
ZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBp
c0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nVG9JbmRl
eDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nRnJvbUluZGV4
OjFdXSwgQWxsRmlsZXNUaXRsZV07Ci0KLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGxlbmd0aF0g
PD0gNCkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAl
QCIsIFttaW1lVHlwZVN1ZmZpeCB1cHBlcmNhc2VTdHJpbmddLCBtaW1lVHlwZVByZWZpeF0sIEFs
bEZpbGVzVGl0bGVdOwotCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQCAlQCIsIG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVd
OworICAgIF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5zZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2Vz
KGZsYWcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAppbmRleCAy
OWVlODEyMGU0YWYxYmFlYTIyYzA2MjRhYzJlMjNiNGUxYmQ0YWQ2Li5jNmE5NTBiNzExOGQ4YzZl
OWZiYWI1ZGI5MjdjZGQ5YWU4OTI5NTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
LmgKQEAgLTMxLDggKzMxLDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNv
cHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0
bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRl
bnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWR3cml0ZSwgc2V0dGVyPV9zZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2Vz
OikgQk9PTCBfdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQppbmRleCA0OWM3MTQyNzg1ZWMyOWI0NDZmZDk1Njk3ODE5NWExOTdkMzli
OTNmLi4wYTAxYmQxZTcxMDRiNmZmYjgzYmZmZTM1ZjM0NGYxNzliZmE5YzIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJB
UElBcnJheS5oIgogI2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJBUElIaXRUZXN0
UmVzdWx0LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCkBAIC04
MjYsNyArODI3LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnIKIAogICAgIGF1dG8gY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwg
QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3Bl
blBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBsaXN0
ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJsZSB7CisgICAg
W2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFuZWxXaXRo
UGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBpbml0aWF0ZWRCeUZyYW1l
OndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlciksIG9wZW5QYW5lbFBhcmFtZXRlcnMgPSBtYWtlUmVmKCpvcGVuUGFu
ZWxQYXJhbWV0ZXJzKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5TQXJyYXkgKlVS
THMpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNC
ZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODQwLDcgKzg0MSw3IEBAIGJvb2wgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIHdlYkZyCiAgICAgICAgIGZvciAoTlNVUkwgKnVybCBpbiBVUkxzKQogICAgICAgICAgICAg
ZmlsZW5hbWVzLmFwcGVuZCh1cmwucGF0aCk7CiAKLSAgICAgICAgbGlzdGVuZXItPmNob29zZUZp
bGVzKGZpbGVuYW1lcyk7CisgICAgICAgIGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMs
IG9wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93ZWRNSU1FVHlwZXMoKS0+dG9TdHJpbmdWZWN0b3Io
KSk7CiAgICAgfSkuZ2V0KCldOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCmluZGV4IDg1NzQ2NTE1ZGE2N2QxNDJhZjdkZmFkODhkZThhNDhhODNmNjFjMTAuLmQxNWZl
ZTJmZDkxYjM3ZTA3MzE5NDVkNTRlM2E0MzMzNTdmMTBiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCkBAIC01NCwxMiArNTQsMTIgQEAgdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBmaWwKIH0KICNlbmRp
ZgogCi12b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHk6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQogewogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPmRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsKGZpbGVuYW1lcyk7CisgICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bChmaWxlbmFtZXMsIGFsbG93ZWRNSU1FVHlwZXMpOwogfQogCiB2b2lkIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKaW5kZXggMWVlY2Rj
YTE3ZGMzOGRhZTk1ZTI4OWNhYWY3MDg2MWNkMGI3NmM1Zi4uM2E5OGE0NDYzNGQ2OWQ1NThlODI2
YzBlY2EzYzc2NWQ5Yzg1MjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaApAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGNob29zZUZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0
cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRhKTsKICNlbmRpZgotICAgIHZvaWQg
Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CisgICAgdm9pZCBj
aG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZmM3ZDYwMDNmMDJkYzg5YjJiZWE5MWY3ODE3ZjA1Y2ZmMjc0MTExYS4uM2M0
MDhiN2Q2MDYwNjZhNTQ5MmExZTc0ZTdhN2IwZTY5MmJmZmMwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKKyNpbmNsdWRlICJD
R1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3du
bG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgpAQCAtNjY4Mywx
NyArNjY4NCwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFu
ZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdAogfQogI2VuZGlmCiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVVSTHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gcmVwbGFjZW1lbnRVUkxzID0gdHJhbnNjb2RlSW1h
Z2VzKGZpbGVVUkxzLCBhbGxvd2VkTUlNRVR5cGVzKTsKKwogI2lmIEVOQUJMRShTQU5EQk9YX0VY
VEVOU0lPTlMpCi0gICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBmaWxlVVJMcyk7CisgICAgVmVjdG9yPFN0cmluZz4g
c2FuZGJveEV4dGVuc2lvbkZpbGVzOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZmls
ZVVSTHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBzYW5kYm94RXh0ZW5zaW9uRmls
ZXMuYXBwZW5kKGkgPCByZXBsYWNlbWVudFVSTHMuc2l6ZSgpICYmICFyZXBsYWNlbWVudFVSTHNb
aV0uaXNOdWxsKCkgPyByZXBsYWNlbWVudFVSTHNbaV0gOiBmaWxlVVJMc1tpXSk7CisKKyAgICBh
dXRvIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVh
ZE9ubHlIYW5kbGVzRm9yRmlsZXMoIldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwiX3MsIHNhbmRib3hFeHRlbnNpb25GaWxlcyk7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25IYW5kbGVzKSkpOwogI2VuZGlmCiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcykpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzLCByZXBsYWNl
bWVudFVSTHMpKTsKIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUo
KTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTI5OGM1NTkwNTQ4YjI3MmZlYjMyYjcwNGNi
ZjcxYzc2YTY0YzllYi4uOWQ0M2QwMTYzMDI1ZTJjYTUzYTg0MWY5MTVlNjU0Y2EwMDcwMzM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyNTcsNyArMTI1Nyw3
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNv
bkRhdGEpOwogI2VuZGlmCi0gICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxs
b3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsK
IAogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKFdlYlBy
b2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNp
ZXM+JiYgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCA4ZjQ3YjhmMDcwZTFmMjk4MzM0NTM4
ZGNhOGNmNGQ0ZTRhMzk0YzRiLi45MDNmOTQxZDc1ODI3ZTcyNTcyZWZiODIxYjZkMjNlYTljZmJh
ZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdp
c3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxl
OwogCkBAIC00NCw3ICs0NCw4IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlCiAgICAgaWYgKCFm
aWxlLT5wYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoZmlsZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgZXh0
ZW5zaW9uSGFuZGxlKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIGZpbGUtPnBh
dGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOworICAgIFN0cmluZyByZXBs
YWNlbWVudFBhdGggPSBwYXRoID09IGZpbGUtPnBhdGgoKSA/IG51bGxTdHJpbmcoKSA6IGZpbGUt
PnBhdGgoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBwYXRoLCByZXBsYWNlbWVu
dFBhdGgsIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAogdm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Qmxv
YlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKaW5k
ZXggNDA5ODRkYjI3ZGFkZDdkNjVlOWE1MWFjMTcyZDA1NzcxOTJkNGEzOC4uZTgzN2E2OTY0ZTA0
N2QzYTQ1YjMyMGVkMDM2YjZhOGE3MzAzZjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQgcmVnaXN0ZXJG
aWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVy
RmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5h
bDsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsOwogICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbDsKICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmNwcAppbmRleCBkOTgzNDNjNDUxOTcwMDVhZWEzNmE5NmQxMTJiNGQ1ZTZiZmQ5MmFjLi5k
MmFhZWY1MzlmMzY2NTQxMmI0Y2ZmYmRlZDViYTllNjJhNDk1MDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuY3BwCkBAIC00Niw5ICs0Niw5IEBAIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyOjp+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoKQogewogfQogCi12b2lkIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZXMpCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vc2VGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBsYWNl
bWVudEZpbGVzKQogewotICAgIG1fZmlsZUNob29zZXItPmNob29zZUZpbGVzKGZpbGVzKTsKKyAg
ICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhmaWxlcywgcmVwbGFjZW1lbnRGaWxlcyk7CiB9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKaW5k
ZXggZDBkODU5YjhkMzA2M2Y0N2E2MTZjMjA0MGVmMzdlYjRmZDFiZDBmOS4uOGRjNDZlZmJhMWNj
YmEyMTIyMTYyNDNlN2E0ZTQ0NzczMjUxMGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIoKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9Ci0g
ICAgdm9pZCBkaWRDaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQg
ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgb3JpZ2luYWxGaWxlcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2
b2lkIGRpZENob29zZUZpbGVzV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBXZWJDb3JlOjpJY29uKik7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggNzcwOTEwYjI1OWNmMDBhNzY1ZWEzMjA4MjA2Yzk2MWI4YTI5MTIzYy4uMzEyODAwNWVmMmVl
ODViNzExZGEwZDZmM2I2NmVjOTU0ZDRjNGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQzMDAsMTIgKzQzMDAsMTIgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihj
b25zdCBWZWN0b3I8U3QKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcykKK3ZvaWQgV2ViUGFnZTo6
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRGaWxlcykKIHsKICAgICBpZiAoIW1fYWN0
aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fYWN0
aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmRpZENob29zZUZpbGVzKGZpbGVzKTsKKyAgICBt
X2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaWRDaG9vc2VGaWxlcyhmaWxlcywgcmVw
bGFjZW1lbnRGaWxlcyk7CiAgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA0ZGFiZTA5MGZhZDE2YzJiNWFiNTIxMWUyODdhOTc4NmEwYjhkOGY2Li42Y2E1OTIzMTA3
ZDlhMjY4YzA4ODhhMWM2ZjE1ZTgzZGQxNjhiOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50RmlsZXMpOwogICAgIHZvaWQgZGlkQ2FuY2Vs
Rm9yT3BlblBhbmVsKCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
MTZhZjMxN2U4ODQ2ZjVmM2Y5NmMwODBiNGNhYTg3NWE2YTQwMDBkNC4uNmI3Yjk1ZGVjMjMxYWNm
NTFlZWIzYjQ4OGEyMDExN2I1ODdkMDcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zNDMsNyArMzQzLDcgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIERp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKFZlY3RvcjxT
dHJpbmc+IGZpbGVVUkxzLCBTdHJpbmcgZGlzcGxheVN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNl
IGljb25EYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2Vy
dmljZXNTYW5kYm94RXh0ZW5zaW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBp
Y29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKQogI2VuZGlmCi0gICAgRGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMpCisgICAgRGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMsIFZlY3RvcjxTdHJpbmc+IHJlcGxh
Y2VtZW50VVJMcykKICAgICBEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQogI2lmIEVOQUJMRShTQU5E
Qk9YX0VYVEVOU0lPTlMpCiAgICAgRXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDJjODAzMGNhODk2ZWJkYTY5ZjU1MTc5
OWVjZmUxMzdmZjEyZGM5YTQuLmZhZjkzYjczYTJiMDE0MTAzODA1YTVjYzZiY2E3YjY1M2E2NTI3
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTkzLDcgKzkzLDcgQEAgTWVk
aWFTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkK
IAogY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBw
cml2YXRlOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVm
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIFdU
Rk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVy
ZW5jZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBt
X2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2Up
LCBjb250ZW50VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMp
LCBjb250ZW50VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsgfQogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
ZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZDEwZDk5MjQ5
MWJkYmQ5ZDhhYTFiM2U4N2I4NDUwMDMyNGM5OTQwLi4xOTZmMDc1NTc4NmQwMDQ3MjBhMGM4ODVj
NmU3MmM5OTY3YjgzNmYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQ
aWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmls
ZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0
ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAg
ICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOnBhcmFtZXRl
cnM6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246
XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZp
ZXc6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQg
aW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpwb3B1
cFRhcmdldDpdKTogRGVsZXRlZC4KKwogMjAyMC0wNi0yMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRwYWtdIE5pZ2h0bHkgcnVubmVyIGZh
aWxzIHRvIGV4dHJhY3QgemlwIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9X
SzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDU3MGFhYTU0ZGI5NzBlNDc0MjQ4OTRm
N2JkODcxYTczZjJjN2RkMGUuLmI1NWIyZjc3ZWNmZDVjYTU0NTNlYTEzMGVhMzgzYjljMjgxYjZh
NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tCkBAIC03NiwzOSArNzYsMzAgQEAgLSAodm9pZClwZXJmb3JtQWN0aW9uOihOU1Rl
eHRGaW5kZXJBY3Rpb24pb3AKIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6
IE5TT2JqZWN0IHsKIEBwcml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7Ci0gICAg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBXS09wZW5Q
YW5lbFBhcmFtZXRlcnMgKl9wYXJhbWV0ZXJzOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldAogCi0tIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNP
cGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMgeworLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6
KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgcGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
ICopcGFyYW1ldGVycyB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewogICAgICAg
ICBfb3BlblBhbmVsID0gb3BlblBhbmVsOwotICAgICAgICBfYWxsb3dlZEZpbGVFeHRlbnNpb25z
ID0gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3B5XTsKKyAgICAgICAgX3BhcmFtZXRlcnMgPSBw
YXJhbWV0ZXJzOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClwb3B1cEFj
dGlvbjooaWQpc2VuZGVyIHsKLSAgICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5kZXIgaW5k
ZXhPZlNlbGVjdGVkSXRlbV0gPT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCistICh2b2lk
KXBvcHVwQWN0aW9uOihOU0J1dHRvbiAqKXNlbmRlciB7CisgICAgaWYgKHNlbmRlci5zdGF0ZSA9
PSBOU0NvbnRyb2xTdGF0ZVZhbHVlT24pIHsKICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dl
ZEZpbGVUeXBlczpuaWxdOwotICAgIGVsc2UgaWYgKCFbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0
ZW1dKSB7Ci0gICAgICAgIC8vIEZpcnN0IGl0ZW0uCi0gICAgICAgIGlmICghW19hbGxvd2VkRmls
ZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZp
bGVUeXBlczpAW0AiIl1dOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbX29wZW5QYW5lbCBz
ZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgICAgICBfcGFy
YW1ldGVycy5fdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyA9IE5POworICAgIH0gZWxzZSB7Cisg
ICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X3BhcmFtZXRlcnMuX2FsbG93
ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgICAgIF9wYXJhbWV0ZXJzLl90cmFuc2NvZGVEaXNhbGxv
d2VkSW1hZ2VzID0gWUVTOwogICAgIH0KIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19h
bGxvd2VkRmlsZUV4dGVuc2lvbnMgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
CiBAZW5kCiAKIEBpbnRlcmZhY2UgV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKCkgPE5TVGV4
dEZpbmRlckJhckNvbnRhaW5lciwgV0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZSwg
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4KQEAgLTYyOSw1MCArNjIwLDI3IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRo
UHJvbXB0OihOU1N0CiAgICAgfV07CiB9CiAKLS0gKG51bGxhYmxlIE5TVmlldyAqKWNyZWF0ZUZp
bHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNpb25zUG9w
dXBUYXJnZXQqKXBvcHVwVGFyZ2V0CistIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJW
aWV3OihGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Kilwb3B1cFRhcmdldAogewotICAgIE5TVGV4
dEZpZWxkKiBsYWJlbCA9IFtbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3RdIGF1dG9yZWxlYXNlXTsKLSAgICBbbGFiZWwgc2V0U3RyaW5nVmFsdWU6QCJGb3JtYXQ6
Il07Ci0gICAgW2xhYmVsIHNldEVkaXRhYmxlOk5PXTsKLSAgICBbbGFiZWwgc2V0U2VsZWN0YWJs
ZTpOT107Ci0gICAgW2xhYmVsIHNldEJvcmRlcmVkOk5PXTsKLSAgICBbbGFiZWwgc2V0QmFja2dy
b3VuZENvbG9yOltOU0NvbG9yIGNsZWFyQ29sb3JdXTsKLSAgICBbbGFiZWwgc2l6ZVRvRml0XTsK
LQotICAgIE5TUG9wVXBCdXR0b24gKmJ1dHRvbiA9IFtbW05TUG9wVXBCdXR0b24gYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBwdWxsc0Rvd246Tk9dIGF1dG9yZWxlYXNlXTsKLSAgICBb
YnV0dG9uIGFkZEl0ZW1zV2l0aFRpdGxlczp0aXRsZXNdOwotICAgIFtidXR0b24gc2V0VGFyZ2V0
OnBvcHVwVGFyZ2V0XTsKLSAgICBbYnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rp
b246KV07Ci0gICAgW2J1dHRvbiBzaXplVG9GaXRdOwotICAgIFtidXR0b24gc2VsZWN0SXRlbUF0
SW5kZXg6MF07Ci0gICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07Ci0gICAgCisg
ICAgTlNCdXR0b24gKmNoZWNrYm94ID0gW05TQnV0dG9uIGNoZWNrYm94V2l0aFRpdGxlOkAiU2hv
dyBhbGwgRmlsZXMiIHRhcmdldDpwb3B1cFRhcmdldCBhY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0
aW9uOildOworICAgIFtjaGVja2JveCBzaXplVG9GaXRdOworICAgIFtwb3B1cFRhcmdldCBwb3B1
cEFjdGlvbjpjaGVja2JveF07CisgICAgICAgIAogICAgIE5TVmlldyogZmlsdGVyVmlldyA9IFtb
W05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07Ci0g
ICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpsYWJlbF07Ci0gICAgW2ZpbHRlclZpZXcgYWRkU3Vi
dmlldzpidXR0b25dOwotCi0gICAgY29uc3QgQ0dGbG9hdCBtYXJnaW4gPSAyMDsKLSAgICBjb25z
dCBDR0Zsb2F0IHNwYWNpbmcgPSAyOwotICAgIGNvbnN0IENHRmxvYXQgbWluQnV0dG9uV2lkdGgg
PSAyMzA7CisgICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpjaGVja2JveF07CiAKLSAgICBOU1Jl
Y3QgbGFiZWxGcmFtZSA9IFtsYWJlbCBmcmFtZV07Ci0gICAgTlNSZWN0IGJ1dHRvbkZyYW1lID0g
W2J1dHRvbiBmcmFtZV07CisgICAgY29uc3QgQ0dGbG9hdCBtYXJnaW4gPSAxMDsKKyAgICAKKyAg
ICBOU1JlY3QgY2hlY2tib3hGcmFtZSA9IFtjaGVja2JveCBmcmFtZV07CiAgICAgTlNSZWN0IGZp
bHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKIAotICAgIC8vIFNldCBhIG1pbmlt
dW0gd2lkdGggZm9yICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNpemUgPSBOU01ha2VTaXpl
KE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgpLCBOU0hlaWdodChidXR0
b25GcmFtZSkpOwotICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdsYWJlbCcg
YW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMuCi0g
ICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgobGFiZWxGcmFtZSkg
KyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hlaWdodChsYWJlbEZyYW1l
KSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOworICAgIC8vIEZpbHRlclZp
ZXcgd2lsbCBsYXkgb3V0ICdjaGVja2JveCdob3Jpem9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0aWNh
bCBtYXJnaW5zLgorICAgIGZpbHRlclZpZXdGcmFtZS5zaXplID0gTlNNYWtlU2l6ZShOU1dpZHRo
KGNoZWNrYm94RnJhbWUpLCBOU0hlaWdodChjaGVja2JveEZyYW1lKSArIG1hcmdpbiAqIDIpOwog
ICAgIFtmaWx0ZXJWaWV3IHNldEZyYW1lOmZpbHRlclZpZXdGcmFtZV07CiAKLSAgICAvLyAnbGFi
ZWwnIHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCi0gICAgbGFiZWxGcmFtZS5v
cmlnaW4gPSBOU01ha2VQb2ludChOU01pblgobGFiZWxGcmFtZSksIChOU0hlaWdodChmaWx0ZXJW
aWV3RnJhbWUpIC0gTlNIZWlnaHQobGFiZWxGcmFtZSkpIC8gMik7Ci0gICAgW2xhYmVsIHNldEZy
YW1lOmxhYmVsRnJhbWVdOwotICAgIAotICAgIC8vICdidXR0b24nIHdpbGwgYmUgbGFpZCBvdXQg
Y2VudGVyIHZlcnRpY2FsbHkgYW5kIGl0IHdpbGwgY29tZSBhZnRlciAnbGFiZWwnIGhvcml6b250
YWxseS4KLSAgICBidXR0b25GcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01heFgobGFiZWxG
cmFtZSkgKyBzcGFjaW5nLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGJ1
dHRvbkZyYW1lKSkgLyAyKTsKLSAgICBbYnV0dG9uIHNldEZyYW1lOmJ1dHRvbkZyYW1lXTsKKyAg
ICAvLyAnY2hlY2tib3hGcmFtZScgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseS4K
KyAgICBjaGVja2JveEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWluWChjaGVja2JveEZy
YW1lKSwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChjaGVja2JveEZyYW1l
KSkgLyAyKTsKKyAgICBbY2hlY2tib3ggc2V0RnJhbWU6Y2hlY2tib3hGcmFtZV07CiAKICAgICBy
ZXR1cm4gZmlsdGVyVmlldzsKIH0KQEAgLTY4MCw3ICs2NDgsNyBAQCAtIChudWxsYWJsZSBOU1Zp
ZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxl
RXh0ZW5zaQogI2lmIF9faGFzX2ZlYXR1cmUob2JqY19nZW5lcmljcykKIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5m
byAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TVVJMICo+ICog
VVJMcykpY29tcGxldGlvbkhhbmRsZXIKICNlbHNlCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1l
dGVycyAqKXBhcmFtZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheSAqVVJMcykpY29tcGxldGlvbkhhbmRs
ZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRo
UGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRC
eUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U0FycmF5ICpVUkxzLCBCT09MIHRyYW5zY29kZUltYWdlcykpY29tcGxldGlvbkhhbmRsZXIKICNl
bmRpZgogewogICAgIE5TT3BlblBhbmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBh
bmVsXTsKQEAgLTY4OCwxMCArNjU2LDkgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmEKICAgICBv
cGVuUGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRp
cGxlU2VsZWN0aW9uOwogCiAgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2Vd
OwotICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0
ZW5zaW9uczogcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICBfZmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10g
aW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzXTsKIAot
ICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFtZXRlcnMuX2Fs
bG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKLSAgICBOU1ZpZXcgKmZpbHRlclZpZXcgPSBbc2Vs
ZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBwb3B1cFRhcmdl
dDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CisgICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0g
W3NlbGYgY3JlYXRlRmlsdGVyVmlldzpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CiAgICAg
aWYgKGZpbHRlclZpZXcpCiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0
ZXJWaWV3XTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403031</attachid>
            <date>2020-06-28 23:39:01 -0700</date>
            <delta_ts>2020-06-29 01:48:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200628233900.patch</filename>
            <type>text/plain</type>
            <size>85960</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxOGFkMzgyZjlkNDg0ZDIzNmFjMGMy
ZmM3NTE1MTYwYWU2NGQzYTguLjIwNWE1ZWIzZTdiNzA4NWFlNzk2MGUxODNhNzhmZWM1OTJhNGI5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWZlYzIxNjc5Y2U3OTAzNTgwNWI4MmZkNjhhNTQzMzFiOWVlNWVlZS4uNmYxMWJiMmY1
NzkwZjQ5OGMyOWJhZjIxNDFmNWYyMDRhYjhiZDYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUw
IEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZv
cm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQg
dG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogZmlsZWFwaS9G
aWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAgICogZmls
ZWFwaS9GaWxlLmg6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgor
ICAgICAgICAqIGh0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9v
c2VyOjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyRmlsZUluZm86OkZpbGVDaG9vc2VyRmlsZUluZm8p
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjptaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRVbmlx
dWVTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRBcHBlbmRBbGxJbWFnZXNFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRl
bnNpb25zIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9k
aWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorCiAy
MDIwLTA2LTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xG
Q11bVEZDXSBBZGp1c3QgdGFibGUgY29udGVudCB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBtYXRjaCB2
ZXJ0aWNhbC1hbGlnbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZjEzM2ZjMmNlMmQ4Zjk3YjQwNjJkNDQzMjc5ZDgx
ZTE4ZDEwNGY5Li5iN2I0YmMzYTM4YzdkOTYxMTg0M2Q4YmNiYzJhMGQxMTlhNzAzYjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
Ym91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2Vy
IG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdo
aWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9y
bWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
NDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9i
VVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZUJsb2JSZWdpc3RyeSk6CisgICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OnRyYW5z
Y29kZUltYWdlcyk6CisgICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVu
c2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24pOgorICAgICAg
ICAqIFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3QpOgor
ICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMg
Y29uc3QpOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVU
eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5l
bFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6dHJhbnNj
b2RlRGlzYWxsb3dlZEltYWdlcyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFt
ZXRlcnM6OnNldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMpOgorICAgICAgICAoQVBJOjpPcGVu
UGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbToKKyAgICAgICAgKC1bV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAgKC1b
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF90cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzXSk6CisgICAg
ICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfc2V0VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdl
czpdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDYtMjggIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhyZWFkLXNhZmV0eSBpc3N1ZSBpbiB3ZWJQ
cm9jZXNzUG9vbEhpZ2hEeW5hbWljUmFuZ2VEaWRDaGFuZ2VDYWxsYmFjaygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggNzA3N2FmMTY0Y2QxNzhlYmI1MGIzZWQ0OGFmZTFhNGRhZTEy
NTJkNy4uZWI4NTEwZmEyZjAzMWYzZDliYmVkNzViNmYyM2U5MDg0NzE4NjI3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTI4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
VGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3Rp
bmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0
IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisK
IDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
aW5kZXggNjBiMzJlNDZmYzQyOTA4MjNhNjI5YmRhM2VkMjcyYTgzYjZhYjRhNi4uYmZlODQxMjk2
ZDNjNmQ1MmE4YThhZjE1NWU2ZThlZThmOTEyMDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTQ1
LDcgKzE0NSw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlk
KGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5h
bWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwg
UGxhdGZvcm1GaWxlSGFuZGxlJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25z
dCBTdHJpbmcmIHN1ZmZpeCA9IHsgfSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxlQWNj
ZXNzUGVybWlzc2lvbiA9IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElmRmls
ZUV4aXN0cyA9IGZhbHNlKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUmKTsKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBhY2VkZjVmZGQxYjJlNzY4
MjRmZmE4OWQ0ZGNkZjQwYWMxYjFiODdkLi4zYWNiODZhYzc3NWNkYWRmNzI1Y2Q4ODA4OGQyYjVj
ZDRiMTRiNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29j
b2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC05
Myw3ICs5Myw3IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJuIE5TSG9t
ZURpcmVjdG9yeSgpOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIHBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CiAgICAgcGxh
dGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIApAQCAtMTEzLDkg
KzExMywxMyBAQCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSAogICAgIENTdHJpbmcgcHJlZml4VXRm
OCA9IHByZWZpeC51dGY4KCk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0
ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5h
cHBlbmQoIlhYWFhYWCIsIDYpOworCisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUgc3VmZml4
LgorICAgIENTdHJpbmcgc3VmZml4VXRmOCA9IHN1ZmZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5
RmlsZVBhdGguYXBwZW5kKHN1ZmZpeFV0ZjguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgpKTsK
ICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7CiAKLSAgICBwbGF0Zm9ybUZpbGVI
YW5kbGUgPSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CisgICAgcGxhdGZvcm1G
aWxlSGFuZGxlID0gbWtzdGVtcHModGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCBzdWZmaXhVdGY4
Lmxlbmd0aCgpKTsKICAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCBlNGFiMDBmYmRhZDlmZmI3MWI1MDIyY2NlYzQxYzEw
YjVjYTBmNWRmLi5mYTBiNTMxZmUxMGZmNzRlYmFiODY1ZjNjYTA5MTVkYTFkOTU3NTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIFZl
Y3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGZpbHRlcikKICAgICByZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkK
K1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCks
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZp
bGVuYW1lLmdldCgpLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBjOWY1MDE0MzZhYmNjODA5NGU4NDE0ODBkMjFmZTM2YTQ3MWU4MWZmLi5i
M2MwNDAxYjUwNmZkY2UzMjMyZWQ2ZmVmYmJiZjBlNTJkMTAwM2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIGdldFZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CiAgICAgY29u
c3QgY2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAppbmRleCA2NTlkZmQ1MjcyN2RjOWVmNjk5YjdmOTI0ZDVkMmU3MmQ4NGUwYWU3
Li5iNjMxNDk1NzNhNDg0MWZlNjAwMWVlZmFmZGQwMDkyY2ZjNzQxYWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIFN0cmluZyBn
ZW5lcmF0ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4m
IGFjdGlvbikKICAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBo
YW5kbGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFM
VUU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggOTVjNzY5OGNhZTJlMDI5ZjUzYmNhZGM4YzA5MzU4ZGFl
MzMyZjg1Zi4uYWI3NDU0NDkwZTZmNGU3ZGE3OGIwZTJkNmRlMzg0NmNjNjM1OTM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE3OTcsNiArMTc5Nyw3IEBAIHBsYXRmb3JtL0RyYWdEYXRhLmNwcAogcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcAogcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMuY3BwCiBw
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKK3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3Bw
CiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCiBwbGF0
Zm9ybS9GaWxlU3RyZWFtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMzE5MDhiZDBjZTU3Yzc0MGUyYjA1NmY4NDdiOTdl
NGJlNWI4YTkuLmY4NTgzNzc1ZDA5NWVkMWM0NWY5YjBjOTk0YjEyOWM3NmZkZGNkYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTIxNDIsNiArMjE0Miw3IEBACiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVF
RTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIy
ODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2
ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjQ4REQ0QzI0QTVDM0VEMDBERTAyQjggLyogRmls
ZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI0OERENDkyNEE1OTAwNjAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRF
RDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTND
IC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZC
IC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTEx
REM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAw
QTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NzM0LDYgKzk3MzUsOCBAQAogCQk3
MjE0NDM0NTIyNDBDOEJBMDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRnJhbWVSYXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyNDhERDQ5MjRBNTkwMDYwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNl
dHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVDaG9vc2VyU2V0dGluZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0OERENEIyNEE1OTBDOTAwREUwMkI4IC8qIEZpbGVDaG9v
c2VyU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUNob29zZXJTZXR0aW5ncy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQwMEY1RjEz
QyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NEVEMzJBMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjRFRDMyQjFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDQxLDYgKzI2NDQ0LDggQEAKIAkJCQkyNjJFQzQxOTFEMDc4
RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFja2luZ1JlZ2lvbnMuaCAqLywKIAkJCQk5MzRGRTlFNDBC
NUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3BwICovLAogCQkJCTA2NkM3NzJBMEFCNjAz
QjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAorCQkJCTcyNDhERDRCMjRBNTkwQzkwMERF
MDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmNwcCAqLywKKwkJCQk3MjQ4REQ0OTI0QTU5MDA2
MDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5oICovLAogCQkJCTUzNTFENEFFMURGOTE2
QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmNwcCAqLywKIAkJCQk1MzUxRDRBRjFERjkxNkFDMDA4
MDEwQ0QgLyogRmlsZUhhbmRsZS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAv
KiBGaWxlTW9uaXRvci5jcHAgKi8sCkBAIC0zMDY3MCw2ICszMDY3NSw3IEBACiAJCQkJOTc2RDZD
ODExMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOEY4NkRB
MUY1MDlFNzQwMEU4Q0ZDNSAvKiBGaWxlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA2
NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzI0OERENEMyNEE1QzNFRDAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUzNTFENEIxMURGOTE2QjQwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTg4QTkwNTE3NTUzQ0Q3MDAwQzc0RjkgLyogRmlsZUljb25M
b2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2OSAvKiBG
aWxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4
IDhkNmUzODczODU1MTNkZGQ0MWUwMzcyNDA5OGI0MzJlYWNlY2ViYzAuLjM3MTAwN2I0MDM4MzZl
YjMxOTkyODhiZmExNmNkMjMyNGJkYTIyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAt
NDYsMTYgKzQ2LDE3IEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2CiAgICAgcmV0dXJuIGZpbGU7
CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBuYW1l
T3ZlcnJpZGUpCiB7CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgU3RyaW5nIHR5cGU7Ci0gICAgY29t
cHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUpOwor
ICAgIFN0cmluZyBlZmZlY3RpdmVQYXRoID0gIXJlcGxhY2VtZW50UGF0aC5pc051bGwoKSA/IHJl
cGxhY2VtZW50UGF0aCA6IHBhdGg7CisgICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShlZmZl
Y3RpdmVQYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUpOwogCiAgICAgYXV0byBpbnRlcm5h
bFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgdHlwZSk7Cisg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVS
TCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IHBh
dGggfSwgV1RGTW92ZShuYW1lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RG
TW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IGVmZmVjdGl2ZVBhdGgg
fSwgV1RGTW92ZShuYW1lKSkpOwogfQogCiBGaWxlOjpGaWxlKFVSTCYmIHVybCwgU3RyaW5nJiYg
dHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5k
ZXggZDJmOTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3NDFmODNlZmY3OC4uODc5NzRkMDAzYzM5
ZGNlNWQ4MzRmYzk3ZjA0NjhmYjMyZGVkMzI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGgg
YW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5k
IGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJv
dmlkZWQgaW4gdGhlIHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29uc3QgU3Ry
aW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOwogCiAgICAgLy8gQ3JlYXRlIGEgRmlsZSB1c2luZyB0
aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KICAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShW
ZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDVlMWQ0YzAw
YTljMDY4YzgwMzFjMjRjY2Q2MGFiMjBhNmFmYTA2MGIuLjExM2YyZTkwNmRiYjU3ZDMwYmNhOWQ5
NTUyZWNlYzM1NTZiM2IzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTUgKzY0LDE2IEBAIHN0YXRpYyBUaHJlYWRT
cGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4gKm1hcDsK
IH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CisgICAgU3RyaW5nIGVmZmVjdGl2
ZVBhdGggPSAhcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpID8gcmVwbGFjZW1lbnRQYXRoIDogcGF0
aDsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgp
LCBjb250ZW50VHlwZSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JV
UkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShlZmZlY3RpdmVQYXRoKSwgcGF0
aCwgY29udGVudFR5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFp
blRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENv
cHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewotICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGVmZmVjdGl2ZVBhdGggPSBlZmZlY3RpdmVQYXRo
Lmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUg
PSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZWZm
ZWN0aXZlUGF0aCksIHBhdGgsIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBhOWM3OWZl
MjI5MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi5lY2I3NGYxN2MwNmRiZWJjNzM0OTgz
ZGIzOTIxZGM5ODk4NDE1OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1Ro
cmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsK
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rp
cmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggMWFmOWViMjJjNGE2NDM1MjE0MWU3MTk1
NmU1MmE2Y2ZmNjJhMGY0Ny4uZjAwOTg5ZGQwM2ZjMTI5NTYzYTg4NTQ4NmQ1YTU3YWE3YWQyMGQ0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9y
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGVGaWxlTGlz
dChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQogICAgICAgICBpZiAo
RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5Rmls
ZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmls
ZU9iamVjdHMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQo
RmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkpOworICAgICAgICAgICAg
ZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZShpbmZvLnBhdGgsIHsgfSwgaW5mby5kaXNw
bGF5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVPYmplY3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBm
M2M3MDk4Y2JmNWU0YjgyMGViNjgwZjdjYzQyNjU1ZjBiOWUyZDZkLi43ZDU0ZjU5ZTAyYzYxYjNj
ZTkzNjIyYzZlYjViMTFkMDNhNmZlYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2Vu
KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0CiAKICAgICBp
ZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsKICAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1h
cChbXShhdXRvJiBmaWxlSW5mbykgewotICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShm
aWxlSW5mby5wYXRoLCBmaWxlSW5mby5kaXNwbGF5TmFtZSk7CisgICAgICAgICAgICByZXR1cm4g
RmlsZTo6Y3JlYXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLnJlcGxhY2VtZW50UGF0aCwgZmls
ZUluZm8uZGlzcGxheU5hbWUpOwogICAgICAgICB9KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxp
c3QoRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVzKSksIGljb24pOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdi
Y2Y0NTM4ZmVkODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4uZDE0NGQxYWMzMmVjNWVhNmIxN2Y4ODBj
MWNhMmUxMjBhZmUzMzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUpCiAgICAgY2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsKIH0KIAotdm9pZCBG
aWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykK
K3ZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBsYWNlbWVudE5hbWVzKQogewogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGluZWxlZ2FudC4gV2Ugc2hvdWxkIG5vdCBiZSBsb29raW5nIGF0IHNl
dHRpbmdzIGhlcmUuCiAgICAgaWYgKG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyA9PSBmaWxlbmFt
ZXMpCkBAIC02OCw4ICs2OCw4IEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKLSAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDog
ZmlsZW5hbWVzKQotICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxl
bmFtZSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZmlsZW5hbWVzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8o
ZmlsZW5hbWVzW2ldLCBpIDwgcmVwbGFjZW1lbnROYW1lcy5zaXplKCkgPyByZXBsYWNlbWVudE5h
bWVzW2ldIDogbnVsbFN0cmluZygpKSk7CiAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0
Mzg3OTVhNzZmZWM5YTNkYmY3YzZhMDg0ZWEwODg5NS4uZWMzZjRiNjc5ZWI4MjgxNWQ5M2IwMjZl
NjM1ZTUxNzM5YzI5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBA
IC0yOSw3ICsyOSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmlsZUNob29zZXJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDggKzQ4LDkgQEAg
Y2xhc3MgRmlsZUNob29zZXI7CiBjbGFzcyBJY29uOwogCiBzdHJ1Y3QgRmlsZUNob29zZXJGaWxl
SW5mbyB7Ci0gICAgRmlsZUNob29zZXJGaWxlSW5mbyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUgPSBTdHJpbmcoKSkKKyAgICBGaWxlQ2hvb3NlckZpbGVJbmZv
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGggPSB7IH0s
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUgPSB7IH0pCiAgICAgICAgIDogcGF0aChwYXRoKQor
ICAgICAgICAsIHJlcGxhY2VtZW50UGF0aChyZXBsYWNlbWVudFBhdGgpCiAgICAgICAgICwgZGlz
cGxheU5hbWUoZGlzcGxheU5hbWUpCiAgICAgewogICAgIH0KQEAgLTU4LDIwICs2MSwxMCBAQCBz
dHJ1Y3QgRmlsZUNob29zZXJGaWxlSW5mbyB7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nIHBh
dGg7CisgICAgY29uc3QgU3RyaW5nIHJlcGxhY2VtZW50UGF0aDsKICAgICBjb25zdCBTdHJpbmcg
ZGlzcGxheU5hbWU7CiB9OwogCi1zdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5ncyB7Ci0gICAgYm9v
bCBhbGxvd3NEaXJlY3RvcmllcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZp
bGVzIHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRNSU1FVHlwZXM7Ci0gICAg
VmVjdG9yPFN0cmluZz4gYWNjZXB0RmlsZUV4dGVuc2lvbnM7Ci0gICAgVmVjdG9yPFN0cmluZz4g
c2VsZWN0ZWRGaWxlczsKLSNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLSAgICBNZWRpYUNhcHR1
cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUgeyBNZWRpYUNhcHR1cmVUeXBlTm9uZSB9OwotI2VuZGlm
Ci19OwotCiBjbGFzcyBGaWxlQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RmlsZUNob29zZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC04Niw4ICs3OSw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9v
c2VGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9v
c2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2hvb3NlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiByZXBsYWNlbWVudE5hbWVzID0geyB9KTsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGFsbW9zdCBpZGVu
dGljYWwgdG8gRmlsZUNob29zZXI6OmNob29zZUZpbGVzKCkuIFdlIHNob3VsZCBtZXJnZSB0aGlz
CiAgICAgLy8gZnVuY3Rpb24gd2l0aCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKSBhbmQgaGVu
Y2UgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4OTZj
YWJhMGFkNzk0ZWVlMTZjOWU5MjI3MGM2MjdmZTc5YWZjZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEs
MTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3NlclNldHRpbmdzLmgiCisKKyNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIFN0cmluZyBtaW1lVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikK
K3sKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24o
ZXh0ZW5zaW9uLnN0YXJ0c1dpdGgoJy4nKSA/IGV4dGVuc2lvbi5yaWdodChleHRlbnNpb24ubGVu
Z3RoKCkgLSAxKSA6IGV4dGVuc2lvbik7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZFVuaXF1ZVN0
cmluZ3MoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MsIFZlY3RvcjxTdHJpbmc+JiBhbGxT
dHJpbmdzKQoreworICAgIGZvciAoYXV0byYgc3RyaW5nIDogc3RyaW5ncykKKyAgICAgICAgYWxs
U3RyaW5ncy5hcHBlbmRJZk5vdENvbnRhaW5zKHN0cmluZyk7Cit9CisKK3N0YXRpYyB2b2lkIGFw
cGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lv
bnMsIFZlY3RvcjxTdHJpbmc+JiBhbGxNSU1FVHlwZXMpCit7CisgICAgZm9yIChhdXRvJiBleHRl
bnNpb24gOiBleHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBtaW1lVHlwZUZv
ckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVChtaW1lVHlwZS5jb250YWlucygn
LycpKTsKKyAgICAgICAgYWxsTUlNRVR5cGVzLmFwcGVuZElmTm90Q29udGFpbnMobWltZVR5cGUp
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbWltZVR5cGVzLCBWZWN0b3I8U3RyaW5nPiYgYWxsRXh0ZW5z
aW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogbWltZVR5cGVzKSB7CisgICAgICAg
IEFTU0VSVChtaW1lVHlwZS5jb250YWlucygnLycpKTsKKyAgICAgICAgYXBwZW5kVW5pcXVlU3Ry
aW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUp
LCBhbGxFeHRlbnNpb25zKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHNob3VsZEFwcGVuZEFs
bEltYWdlc0V4dGVuc2lvbnMoVmVjdG9yPFN0cmluZz4mIGFsbEV4dGVuc2lvbnMpCit7CisgICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiBhbGxFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gbWlt
ZVR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICBpZiAoTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5
cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkTUlNRVR5cGVzKCkg
Y29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOworCisgICAgYXBw
ZW5kVW5pcXVlU3RyaW5ncyh0aGlzLT5hY2NlcHRNSU1FVHlwZXMsIGFsbG93ZWRNSU1FVHlwZXMp
OworICAgIGFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnModGhpcy0+YWNjZXB0RmlsZUV4dGVu
c2lvbnMsIGFsbG93ZWRNSU1FVHlwZXMpOworCisgICAgaWYgKCF0aGlzLT50cmFuc2NvZGVEaXNh
bGxvd2VkSW1hZ2VzKSB7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0
cnk6OmdldEV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKCJpbWFnZS8qIl9zKTsKKyAgICAg
ICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhleHRlbnNpb25zLCBhbGxvd2VkTUlNRVR5
cGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlczsKK30KKworVmVjdG9y
PFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29u
c3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisKKyAgICBh
cHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKHRoaXMtPmFjY2VwdE1JTUVUeXBlcywgYWxsb3dl
ZEZpbGVFeHRlbnNpb25zKTsKKyAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2VwdEZp
bGVFeHRlbnNpb25zLCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpOworCisgICAgaWYgKHNob3VsZEFw
cGVuZEFsbEltYWdlc0V4dGVuc2lvbnMoYWxsb3dlZEZpbGVFeHRlbnNpb25zKSkgeworICAgICAg
ICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yV2ls
ZGNhcmRNSU1FVHlwZSgiaW1hZ2UvKiJfcyk7CisgICAgICAgIGFwcGVuZFVuaXF1ZVN0cmluZ3Mo
ZXh0ZW5zaW9ucywgYWxsb3dlZEZpbGVFeHRlbnNpb25zKTsKKyAgICB9CisKKyAgICByZXR1cm4g
YWxsb3dlZEZpbGVFeHRlbnNpb25zOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3NlclNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlMTEzOGM5OGY5MmQ0N2IwYzgw
MzU1OTdlM2YyYjgzZmE4NTAyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3Qg
RmlsZUNob29zZXJTZXR0aW5ncyB7CisgICAgYm9vbCBhbGxvd3NEaXJlY3RvcmllcyB7IGZhbHNl
IH07CisgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzIHsgZmFsc2UgfTsKKyAgICBib29sIHRy
YW5zY29kZURpc2FsbG93ZWRJbWFnZXMgeyBmYWxzZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IGFj
Y2VwdE1JTUVUeXBlczsKKyAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9uczsK
KyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOworI2lmIEVOQUJMRShNRURJQV9DQVBU
VVJFKQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVy
ZVR5cGVOb25lIH07CisjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBh
bGxvd2VkTUlNRVR5cGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmlu
Zz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXgg
OTk2ZWU3ODRlZGUyYWRiMDFhMTU1MGUyZmU1MGQ1MDY0M2IzZmEzZi4uOGRlNTQ0MTM0OGE2YzZi
OWFjZjcwNGQwNTAyODJmOGJmYzQxN2U4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaApAQCAtNTgsMTEgKzU4LDEyIEBAIHB1YmxpYzoKIAogICAgIC8vIEZJ
WE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZlIHRoZSB3b3Jk
ICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgICAgc3RhdGljIFZlY3Rv
cjxTdHJpbmc+IGdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwor
ICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRFeHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcg
Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdldE1lZGlhTUlNRVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBn
ZXRNZWRpYU1JTUVUeXBlc0ZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CiAK
LSAgICBzdGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2V0TUlNRVR5cGVGb3JQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBl
UmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhPiBjcmVhdGVNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xv
YmFsRGF0YSgpOwogCkBAIC03NCw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlz
IHN1aXRhYmxlIGZvciBiZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29k
aW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEg
TUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9y
IEpTT04gcmVzb3VyY2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0K
aW5kZXggMmIzZmUwNTU4NGY5NjRlMDk5NzY4NDZhYTEyOTgwNzZlYTRiZTE1MC4uMjgzZjYwNzA4
MWNiMmZjY2UyMzAxZGIyODk1ZDc4NjUwZTZiYzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtMjcsMTEg
KzI3LDU5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnku
aCIKIAorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJLmg+CiAjaW1wb3J0IDx3dGYv
Y29jb2EvVmVjdG9yQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgSGFz
aE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4mIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgp
Cit7CisgICAgc3RhdGljIGF1dG8gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4g
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOworCisgICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uRm9y
TUlNRVR5cGUgPSBbJl0oY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bikgeworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBleHRlbnNpb25zRm9yTUlNRVR5cGVN
YXAuZW5zdXJlKHR5cGUsIFtdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PFN0
cmluZz4oKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5hZGQoZXh0ZW5zaW9uKTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvIGFkZEV4
dGVuc2lvbnNGb3JNSU1FVHlwZSA9IFsmXShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IENGQXJy
YXlSZWYmIGV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIGF1dG8gd2lsZGNhcmRNSU1FVHlwZSA9
IG1ha2VTdHJpbmcodHlwZS5zcGxpdCgnLycpLmZpcnN0KCksICIvKiJfcyk7CisKKyAgICAgICAg
ICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoZXh0ZW5zaW9u
cyk7IGkgPCBjb3VudDsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBleHRl
bnNpb24gPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KGV4dGVuc2lvbnMsIGkpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAvLyBBZGQgZXh0
ZW5zaW9uIHRvIHdpbGRjYXJkTUlNRVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1h
Z2UvKiIKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSh3aWxkY2FyZE1J
TUVUeXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8g
aXRzbWltZVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvcG5nIgorICAgICAg
ICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKHR5cGUsIGV4dGVuc2lvbik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGFs
bFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpKTsKKworICAg
ICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGFsbFVUSXMu
Z2V0KCkpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgYXV0byB1dGkgPSBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhbGxVVElzLmdldCgpLCBp
KSk7CisgICAgICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAgICAgICAgICBpZiAo
IXR5cGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhdXRvIGV4dGVu
c2lvbnMgPSBhZG9wdENGKFVUVHlwZUNvcHlBbGxUYWdzV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xh
c3NGaWxlbmFtZUV4dGVuc2lvbikpOworICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zIHx8ICFD
RkFycmF5R2V0Q291bnQoZXh0ZW5zaW9ucy5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUodHlwZS5nZXQoKSwgZXh0
ZW5zaW9ucy5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlTWFwOworICAgIH0oKSk7CisKKyAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlTWFwOworfQorCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiB7CiAgICAgcmV0dXJuIFtbTlNVUkxGaWxl
VHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBpbmdzXSBNSU1FVHlwZUZvckV4dGVuc2lvbjooTlNTdHJp
bmcgKilleHRlbnNpb25dOwpAQCAtNDIsNiArOTAsMTcgQEAgVmVjdG9yPFN0cmluZz4gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkK
ICAgICByZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNo
YXJlZE1hcHBpbmdzXSBleHRlbnNpb25zRm9yTUlNRVR5cGU6dHlwZV0pOwogfQogCitWZWN0b3I8
U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uczsK
KworICAgIGF1dG8gaXRlciA9IGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpLmZpbmQodHlwZSk7
CisgICAgaWYgKGl0ZXIgIT0gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkuZW5kKCkpCisgICAg
ICAgIGV4dGVuc2lvbnMuYXBwZW5kUmFuZ2UoaXRlci0+dmFsdWUuYmVnaW4oKSwgaXRlci0+dmFs
dWUuZW5kKCkpOworCisgICAgcmV0dXJuIGV4dGVuc2lvbnM7Cit9CisKIFN0cmluZyBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgLy8gU3lzdGVtIFByZXZpZXdzIGFjY2VwdCBzb21lIG5vbi1zdGFuZGFy
ZCBNSU1FVHlwZXMsIHNvIHdlIGNhbid0IHJlbHkgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCA1
YWJmZDc1Y2I0OTQ1NmU0MmQzOWQ0NGQzYmMyMjU5YWFmZmE1MjI2Li5lYmFiNjE4MmUzZWE0ODlj
Y2Q4MjI0NjZhNjNhYjRlMjRlZDBlODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zMiwxNyAr
MzIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCitCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoKQogICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3Jl
cGxhY2VtZW50UGF0aChyZXBsYWNlbWVudFBhdGgpCiB7CiB9CiAKIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7Ci0jaWYgRU5BQkxFKEZJTEVfUkVQTEFD
RU1FTlQpCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0aCk7Ci0jZW5kaWYKIH0KIAogY29u
c3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQpAQCAtNTAsMTAgKzQ5LDkg
QEAgY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQogI2lmIEVOQUJM
RShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0
ZWQpCiAgICAgICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCk7Ci0KKyNlbmRpZgogICAgIGlm
ICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBtX3JlcGxhY2Vt
ZW50UGF0aDsKLSNlbmRpZgogCiAgICAgcmV0dXJuIG1fcGF0aDsKIH0KQEAgLTEwMSw2ICs5OSwx
MiBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlv
bnMoKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAorICAgIGlmICghbV9yZXBsYWNlbWVudFBh
dGguaXNOdWxsKCkpIHsKKyAgICAgICAgbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRh
dGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIGlmICghbWV0
YWRhdGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIG1fc2l6ZSA9IG1l
dGFkYXRhLnZhbHVlKCkubGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAppbmRleCA2NTg4MjlkMDdm
Y2ZiZDZiMDJhMjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li44ZmNiZThjMTFmMjEzNDhjZWZlNDhlZDAy
NjY1YzU1ZDYzNjk2NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGggPSB7IH0pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2Uo
cGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UocGF0aCwgcmVwbGFjZW1lbnRQYXRoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QmxvYkRh
dGFGaWxlUmVmZXJlbmNlKCk7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgpOwogCiBw
cml2YXRlOgogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpAQCAtNjAsOCArNjAsOCBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOwotI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKKyNpZiBFTkFCTEUoRklM
RV9SRVBMQUNFTUVOVCkKICAgICBib29sIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB7
IGZhbHNlIH07CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9zaXplIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXgg
ZmU5MWU4MWFhZDQzMDJlMDNkYjk2N2E0NmEzMDZhYzZkNDJjY2U1NS4uNGIxNWNkZGJlMGU0Yzc2
ZThmOTJiMDAyZDYyYTlhYjAyYjdhNmJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9i
IFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgotICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAog
ICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJs
b2IgZGF0YS4KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZl
Y3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZjBjZTY0OWQ4YjE3ZmVmOGQ2NmVmMTNkNjNiYzVm
ZGU2OGM1MjRjLi44OTMxODljZmEwNzg5ZDUxYzc3YTVlMzJiNDVkM2Q1YjNiMmY0ZWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNzM3LDcgKzczNyw3IEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmFsbENvb2tpZXNEZWxldGVkKCkKIAogI2VuZGlmCiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewogICAgIE5FVFdPUktfUFJPQ0VTU19NRVNTQUdFX0NIRUNLKCF1
cmwuaXNFbXB0eSgpKTsKIApAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0CiAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXNzaW9uLT5i
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGUoV1RGTW92ZShleHRlbnNpb25IYW5kbGUpKSksIGNvbnRlbnRUeXBlKTsKKyAgICBzZXNz
aW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShwYXRoLCByZXBsYWNlbWVudFBh
dGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwg
Y29udGVudFR5cGUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC03NzQsNyArNzc0LDcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVIKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoLCBudWxscHRyKSwgY29udGVudFR5cGUpOworICAg
IHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOwogfQogCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGU4MjMwMDA5ZWM5NmJmZWVmMjA5OGExYWVlZTdh
MjdhYzM5OGMzZGEuLjE4Y2NlZDk3YzY1MzJhMzZhNzBhMzFkZDcxZDZhZmJhZjhkNjZlOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0UmF3Q29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAgIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKLSAgICB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Cisg
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCk7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBm
aWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMjAwZDRjNGFkMjBjZjZjMmYxYTVi
N2E0MDM2YjA2NzQ4MDE0M2VlLi43YjgyMjUyMzI3MDBhYTY4OGM5ZDg0YWFjMDQyMGM0OTdiNmU1
Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ2
LDcgKzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnMoSGFzaFNldDxTdHJpbmc+IGhvc3RzKQogI2VuZGlmCiAKLSAgICBSZWdpc3RlckZpbGVCbG9i
VVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckZpbGVC
bG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250
ZW50VHlwZSkKICAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJs
b2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKICAgICBSZWdpc3RlckJsb2JV
UkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwpCiAgICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRo
LCBTdHJpbmcgY29udGVudFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmlu
ZGV4IGY2OTYwMWNlZjBlZmM5M2RiZWQzZTA1M2Q1MzQwODE0N2JlM2VkOTcuLmNmZmM5OWY4MmIw
NDRjNDliMDUwMmJlOTVkY2M4Y2I4OTkxYzIyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEJsb2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAgICAgY2xhc3MgRW1wdHlCbG9iUmVnaXN0cnkgOiBwdWJsaWMgV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5IHsKLSAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcApp
bmRleCBhZjA4ZjZkNWVmYjRhYWE4NmIxMDRhNDljOTg1NWYyMDcyNWI2ODA4Li4yZTY4YTBjOTEz
YjEwYzA4MTA0YWEzYjk0ZTNiNDA1ODc5MjRmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0NHVXRpbGl0aWVzLmNwcApAQCAtMjYsNiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDR1V0aWxpdGllcy5oIgogCisjaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlP
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9VVElVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgcGFp
bnRJbWFnZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dJbWFnZVJlZiBpbWFnZSwgQ0dGbG9hdCBz
Y2FsZUZhY3RvciwgQ0dQb2ludCBkZXN0aW5hdGlvbiwgQ0dSZWN0IHNvdXJjZSkKQEAgLTQ2LDQg
KzUyLDgyIEBAIHZvaWQgcGFpbnRJbWFnZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dJbWFnZVJl
ZiBpbWFnZSwgQ0dGbG9hdCBzY2FsZUZhY3RvciwgQ0dQCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdT
dGF0ZShjb250ZXh0KTsKIH0KIAorU3RyaW5nIHRyYW5zY29kZUltYWdlKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBBU1NFUlQobWltZVR5cGUuc3Rh
cnRzV2l0aCgiaW1hZ2UvIl9zKSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIGltYWdlIHNvdXJjZS4K
KyAgICBhdXRvIHNvdXJjZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBh
dGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUNyZWF0ZVdpdGhVUkwoc291cmNlVVJMLmdldCgpLCBudWxscHRyKSk7CisgICAg
aWYgKCFzb3VyY2UpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgi
U291cmNlIHBhdGggaXMgbm90IGEgdmFsaWQgaW1hZ2UuIik7CisgICAgICAgIHJldHVybiBwYXRo
OworICAgIH0KKworICAgIGF1dG8gc291cmNlVVRJID0gU3RyaW5nKENHSW1hZ2VTb3VyY2VHZXRU
eXBlKHNvdXJjZS5nZXQoKSkpOworICAgIGF1dG8gcmVwbGFjZW1lbnRVVEkgPSBXZWJDb3JlOjpV
VElGcm9tTUlNRVR5cGUobWltZVR5cGUpOworICAgIGlmIChzb3VyY2VVVEkgPT0gcmVwbGFjZW1l
bnRVVEkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiU291cmNl
IGltYWdlIGFscmVhZHkgaGFzIHRoZSByZXBsYWNlbWVudCBNSU1FIHR5cGUuIik7CisgICAgICAg
IHJldHVybiBwYXRoOworICAgIH0KKworICAgIC8vIENvbXB1dGUgdGhlIHRlbXBvcmFyeSBmaWxl
IG5hbWUgcHJlZml4IGFuZCBmaWxlIGV4dGVuc2lvbi4KKyAgICBhdXRvIGNvbXBvbmVudHMgPSBG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkuc3BsaXQoJy4nKTsKKyAgICBhdXRvIGV4
dGVuc2lvbiA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHByZWZpeCA9IG1ha2VTdHJpbmcoY29t
cG9uZW50cy5maXJzdCgpLCAiXyJfcyk7CisgICAgYXV0byBzdWZmaXggPSBtYWtlU3RyaW5nKCIu
Il9zLCBleHRlbnNpb24pOworCisgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCisgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHJlcGxhY2VtZW50RmlsZUhhbmRsZTsKKyAg
ICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
cHJlZml4LCByZXBsYWNlbWVudEZpbGVIYW5kbGUsIHN1ZmZpeCk7CisgICAgaWYgKHJlcGxhY2Vt
ZW50RmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIlJlcGxhY2VtZW50IGlt
YWdlIGNhbid0IGJlIGNyZWF0ZWQuIik7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0KKwor
ICAgIC8vIENyZWF0ZSB0aGUgZGF0YSBjb25zdW1lci4KKyAgICBDR0RhdGFDb25zdW1lckNhbGxi
YWNrcyBjYWxsYmFja3MgPSB7IFtdKHZvaWQgKmluZm8sIGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6
ZV90IGNvdW50KSAtPiBzaXplX3QgeworICAgICAgICBhdXRvIHBsYXRmb3JtRmlsZUhhbmRsZSA9
ICpzdGF0aWNfY2FzdDxGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUqPihpbmZvKTsKKyAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKHBsYXRmb3JtRmlsZUhhbmRsZSwg
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICB9LCBudWxscHRy
IH07CisKKyAgICAvLyBDcmVhdGUgdGhlIGltYWdlIHJlcGxhY2VtZW50LgorICAgIGF1dG8gY29u
c3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlKCZyZXBsYWNlbWVudEZpbGVIYW5k
bGUsICZjYWxsYmFja3MpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50ID0gYWRvcHRDRihDR0ltYWdl
RGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YUNvbnN1bWVyKGNvbnN1bWVyLmdldCgpLCByZXBsYWNl
bWVudFVUSS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAxLCBudWxscHRyKSk7CisKKyAgICAvLyBX
cml0ZSB0aGUgc291cmNlIGltYWdlIHRvIHRoZSByZXBsYWNlbWVudCBpbWFnZS4KKyAgICBzaXpl
X3QgaW5kZXggPSBDR0ltYWdlU291cmNlR2V0UHJpbWFyeUltYWdlSW5kZXgoc291cmNlLmdldCgp
KTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3VyY2UocmVwbGFjZW1lbnQu
Z2V0KCksIHNvdXJjZS5nZXQoKSwgaW5kZXgsIG51bGxwdHIpOworICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkZpbmFsaXplKHJlcGxhY2VtZW50LmdldCgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUocmVwbGFjZW1lbnRGaWxlSGFuZGxlKTsKKworICAgIHJldHVybiByZXBsYWNlbWVudFBhdGg7
Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHRyYW5zY29kZUltYWdlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IHJlcGxhY2VtZW50UGF0aHM7CisgICAgU3RyaW5nIHByZWZlcnJlZEVu
Y29kaW5nTUlNRVR5cGU7CisgICAgCisgICAgZm9yIChhdXRvIG1pbWVUeXBlIDogYWxsb3dlZE1J
TUVUeXBlcykgeworICAgICAgICBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKSB7CisgICAgICAgICAgICBw
cmVmZXJyZWRFbmNvZGluZ01JTUVUeXBlID0gbWltZVR5cGU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwcmVmZXJyZWRFbmNvZGluZ01JTUVUeXBlLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoczsKKworICAgIGZvciAoYXV0
byYgcGF0aCA6IHBhdGhzKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgocGF0aCk7CisgICAgICAgIGlmIChhbGxv
d2VkTUlNRVR5cGVzLmNvbnRhaW5zKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIHJlcGxhY2VtZW50
UGF0aHMuYXBwZW5kKG51bGxTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
cGxhY2VtZW50UGF0aHMuYXBwZW5kKHRyYW5zY29kZUltYWdlKHBhdGgsIHByZWZlcnJlZEVuY29k
aW5nTUlNRVR5cGUpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aHM7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0
aWxpdGllcy5oCmluZGV4IDg1MWQxODFhOGZjNzU3M2M5MzBjZmM2MDNiMGY0MTQyODc0N2IyMmQu
Ljk1ZGE2ZDkzNzc5OGIyY2EyOTE3YTg2MGU2ZjE1MGNmMjIxNWZhMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgKQEAgLTI5LDYgKzI5LDggQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB2b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmLCBDR0Zs
b2F0IHNjYWxlRmFjdG9yLCBDR1BvaW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKTsKK1N0
cmluZyB0cmFuc2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOworVmVjdG9yPFN0cmluZz4gdHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3Bw
CmluZGV4IGZjNzRiNjAxNzNjNTUyNTkwYjU0ZTM0MGM2NmFlMWZhMzY4NDU3MGEuLjlhNTZlMzli
OTI2Yjk2NjI0NWQ2OWI1NzkyMjNkMTAxZjA1NWZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJv
eEV4dGVuc2lvbi5jcHAKQEAgLTMwLDggKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LUJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24pCi0gICAgOiBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2UocGF0aCkKK0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKQorICAgIDogQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBh
dGgsIHJlcGxhY2VtZW50UGF0aCkKICAgICAsIG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb24pKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKaW5k
ZXggNzVhNWQ0ZDBjYmJlYzA4NWFmZGRiMzhmZWJiNTMzZTczNjQwNjMyNi4uN2I4MzI5ZjIyOWE1
NWZkNGRiYzNjNDQ2ODM3OWJiMzFiZjEwMzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVu
c2lvbi5oCkBAIC0zNCwxMyArMzQsMTMgQEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAogY2xh
c3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24gZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikKKyAgICBzdGF0aWMgUmVm
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFBhdGggPSB7IH0sIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYm
IHNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwg
V1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCByZXBsYWNl
bWVudFBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbikpKTsKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CisgICAgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYpOwogICAg
IHZpcnR1YWwgfkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKCk7CiAK
ICAgICB2b2lkIHByZXBhcmVGb3JGaWxlQWNjZXNzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKaW5k
ZXggODUxZWJmNWMwMzllN2IyODkxOWFmOTEwYjAyZmVhMDBjZWVlZGY0Ny4uZDM1YTc0YTg3YWEw
Yjg1MmY0MDg3NDYxZDdjODUyNGRkNmIwZTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcApAQCAtNTgsMTIgKzU4
LDE1IEBAIFJlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphY2NlcHRGaWxlRXh0
ZW5zaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5
KG1fc2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMpOwogfQogCi0jaWYgRU5BQkxFKE1FRElB
X0NBUFRVUkUpCi1XZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIE9wZW5QYW5lbFBhcmFtZXRlcnM6
Om1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdAorUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFt
ZXRlcnM6OmFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiBtX3NldHRpbmdz
Lm1lZGlhQ2FwdHVyZVR5cGU7CisgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0Fy
cmF5KG1fc2V0dGluZ3MuYWxsb3dlZE1JTUVUeXBlcygpKTsKK30KKworUmVmPEFQSTo6QXJyYXk+
IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KG1fc2V0dGluZ3MuYWxsb3dl
ZEZpbGVFeHRlbnNpb25zKCkpOwogfQotI2VuZGlmCiAKIFJlZjxBUEk6OkFycmF5PiBPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjpzZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAppbmRleCA3
MzBlNWQ1ZWVmZjJiYTBiZTQ4OTQ3YjBkNzk3ZTYzMTVjMzI2YjkxLi5iMmUwOGJlOWQ1MDE5Yzhl
Y2Y4NzUyZmQ3YTcyOTI0ZjEwMjM2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKQEAgLTQyLDkgKzQyLDEzIEBAIHB1
YmxpYzoKICAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
dGluZ3MuYWxsb3dzTXVsdGlwbGVGaWxlczsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRN
SU1FVHlwZXMoKSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0RmlsZUV4dGVuc2lv
bnMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4gYWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0
OworICAgIFJlZjxBUEk6OkFycmF5PiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKICAg
ICBSZWY8QVBJOjpBcnJheT4gc2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdDsKKyAgICBib29sIHRy
YW5zY29kZURpc2FsbG93ZWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLnRyYW5z
Y29kZURpc2FsbG93ZWRJbWFnZXM7IH0KKyAgICB2b2lkIHNldFRyYW5zY29kZURpc2FsbG93ZWRJ
bWFnZXMoYm9vbCBmbGFnKSB7IG1fc2V0dGluZ3MudHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyA9
IGZsYWc7IH0KICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLSAgICBXZWJDb3JlOjpNZWRpYUNh
cHR1cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpNZWRpYUNh
cHR1cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLm1l
ZGlhQ2FwdHVyZVR5cGU7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0K
aW5kZXggZDkwMGY5ZThkNjc1NDFjYjhjMjllZDQyOGExZTliMDA4YjE0ODgyMy4uN2IyOTljOWJh
MmNkZGU5ZDYxZjA5YzlmYzVhY2Y1NGFhY2VmMDc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCkBA
IC0yNSw2MCArMjUsMTEgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS09wZW5Q
YW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5oIgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2Vy
dmljZXNTUEkuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiV0tOU0FycmF5Lmgi
CiAKLXN0YXRpYyBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4g
KmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpCi17Ci0gICAgc3RhdGljIGF1dG8gZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgYXV0byBl
eHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOwotICAgICAgICBhdXRvIGFsbFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNs
YXJlZFR5cGVJZGVudGlmaWVycygpKTsKLQotICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbkZvck1J
TUVUeXBlID0gXihOU1N0cmluZyAqbWltZVR5cGUsIE5TU3RyaW5nICpleHRlbnNpb24pIHsKLSAg
ICAgICAgICAgIGlmICghZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSkK
LSAgICAgICAgICAgICAgICBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVd
ID0gW05TTXV0YWJsZVNldCBzZXRdOwotICAgICAgICAgICAgW2V4dGVuc2lvbnNGb3JNSU1FVHlw
ZU1hcC5nZXQoKVttaW1lVHlwZV0gYWRkT2JqZWN0OmV4dGVuc2lvbl07Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgYXV0byBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUgPSBeKE5TU3RyaW5nICptaW1l
VHlwZSwgTlNBcnJheTxOU1N0cmluZyAqPiAqZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgYXV0
byB3aWxkY2FyZE1JTUVUeXBlID0gW1ttaW1lVHlwZSBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJp
bmc6QCIvIl1bMF0gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIvKiJdOwotCi0gICAgICAgICAg
ICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24gaW4gZXh0ZW5zaW9ucykgewotICAgICAgICAgICAg
ICAgIGlmICghZXh0ZW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIHdpbGRjYXJkTUlNRVR5cGUsIGZvciBleGFt
cGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvKiIKLSAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25G
b3JNSU1FVHlwZSh3aWxkY2FyZE1JTUVUeXBlLCBleHRlbnNpb24pOwotICAgICAgICAgICAgICAg
IC8vIEFkZCBleHRlbnNpb24gdG8gaXRzbWltZVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0
byAiaW1hZ2UvcG5nIgotICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1p
bWVUeXBlLCBleHRlbnNpb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAg
IGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoYWxsVVRJcy5nZXQo
KSk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIHV0aSA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGFsbFVUSXMuZ2V0KCksIGkpKTsK
LSAgICAgICAgICAgIGF1dG8gbWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgICAgICAgICBpZiAo
IW1pbWVUeXBlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byBl
eHRlbnNpb25zID0gYWRvcHRDRihVVFR5cGVDb3B5QWxsVGFnc1dpdGhDbGFzcyh1dGksIGtVVFRh
Z0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKLSAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JN
SU1FVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilleHRlbnNpb25zLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIEFkZCBhZGRpdGlvbmFsIG1pbWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlw
ZUlkZW50aWZpZXJzKCkgbWF5IG5vdCByZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1J
TUVUeXBlKEAiaW1hZ2Uvd2VicCIsIEAid2VicCIpOwotCi0gICAgICAgIHJldHVybiBleHRlbnNp
b25zRm9yTUlNRVR5cGVNYXA7Ci0gICAgfSgpKTsKLQotICAgIHJldHVybiBleHRlbnNpb25zRm9y
TUlNRVR5cGVNYXAuZ2V0KCkuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAq
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3RyaW5nICptaW1ldHlwZSkKLXsKLSAgICByZXR1cm4g
W2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpIG9iamVjdEZvcktleTptaW1ldHlwZV07Ci19Ci0K
IEBpbXBsZW1lbnRhdGlvbiBXS09wZW5QYW5lbFBhcmFtZXRlcnMKIAogLSAoQk9PTClhbGxvd3NN
dWx0aXBsZVNlbGVjdGlvbgpAQCAtMTE0LDU4ICs2NSwxNyBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJp
bmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAKIC0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zCiB7Ci0gICAgLy8gQWdn
cmVnYXRlIGV4dGVuc2lvbnMgYmFzZWQgb24gc3BlY2lmaWVkIE1JTUUgdHlwZXMuCi0gICAgYXV0
byBhY2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAgYXV0
byBhY2NlcHRlZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNd
OwotCi0gICAgYXV0byBhbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
U2V0IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgZW51bWVyYXRlT2Jq
ZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqbWltZVR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJP
T0wqIHN0b3ApIHsKLSAgICAgICAgQVNTRVJUKFttaW1lVHlwZSBjb250YWluc1N0cmluZzpAIi8i
XSk7Ci0gICAgICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgdW5pb25TZXQ6ZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlKG1pbWVUeXBlKV07Ci0gICAgfV07Ci0KLSAgICBhdXRvIGFkZGl0aW9uYWxBbGxv
d2VkRmlsZUV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKLQotICAgIFthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Js
b2NrOl4oTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqc3RvcCkg
ewotICAgICAgICBBU1NFUlQoW2V4dGVuc2lvbiBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICcuJyk7
Ci0gICAgICAgIFthZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdDpbZXh0
ZW5zaW9uIHN1YnN0cmluZ0Zyb21JbmRleDoxXV07Ci0gICAgfV07Ci0gICAgCi0gICAgW2FsbG93
ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3RzRnJvbUFycmF5OmFkZGl0aW9uYWxBbGxvd2VkRmls
ZUV4dGVuc2lvbnMuZ2V0KCldOwotICAgIHJldHVybiBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFs
bE9iamVjdHNdOworICAgIHJldHVybiB3cmFwcGVyKF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxv
d2VkRmlsZUV4dGVuc2lvbnMoKSk7Cit9CisKKy0gKEJPT0wpX3RyYW5zY29kZURpc2FsbG93ZWRJ
bWFnZXMKK3sKKyAgICByZXR1cm4gX29wZW5QYW5lbFBhcmFtZXRlcnMtPnRyYW5zY29kZURpc2Fs
bG93ZWRJbWFnZXMoKTsKIH0KIAotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmls
ZUV4dGVuc2lvbnNUaXRsZXMKKy0gKHZvaWQpX3NldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXM6
KEJPT0wpZmxhZwogewotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0
ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9h
Y2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIGNvbnN0ZXhwciBhdXRvIEFsbEZpbGVzVGl0
bGUgPSBAIkFsbCBGaWxlcyI7Ci0gICAgY29uc3RleHByIGF1dG8gQ3VzdG9tRmlsZXNUaXRsZSA9
IEAiQ3VzdG9tIEZpbGVzIjsKLSAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3Vu
dF0gJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBb
QWxsRmlsZXNUaXRsZV07Ci0KLSAgICBpZiAoIShbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdID09
IDEgJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkpCi0gICAgICAgIHJldHVybiBA
W0N1c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgYXV0byBtaW1lVHlwZSA9
IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byByYW5nZSA9IFttaW1l
VHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2UubGVuZ3RoKQot
ICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLSAgICAK
LSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFu
Z2UubG9jYXRpb25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3Ry
aW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAgaWYgKFttaW1lVHlw
ZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vic3Ry
aW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5n
RnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRsZV07Ci0KLSAgICBpZiAoW21pbWVUeXBlU3VmZml4
IGxlbmd0aF0gPD0gNCkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAlQCIsIFttaW1lVHlwZVN1ZmZpeCB1cHBlcmNhc2VTdHJpbmddLCBtaW1lVHlwZVBy
ZWZpeF0sIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQCAlQCIsIG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZp
bGVzVGl0bGVdOworICAgIF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5zZXRUcmFuc2NvZGVEaXNhbGxv
d2VkSW1hZ2VzKGZsYWcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUu
aAppbmRleCAyOWVlODEyMGU0YWYxYmFlYTIyYzA2MjRhYzJlMjNiNGUxYmQ0YWQ2Li5jNmE5NTBi
NzExOGQ4YzZlOWZiYWI1ZGI5MjdjZGQ5YWU4OTI5NTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRl
cnNQcml2YXRlLmgKQEAgLTMxLDggKzMxLDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25z
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNp
b25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRl
bnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgc2V0dGVyPV9zZXRUcmFuc2NvZGVEaXNhbGxv
d2VkSW1hZ2VzOikgQk9PTCBfdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCA0OWM3MTQyNzg1ZWMyOWI0NDZmZDk1Njk3ODE5
NWExOTdkMzliOTNmLi4wYTAxYmQxZTcxMDRiNmZmYjgzYmZmZTM1ZjM0NGYxNzliZmE5YzIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTI2LDYg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogCisj
aW1wb3J0ICJBUElBcnJheS5oIgogI2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJB
UElIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
LmgiCkBAIC04MjYsNyArODI3LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3Bl
blBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnIKIAogICAgIGF1
dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0
ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5p
dGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3Jh
cHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1l
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJs
ZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVu
UGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBpbml0aWF0
ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIG9wZW5QYW5lbFBhcmFtZXRlcnMgPSBtYWtlUmVm
KCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5T
QXJyYXkgKlVSTHMpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODQwLDcgKzg0MSw3IEBAIGJvb2wg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkqIHdlYkZyCiAgICAgICAgIGZvciAoTlNVUkwgKnVybCBpbiBVUkxzKQogICAg
ICAgICAgICAgZmlsZW5hbWVzLmFwcGVuZCh1cmwucGF0aCk7CiAKLSAgICAgICAgbGlzdGVuZXIt
PmNob29zZUZpbGVzKGZpbGVuYW1lcyk7CisgICAgICAgIGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhm
aWxlbmFtZXMsIG9wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93ZWRNSU1FVHlwZXMoKS0+dG9TdHJp
bmdWZWN0b3IoKSk7CiAgICAgfSkuZ2V0KCldOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCmluZGV4IDg1NzQ2NTE1ZGE2N2QxNDJhZjdkZmFkODhkZThhNDhhODNmNjFj
MTAuLmQxNWZlZTJmZDkxYjM3ZTA3MzE5NDVkNTRlM2E0MzMzNTdmMTBiODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBmaWwK
IH0KICNlbmRpZgogCi12b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29z
ZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCit2b2lkIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQogewogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPmRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsKGZpbGVuYW1lcyk7CisgICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbChmaWxlbmFtZXMsIGFsbG93ZWRNSU1FVHlwZXMpOwogfQogCiB2b2lkIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKaW5k
ZXggMWVlY2RjYTE3ZGMzOGRhZTk1ZTI4OWNhYWY3MDg2MWNkMGI3NmM1Zi4uM2E5OGE0NDYzNGQ2
OWQ1NThlODI2YzBlY2EzYzc2NWQ5Yzg1MjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaApAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGNo
b29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRhKTsKICNlbmRpZgot
ICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7Cisg
ICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAgdm9pZCBjYW5j
ZWwoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggN2E3NDcyNTUwOWRmMmE3NjFiZTExNTBlYWFlNDZkNDQ2ZGM1
OWNiNS4uZmI5ZmQyM2I2ZWNjYmVhNGFmZDMwNzc0NWFiM2RjYmEwNjM3NWFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKKyNp
bmNsdWRlICJDR1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgpA
QCAtNjY4MywxNyArNjY4NCwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdAogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gcmVwbGFjZW1lbnRVUkxzID0gdHJh
bnNjb2RlSW1hZ2VzKGZpbGVVUkxzLCBhbGxvd2VkTUlNRVR5cGVzKTsKKwogI2lmIEVOQUJMRShT
QU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJv
eHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBmaWxlVVJMcyk7CisgICAgVmVjdG9y
PFN0cmluZz4gc2FuZGJveEV4dGVuc2lvbkZpbGVzOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gZmlsZVVSTHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBzYW5kYm94RXh0
ZW5zaW9uRmlsZXMuYXBwZW5kKGkgPCByZXBsYWNlbWVudFVSTHMuc2l6ZSgpICYmICFyZXBsYWNl
bWVudFVSTHNbaV0uaXNOdWxsKCkgPyByZXBsYWNlbWVudFVSTHNbaV0gOiBmaWxlVVJMc1tpXSk7
CisKKyAgICBhdXRvIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoIldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWwiX3MsIHNhbmRib3hFeHRlbnNpb25GaWxlcyk7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChXVEZNb3Zl
KHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSkpOwogI2VuZGlmCiAKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcykpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxz
LCByZXBsYWNlbWVudFVSTHMpKTsKIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmlu
dmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWUxOTViZDdlMmY4MjQwZDFl
N2Q4OGM3YjdkZTE0MjJhNGRiOTI5Ni4uYmE1YWUwZDkxYzVhZDc4ZjA4NTE0MWI3NmI2ZmM0MGZl
M2YxMDNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyNTcs
NyArMTI1Nyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQg
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6
RGF0YSogaWNvbkRhdGEpOwogI2VuZGlmCi0gICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVu
UGFuZWwoKTsKIAogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCA4ZjQ3YjhmMDcwZTFm
Mjk4MzM0NTM4ZGNhOGNmNGQ0ZTRhMzk0YzRiLi45MDNmOTQxZDc1ODI3ZTcyNTcyZWZiODIxYjZk
MjNlYTljZmJhZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5z
aW9uSGFuZGxlOwogCkBAIC00NCw3ICs0NCw4IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlCiAg
ICAgaWYgKCFmaWxlLT5wYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUoZmlsZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
T25seSwgZXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmws
IGZpbGUtPnBhdGgoKSwgZXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSksIDApOworICAgIFN0
cmluZyByZXBsYWNlbWVudFBhdGggPSBwYXRoID09IGZpbGUtPnBhdGgoKSA/IG51bGxTdHJpbmco
KSA6IGZpbGUtPnBhdGgoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBwYXRoLCBy
ZXBsYWNlbWVudFBhdGgsIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAog
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBW
ZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmgKaW5kZXggNDA5ODRkYjI3ZGFkZDdkNjVlOWE1MWFjMTcyZDA1NzcxOTJkNGEzOC4uZTgz
N2E2OTY0ZTA0N2QzYTQ1YjMyMGVkMDM2YjZhOGE3MzAzZjYyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQg
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKKyAgICB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8
V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsOwog
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBm
aW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmNwcAppbmRleCBkOTgzNDNjNDUxOTcwMDVhZWEzNmE5NmQxMTJiNGQ1ZTZi
ZmQ5MmFjLi5kMmFhZWY1MzlmMzY2NTQxMmI0Y2ZmYmRlZDViYTllNjJhNDk1MDRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCkBAIC00Niw5ICs0Niw5IEBAIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyOjp+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoKQogewogfQogCi12b2lk
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZXMpCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9v
c2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiByZXBsYWNlbWVudEZpbGVzKQogewotICAgIG1fZmlsZUNob29zZXItPmNob29zZUZpbGVzKGZp
bGVzKTsKKyAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhmaWxlcywgcmVwbGFjZW1lbnRG
aWxlcyk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmgKaW5kZXggZDBkODU5YjhkMzA2M2Y0N2E2MTZjMjA0MGVmMzdlYjRmZDFiZDBmOS4uOGRj
NDZlZmJhMWNjYmEyMTIyMTYyNDNlN2E0ZTQ0NzczMjUxMGM3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB+V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIoKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2Ug
PSAwOyB9Ci0gICAgdm9pZCBkaWRDaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwor
ICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luYWxGaWxlcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIGRpZENob29zZUZpbGVzV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBXZWJDb3JlOjpJ
Y29uKik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggNDIyNjQ2ZDYyMTFlN2IzNDU3YjI3MjM5N2Y4YWI4Y2NmMmUzZWE2ZC4uNjcw
OTIyN2U3OThmOTA1ZjVjNDdhOWQwOTE1NzUzMzY0MGZkZGY2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQzMDAsMTIgKzQzMDAsMTIgQEAg
dm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5n
QW5kSWNvbihjb25zdCBWZWN0b3I8U3QKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcykKK3ZvaWQg
V2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRGaWxlcykKIHsKICAgICBp
ZiAoIW1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmRpZENob29zZUZpbGVzKGZpbGVz
KTsKKyAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaWRDaG9vc2VGaWxlcyhm
aWxlcywgcmVwbGFjZW1lbnRGaWxlcyk7CiAgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lciA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBmOTRhY2FhZjE4NTUzODdmNWVjMDg4YmYzZjM3NmJiMWVhMWNlYWVkLi41
MmI3YzgyNzZiMTM3Yzk2MDUwYjg2MTAzYmZmNDNiNDQ5MzRlYjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNjAzLDcgKzE2MDMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7CiAjZW5kaWYKIAotICAgIHZv
aWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAg
ICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50RmlsZXMpOwogICAgIHZvaWQg
ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggNjg4OWQ2MjMyYjlmZTU1N2ExOWEzOTBhM2FmZTQ0ZDg3M2Y2OWUwOS4uYzVlMzQz
MWY2MTc0OGMxZDQxMGQwYmQ0NTI1Y2YyMWU0ZjY2YzZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zNDMsNyAr
MzQzLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29u
KFZlY3RvcjxTdHJpbmc+IGZpbGVVUkxzLCBTdHJpbmcgZGlzcGxheVN0cmluZywgSVBDOjpEYXRh
UmVmZXJlbmNlIGljb25EYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9u
dGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKQogI2VuZGlmCi0gICAgRGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMpCisgICAgRGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMsIFZlY3RvcjxTdHJp
bmc+IHJlcGxhY2VtZW50VVJMcykKICAgICBEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQogI2lmIEVO
QUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgRXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9w
ZW5QYW5lbChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRl
bnNpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDJjODAzMGNhODk2ZWJk
YTY5ZjU1MTc5OWVjZmUxMzdmZjEyZGM5YTQuLmZhZjkzYjczYTJiMDE0MTAzODA1YTVjYzZiY2E3
YjY1M2E2NTI3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTkzLDcgKzkz
LDcgQEAgTWVkaWFTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0
cmF0ZWd5KCkKIAogY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdp
c3RyeSB7CiBwcml2YXRlOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVS
TCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdp
c3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
ZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShy
ZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1v
dmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVn
aXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsgfQogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQ
dHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAz
OWJiZWRhOTI0ZWVhY2U5MmE3OTUyMzczNzBhMmQxNjg2NGQ5OTRjLi4xNmIxNWQ3Mjc4M2Q4MGY5
MjAyOWFlOTU0NTRkMWM2ZDExZGMzYmEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBU
aGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVjdGlu
ZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2NlcHQi
IGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5t
OgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVs
OnBhcmFtZXRlcnM6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcG9w
dXBBY3Rpb246XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0
ZUZpbHRlclZpZXc6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdl
YlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0
aW9uSGFuZGxlcjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9w
dXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxsb2NdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVy
Vmlldzpwb3B1cFRhcmdldDpdKTogRGVsZXRlZC4KKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFk
aW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggNTcwYWFhNTRkYjk3MGU0NzQyNDg5NGY3YmQ4NzFh
NzNmMmM3ZGQwZS4uYjU1YjJmNzdlY2ZkNWNhNTQ1M2VhMTMwZWEzODNiOWMyODFiNmE2ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KQEAgLTc2LDM5ICs3NiwzMCBAQCAtICh2b2lkKXBlcmZvcm1BY3Rpb246KE5TVGV4dEZpbmRl
ckFjdGlvbilvcAogQGludGVyZmFjZSBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IDogTlNPYmpl
Y3QgewogQHByaXZhdGUKICAgICBOU09wZW5QYW5lbCAqX29wZW5QYW5lbDsKLSAgICBOU0FycmF5
PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIFdLT3BlblBhbmVsUGFy
YW1ldGVycyAqX3BhcmFtZXRlcnM7CiB9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBGaWxlRXh0
ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5l
bCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAq
KWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7CistIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVu
UGFuZWwqKW9wZW5QYW5lbCBwYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJh
bWV0ZXJzIHsKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVu
UGFuZWwgPSBvcGVuUGFuZWw7Ci0gICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxs
b3dlZEZpbGVFeHRlbnNpb25zIGNvcHldOworICAgICAgICBfcGFyYW1ldGVycyA9IHBhcmFtZXRl
cnM7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXBvcHVwQWN0aW9uOihp
ZClzZW5kZXIgewotICAgIC8vIExhc3QgaXRlbS4KLSAgICBpZiAoW3NlbmRlciBpbmRleE9mU2Vs
ZWN0ZWRJdGVtXSA9PSBbc2VuZGVyIG51bWJlck9mSXRlbXNdIC0gMSkKKy0gKHZvaWQpcG9wdXBB
Y3Rpb246KE5TQnV0dG9uICopc2VuZGVyIHsKKyAgICBpZiAoc2VuZGVyLnN0YXRlID09IE5TQ29u
dHJvbFN0YXRlVmFsdWVPbikgewogICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5
cGVzOm5pbF07Ci0gICAgZWxzZSBpZiAoIVtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0pIHsK
LSAgICAgICAgLy8gRmlyc3QgaXRlbS4KLSAgICAgICAgaWYgKCFbX2FsbG93ZWRGaWxlRXh0ZW5z
aW9ucyBjb3VudF0pCi0gICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVz
OkBbQCIiXV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93
ZWRGaWxlVHlwZXM6X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgICAgIF9wYXJhbWV0ZXJz
Ll90cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzID0gTk87CisgICAgfSBlbHNlIHsKKyAgICAgICAg
W19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVF
eHRlbnNpb25zXTsKKyAgICAgICAgX3BhcmFtZXRlcnMuX3RyYW5zY29kZURpc2FsbG93ZWRJbWFn
ZXMgPSBZRVM7CiAgICAgfQogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX2FsbG93ZWRG
aWxlRXh0ZW5zaW9ucyByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIEBlbmQK
IAogQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAoKSA8TlNUZXh0RmluZGVy
QmFyQ29udGFpbmVyLCBXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlLCBfV0tJY29u
TG9hZGluZ0RlbGVnYXRlPgpAQCAtNjI5LDUwICs2MjAsMjcgQEAgLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3QKICAgICB9XTsKIH0KIAotLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmll
dzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCopcG9wdXBUYXJnZXQKKy0gKG51bGxhYmxlIE5TVmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KEZp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQqKXBvcHVwVGFyZ2V0CiB7Ci0gICAgTlNUZXh0RmllbGQq
IGxhYmVsID0gW1tbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0g
YXV0b3JlbGVhc2VdOwotICAgIFtsYWJlbCBzZXRTdHJpbmdWYWx1ZTpAIkZvcm1hdDoiXTsKLSAg
ICBbbGFiZWwgc2V0RWRpdGFibGU6Tk9dOwotICAgIFtsYWJlbCBzZXRTZWxlY3RhYmxlOk5PXTsK
LSAgICBbbGFiZWwgc2V0Qm9yZGVyZWQ6Tk9dOwotICAgIFtsYWJlbCBzZXRCYWNrZ3JvdW5kQ29s
b3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwotICAgIFtsYWJlbCBzaXplVG9GaXRdOwotCi0gICAg
TlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gW1tbTlNQb3BVcEJ1dHRvbiBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU1plcm9SZWN0IHB1bGxzRG93bjpOT10gYXV0b3JlbGVhc2VdOwotICAgIFtidXR0b24g
YWRkSXRlbXNXaXRoVGl0bGVzOnRpdGxlc107Ci0gICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBU
YXJnZXRdOwotICAgIFtidXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsK
LSAgICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDow
XTsKLSAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246YnV0dG9uXTsKLSAgICAKKyAgICBOU0J1
dHRvbiAqY2hlY2tib3ggPSBbTlNCdXR0b24gY2hlY2tib3hXaXRoVGl0bGU6QCJTaG93IGFsbCBG
aWxlcyIgdGFyZ2V0OnBvcHVwVGFyZ2V0IGFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rpb246KV07
CisgICAgW2NoZWNrYm94IHNpemVUb0ZpdF07CisgICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9u
OmNoZWNrYm94XTsKKyAgICAgICAgCiAgICAgTlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNlXTsKLSAgICBbZmls
dGVyVmlldyBhZGRTdWJ2aWV3OmxhYmVsXTsKLSAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmJ1
dHRvbl07Ci0KLSAgICBjb25zdCBDR0Zsb2F0IG1hcmdpbiA9IDIwOwotICAgIGNvbnN0IENHRmxv
YXQgc3BhY2luZyA9IDI7Ci0gICAgY29uc3QgQ0dGbG9hdCBtaW5CdXR0b25XaWR0aCA9IDIzMDsK
KyAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmNoZWNrYm94XTsKIAotICAgIE5TUmVjdCBsYWJl
bEZyYW1lID0gW2xhYmVsIGZyYW1lXTsKLSAgICBOU1JlY3QgYnV0dG9uRnJhbWUgPSBbYnV0dG9u
IGZyYW1lXTsKKyAgICBjb25zdCBDR0Zsb2F0IG1hcmdpbiA9IDEwOworICAgIAorICAgIE5TUmVj
dCBjaGVja2JveEZyYW1lID0gW2NoZWNrYm94IGZyYW1lXTsKICAgICBOU1JlY3QgZmlsdGVyVmll
d0ZyYW1lID0gW2ZpbHRlclZpZXcgZnJhbWVdOwogCi0gICAgLy8gU2V0IGEgbWluaW11bSB3aWR0
aCBmb3IgJ2J1dHRvbicuCi0gICAgYnV0dG9uRnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUoTUFYKE5T
V2lkdGgoYnV0dG9uRnJhbWUpLCBtaW5CdXR0b25XaWR0aCksIE5TSGVpZ2h0KGJ1dHRvbkZyYW1l
KSk7Ci0gICAgCi0gICAgLy8gRmlsdGVyVmlldyB3aWxsIGxheSBvdXQgJ2xhYmVsJyBhbmQgJ2J1
dHRvbicgaG9yaXpvbnRhbGx5IGFuZCBoYXZlIGEgdmVydGljYWwgbWFyZ2lucy4KLSAgICBmaWx0
ZXJWaWV3RnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUoTlNXaWR0aChsYWJlbEZyYW1lKSArIE5TV2lk
dGgoYnV0dG9uRnJhbWUpICsgc3BhY2luZywgTUFYKE5TSGVpZ2h0KGxhYmVsRnJhbWUpLCBOU0hl
aWdodChidXR0b25GcmFtZSkpICsgbWFyZ2luICogMik7CisgICAgLy8gRmlsdGVyVmlldyB3aWxs
IGxheSBvdXQgJ2NoZWNrYm94J2hvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdp
bnMuCisgICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgoY2hlY2ti
b3hGcmFtZSksIE5TSGVpZ2h0KGNoZWNrYm94RnJhbWUpICsgbWFyZ2luICogMik7CiAgICAgW2Zp
bHRlclZpZXcgc2V0RnJhbWU6ZmlsdGVyVmlld0ZyYW1lXTsKIAotICAgIC8vICdsYWJlbCcgd2ls
bCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseS4KLSAgICBsYWJlbEZyYW1lLm9yaWdpbiA9
IE5TTWFrZVBvaW50KE5TTWluWChsYWJlbEZyYW1lKSwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFt
ZSkgLSBOU0hlaWdodChsYWJlbEZyYW1lKSkgLyAyKTsKLSAgICBbbGFiZWwgc2V0RnJhbWU6bGFi
ZWxGcmFtZV07Ci0gICAgCi0gICAgLy8gJ2J1dHRvbicgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIg
dmVydGljYWxseSBhbmQgaXQgd2lsbCBjb21lIGFmdGVyICdsYWJlbCcgaG9yaXpvbnRhbGx5Lgot
ICAgIGJ1dHRvbkZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWF4WChsYWJlbEZyYW1lKSAr
IHNwYWNpbmcsIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNIZWlnaHQoYnV0dG9uRnJh
bWUpKSAvIDIpOwotICAgIFtidXR0b24gc2V0RnJhbWU6YnV0dG9uRnJhbWVdOworICAgIC8vICdj
aGVja2JveEZyYW1lJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5LgorICAgIGNo
ZWNrYm94RnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNaW5YKGNoZWNrYm94RnJhbWUpLCAo
TlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGNoZWNrYm94RnJhbWUpKSAvIDIp
OworICAgIFtjaGVja2JveCBzZXRGcmFtZTpjaGVja2JveEZyYW1lXTsKIAogICAgIHJldHVybiBm
aWx0ZXJWaWV3OwogfQpAQCAtNjgwLDcgKzY0OCw3IEBAIC0gKG51bGxhYmxlIE5TVmlldyAqKWNy
ZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNp
CiAjaWYgX19oYXNfZmVhdHVyZShvYmpjX2dlbmVyaWNzKQogLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBh
cmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJh
bWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNVUkwgKj4gKiBVUkxzKSlj
b21wbGV0aW9uSGFuZGxlcgogI2Vsc2UKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICop
cGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0FycmF5ICpVUkxzKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0
ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXkg
KlVSTHMsIEJPT0wgdHJhbnNjb2RlSW1hZ2VzKSljb21wbGV0aW9uSGFuZGxlcgogI2VuZGlmCiB7
CiAgICAgTlNPcGVuUGFuZWwgKm9wZW5QYW5lbCA9IFtOU09wZW5QYW5lbCBvcGVuUGFuZWxdOwpA
QCAtNjg4LDEwICs2NTYsOSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogICAgIG9wZW5QYW5l
bC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb247CiAKICAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0gICAg
X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQg
YWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25z
OiBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgIF9maWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0
aE9wZW5QYW5lbDogb3BlblBhbmVsIHBhcmFtZXRlcnM6IHBhcmFtZXRlcnNdOwogCi0gICAgTlNB
cnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZp
bGVFeHRlbnNpb25zVGl0bGVzOwotICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0
ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKKyAgICBOU1ZpZXcgKmZpbHRlclZpZXcgPSBbc2VsZiBj
cmVhdGVGaWx0ZXJWaWV3Ol9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKICAgICBpZiAoZmls
dGVyVmlldykKICAgICAgICAgW29wZW5QYW5lbCBzZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXdd
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403036</attachid>
            <date>2020-06-29 01:48:02 -0700</date>
            <delta_ts>2020-06-29 12:01:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200629014801.patch</filename>
            <type>text/plain</type>
            <size>87588</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxOGFkMzgyZjlkNDg0ZDIzNmFjMGMy
ZmM3NTE1MTYwYWU2NGQzYTguLjIwNWE1ZWIzZTdiNzA4NWFlNzk2MGUxODNhNzhmZWM1OTJhNGI5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWZlYzIxNjc5Y2U3OTAzNTgwNWI4MmZkNjhhNTQzMzFiOWVlNWVlZS4uODkzNDA1ZTM0
ODRkMjVmYjNjOWNlZDhmMzM2MGE4Y2IzMDAwNzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZv
cm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQg
dG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZW4ubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nczoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgICogZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogaHRtbC9EaXJlY3RvcnlGaWxlTGlz
dENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmlsZUxpc3QpOgorICAgICAg
ICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRU
eXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJGaWxl
SW5mbzo6RmlsZUNob29zZXJGaWxlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nl
cjo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3Mu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZFVuaXF1ZVN0cmluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRF
eHRlbnNpb25zRm9yTUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFwcGVuZEFs
bEltYWdlc0V4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5n
czo6YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3Nl
clNldHRpbmdzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0
cnlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yV2ls
ZGNhcmRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZTo6cGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5Lmg6CisKIDIwMjAtMDYtMjggIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIEFkanVzdCB0YWJsZSBjb250ZW50IHZl
cnRpY2FsIHBvc2l0aW9uIHRvIG1hdGNoIHZlcnRpY2FsLWFsaWduCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmMTMz
ZmMyY2UyZDhmOTdiNDA2MmQ0NDMyNzlkODFlMThkMTA0ZjkuLmI3YjRiYzNhMzhjN2Q5NjExODQz
ZDhiY2JjMmEwZDExOWE3MDNiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDYt
MjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFs
bG93IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2Yg
dGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToKKyAgICAgICAgKiBQbGF0
Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRyYW5zY29kZUltYWdl
KToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1hZ2VzKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9jZy9DR1V0aWxpdGllcy5oOgorICAgICAgICAqIFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgICogU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElPcGVu
UGFuZWxQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6
YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRl
cnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5l
bFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oOgorICAgICAgICAoQVBJOjpP
cGVuUGFuZWxQYXJhbWV0ZXJzOjp0cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzIGNvbnN0KToKKyAg
ICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6c2V0VHJhbnNjb2RlRGlzYWxsb3dlZElt
YWdlcyk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5
cGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLm1tOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxl
RXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX3RyYW5zY29k
ZURpc2FsbG93ZWRJbWFnZXNdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9z
ZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzOl0pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBh
cmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0
OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyOjpkaWRDaG9vc2VGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAy
MC0wNi0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0
aHJlYWQtc2FmZXR5IGlzc3VlIGluIHdlYlByb2Nlc3NQb29sSGlnaER5bmFtaWNSYW5nZURpZENo
YW5nZUNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3MDc3YWYxNjRj
ZDE3OGViYjUwYjNlZDQ4YWZlMWE0ZGFlMTI1MmQ3Li5lYjg1MTBmYTJmMDMxZjNkOWJiZWQ3NWI2
ZjIzZTkwODQ3MTg2MjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4g
ZmlsZSBlbGVtZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZl
cnRlZCB0byBhbnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFkaW5nIHRv
IGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2MGIzMmU0NmZjNDI5MDgyM2E2MjliZGEz
ZWQyNzJhODNiNmFiNGE2Li5iZmU4NDEyOTZkM2M2ZDUyYThhOGFmMTU1ZTZlOGVlOGY5MTIwMTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsK
IGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKIC8v
IFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90
IHRoZSBmdWxsIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKIFdURl9F
WFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1p
c3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0
aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3Vj
Y2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
RmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29h
Lm1tCmluZGV4IGFjZWRmNWZkZDFiMmU3NjgyNGZmYTg5ZDRkY2RmNDBhYzFiMWI4N2QuLjNhY2I4
NmFjNzc1Y2RhZGY3MjVjZDg4MDg4ZDJiNWNkNGIxNGI1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIGhvbWVEaXJlY3Rv
cnlQYXRoKCkKICAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CiB9CiAKLVN0cmluZyBvcGVu
VGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBw
bGF0Zm9ybUZpbGVIYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBT
dHJpbmcmIHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogCkBAIC0xMTMsOSArMTEzLDEzIEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZp
bGVICiAgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKICAgICB0ZW1wb3Jh
cnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkp
OwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7CisKKyAgICAvLyBB
cHBlbmQgdGhlIGZpbGUgbmFtZSBzdWZmaXguCisgICAgQ1N0cmluZyBzdWZmaXhVdGY4ID0gc3Vm
Zml4LnV0ZjgoKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoc3VmZml4VXRmOC5kYXRh
KCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgn
XDAnKTsKIAotICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBh
dGguZGF0YSgpKTsKKyAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wcyh0ZW1wb3JhcnlG
aWxlUGF0aC5kYXRhKCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIGlmIChwbGF0Zm9ybUZp
bGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGU0YWIw
MGZiZGFkOWZmYjcxYjUwMjJjY2VjNDFjMTBiNWNhMGY1ZGYuLmZhMGI1MzFmZTEwZmY3NGViYWI4
NjVmM2NhMDkxNWRhMWQ5NTc1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVz
OwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5n
JikKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVz
JXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpKTsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIG51bGxwdHIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGM5ZjUwMTQzNmFiY2M4MDk0
ZTg0MTQ4MGQyMWZlMzZhNDcxZTgxZmYuLmIzYzA0MDFiNTA2ZmRjZTMyMzJlZDZmZWZiYmJmMGU1
MmQxMDAzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAt
NDQyLDcgKzQ0Miw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0
aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGNoYXIg
YnVmZmVyW1BBVEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJ
UiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDY1OWRmZDUyNzI3ZGM5
ZWY2OTliN2Y5MjRkNWQyZTcyZDg0ZTBhZTcuLmI2MzE0OTU3M2E0ODQxZmU2MDAxZWVmYWZkZDAw
OTJjZmM3NDFhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQwNCw3
ICs0MDQsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5j
dGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAgIHJldHVybiBwcm9wb3NlZFBh
dGg7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9y
bUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBo
YW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDgy
Njg3MDQ3NTE2NzllNDBlNjI4MTUwZDA3ODZhOWRmMzJkMDA1NC4uNTdhZTg3NDU0ZTkwYzFhYjRj
MDgxODMwZDkxYzE1Yzk0OTkzMWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC05NDUsNiArOTQ1
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3Jt
L0RyYWdJdGVtLmgKICAgICBwbGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9ucy5oCiAgICAgcGxh
dGZvcm0vRmlsZUNob29zZXIuaAorICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaAog
ICAgIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaAogICAgIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmgKICAg
ICBwbGF0Zm9ybS9GaWxlU3RyZWFtQ2xpZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTVjNzY5OGNh
ZTJlMDI5ZjUzYmNhZGM4YzA5MzU4ZGFlMzMyZjg1Zi4uYWI3NDU0NDkwZTZmNGU3ZGE3OGIwZTJk
NmRlMzg0NmNjNjM1OTM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3OTcsNiArMTc5Nyw3IEBAIHBs
YXRmb3JtL0RyYWdEYXRhLmNwcAogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogcGxhdGZvcm0vRXZl
bnRUcmFja2luZ1JlZ2lvbnMuY3BwCiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKK3BsYXRmb3Jt
L0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAogcGxhdGZv
cm0vRmlsZU1vbml0b3IuY3BwCiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMzE5MDhi
ZDBjZTU3Yzc0MGUyYjA1NmY4NDdiOTdlNGJlNWI4YTkuLmY4NTgzNzc1ZDA5NWVkMWM0NWY5YjBj
OTk0YjEyOWM3NmZkZGNkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNDIsNiArMjE0Miw3IEBACiAJCTcyMTQ0MzMzMjIz
RUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3Bl
cnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZC
QTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFp
bnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjQ4REQ0
QzI0QTVDM0VEMDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0OERENDkyNEE1OTAwNjAwREUwMkI4
IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVu
ZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJ
NzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVD
aGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNl
cnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC05NzM0LDYgKzk3MzUsOCBAQAogCQk3MjE0NDM0NTIyNDBDOEJBMDBGMTJGRjcgLyogU1ZHQW5p
bWF0ZWRWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9w
ZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjE0NDM0NjIyNDBDQUQyMDBG
MTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUwMEMw
MDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRnJh
bWVSYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNDhERDQ5MjRBNTkwMDYw
MERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVDaG9v
c2VyU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0OERENEIyNEE1
OTBDOTAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZUNob29zZXJTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzJBMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVu
ZE1pbk1heC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRCbGVuZE1pbk1h
eC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyQjFBM0E3RTU0MDBGNUYx
M0MgLyogRVhUQmxlbmRNaW5NYXguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVEJsZW5k
TWluTWF4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDQxLDYgKzI2NDQ0
LDggQEAKIAkJCQkyNjJFQzQxOTFEMDc4RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFja2luZ1JlZ2lv
bnMuaCAqLywKIAkJCQk5MzRGRTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3Bw
ICovLAogCQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAor
CQkJCTcyNDhERDRCMjRBNTkwQzkwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmNwcCAq
LywKKwkJCQk3MjQ4REQ0OTI0QTU5MDA2MDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5o
ICovLAogCQkJCTUzNTFENEFFMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmNwcCAqLywK
IAkJCQk1MzUxRDRBRjFERjkxNkFDMDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oICovLAogCQkJCTdB
MDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCkBAIC0zMDY3MCw2
ICszMDY3NSw3IEBACiAJCQkJOTc2RDZDODExMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzOEY4NkRBMUY1MDlFNzQwMEU4Q0ZDNSAvKiBGaWxlQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTA2NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hv
b3Nlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI0OERENEMyNEE1QzNFRDAwREUwMkI4IC8qIEZp
bGVDaG9vc2VyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNTFENEIxMURGOTE2QjQw
MDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg4QTkwNTE3NTUz
Q0Q3MDAwQzc0RjkgLyogRmlsZUljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIz
REJFMTI1MUYxMkQwMDNFRjI2OSAvKiBGaWxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IDhkNmUzODczODU1MTNkZGQ0MWUwMzcyNDA5OGI0MzJl
YWNlY2ViYzAuLjM3MTAwN2I0MDM4MzZlYjMxOTkyODhiZmExNmNkMjMyNGJkYTIyZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNDYsMTYgKzQ2LDE3IEBAIFJlZjxGaWxlPiBGaWxlOjpj
cmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2CiAgICAgcmV0dXJuIGZpbGU7CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBG
aWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
UGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCiB7CiAgICAgU3RyaW5nIG5hbWU7CiAg
ICAgU3RyaW5nIHR5cGU7Ci0gICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1l
T3ZlcnJpZGUsIG5hbWUsIHR5cGUpOworICAgIFN0cmluZyBlZmZlY3RpdmVQYXRoID0gIXJlcGxh
Y2VtZW50UGF0aC5pc051bGwoKSA/IHJlcGxhY2VtZW50UGF0aCA6IHBhdGg7CisgICAgY29tcHV0
ZU5hbWVBbmRDb250ZW50VHlwZShlZmZlY3RpdmVQYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5
cGUpOwogCiAgICAgYXV0byBpbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJM
KCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRl
cm5hbFVSTCwgcGF0aCwgdHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCB0eXBlKTsK
IAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdU
Rk1vdmUodHlwZSksIFN0cmluZyB7IHBhdGggfSwgV1RGTW92ZShuYW1lKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSks
IFN0cmluZyB7IGVmZmVjdGl2ZVBhdGggfSwgV1RGTW92ZShuYW1lKSkpOwogfQogCiBGaWxlOjpG
aWxlKFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggZDJmOTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3
NDFmODNlZmY3OC4uODc5NzRkMDAzYzM5ZGNlNWQ4MzRmYzk3ZjA0NjhmYjMyZGVkMzI4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAg
ICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBh
dXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQg
ZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBhdGguCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50UGF0aCA9IHsgfSwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOwogCiAgICAg
Ly8gQ3JlYXRlIGEgRmlsZSB1c2luZyB0aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KICAgICBz
dGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0
VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9w
ZXJ0eUJhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwCmluZGV4IDVlMWQ0YzAwYTljMDY4YzgwMzFjMjRjY2Q2MGFiMjBhNmFmYTA2MGIu
LjExM2YyZTkwNmRiYjU3ZDMwYmNhOWQ5NTUyZWNlYzM1NTZiM2IzYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTUg
KzY0LDE2IEBAIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2lu
TWFwKCkKICAgICByZXR1cm4gKm1hcDsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7CisgICAgU3RyaW5nIGVmZmVjdGl2ZVBhdGggPSAhcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgp
ID8gcmVwbGFjZW1lbnRQYXRoIDogcGF0aDsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAgIGJsb2JSZWdp
c3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNy
ZWF0ZShlZmZlY3RpdmVQYXRoKSwgcGF0aCwgY29udGVudFR5cGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgp
LCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5p
c29sYXRlZENvcHkoKV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9i
VVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBl
KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGVmZmVj
dGl2ZVBhdGggPSBlZmZlY3RpdmVQYXRoLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29s
YXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewor
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpjcmVhdGUoZWZmZWN0aXZlUGF0aCksIHBhdGgsIGNvbnRlbnRUeXBlKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuaAppbmRleCBhOWM3OWZlMjI5MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMy
Li5lY2I3NGYxN2MwNmRiZWJjNzM0OTgzZGIzOTIxZGM5ODk4NDE1OTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAs
NyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZl
Y3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXgg
MWFmOWViMjJjNGE2NDM1MjE0MWU3MTk1NmU1MmE2Y2ZmNjJhMGY0Ny4uZjAwOTg5ZGQwM2ZjMTI5
NTYzYTg4NTQ4NmQ1YTU3YWE3YWQyMGQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgUmVm
PEZpbGVMaXN0PiBjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzKQogICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGluZm8u
cGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAg
ICAgICAgYXBwZW5kRGlyZWN0b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUoaW5mby5wYXRoKSwgZmlsZU9iamVjdHMpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgaW5mby5kaXNw
bGF5TmFtZSkpOworICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZShp
bmZvLnBhdGgsIHsgfSwgaW5mby5kaXNwbGF5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gRmls
ZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVPYmplY3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcAppbmRleCBmM2M3MDk4Y2JmNWU0YjgyMGViNjgwZjdjYzQyNjU1ZjBi
OWUyZDZkLi43ZDU0ZjU5ZTAyYzYxYjNjZTkzNjIyYzZlYjViMTFkMDNhNmZlYmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIEZp
bGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZv
PiYgcGF0aHMsIGNvbnN0CiAKICAgICBpZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsKICAgICAg
ICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5mbykgewotICAgICAgICAg
ICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5kaXNwbGF5TmFt
ZSk7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJ
bmZvLnJlcGxhY2VtZW50UGF0aCwgZmlsZUluZm8uZGlzcGxheU5hbWUpOwogICAgICAgICB9KTsK
ICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVz
KSksIGljb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hv
b3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdiY2Y0NTM4ZmVkODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4u
ZDE0NGQxYWMzMmVjNWVhNmIxN2Y4ODBjMWNhMmUxMjBhZmUzMzk5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEZpbGVDaG9v
c2VyOjpjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgY2hvb3NlRmlsZXMo
ZmlsZW5hbWVzKTsKIH0KIAotdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK3ZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBs
YWNlbWVudE5hbWVzKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWxlZ2FudC4gV2Ugc2hv
dWxkIG5vdCBiZSBsb29raW5nIGF0IHNldHRpbmdzIGhlcmUuCiAgICAgaWYgKG1fc2V0dGluZ3Mu
c2VsZWN0ZWRGaWxlcyA9PSBmaWxlbmFtZXMpCkBAIC02OCw4ICs2OCw4IEBAIHZvaWQgRmlsZUNo
b29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKLSAg
ICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogZmlsZW5hbWVzKQotICAgICAgICBmaWxlcy5hcHBlbmQo
RmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gZmlsZW5hbWVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgZmlsZXMuYXBw
ZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWVzW2ldLCBpIDwgcmVwbGFjZW1lbnROYW1l
cy5zaXplKCkgPyByZXBsYWNlbWVudE5hbWVzW2ldIDogbnVsbFN0cmluZygpKSk7CiAgICAgbV9j
bGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVD
aG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0Mzg3OTVhNzZmZWM5YTNkYmY3YzZhMDg0ZWEwODg5NS4u
ODc3OTM0MjZkY2E0YTQxNjU4NjI1ZDNlYzBhNjZmMmY3ZTUyNDA2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC0yOSwyNSArMjksMTkgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyU2V0
dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gTWVkaWFDYXB0dXJlVHlwZSB7
Ci0gICAgTWVkaWFDYXB0dXJlVHlwZU5vbmUsCi0gICAgTWVkaWFDYXB0dXJlVHlwZVVzZXIsCi0g
ICAgTWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50Ci19OwotCiBjbGFzcyBGaWxlQ2hvb3NlcjsK
IGNsYXNzIEljb247CiAKIHN0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKLSAgICBGaWxlQ2hv
b3NlckZpbGVJbmZvKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSA9IFN0cmluZygpKQorICAgIEZpbGVDaG9vc2VyRmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSA9IHsgfSkKICAgICAgICAgOiBwYXRoKHBhdGgpCisgICAgICAgICwgcmVwbGFjZW1l
bnRQYXRoKHJlcGxhY2VtZW50UGF0aCkKICAgICAgICAgLCBkaXNwbGF5TmFtZShkaXNwbGF5TmFt
ZSkKICAgICB7CiAgICAgfQpAQCAtNTgsMjAgKzUyLDEwIEBAIHN0cnVjdCBGaWxlQ2hvb3NlckZp
bGVJbmZvIHsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcgcGF0aDsKKyAgICBjb25zdCBTdHJp
bmcgcmVwbGFjZW1lbnRQYXRoOwogICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZTsKIH07CiAK
LXN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzIHsKLSAgICBib29sIGFsbG93c0RpcmVjdG9yaWVz
IHsgZmFsc2UgfTsKLSAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OwotICAg
IFZlY3RvcjxTdHJpbmc+IGFjY2VwdE1JTUVUeXBlczsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2Nl
cHRGaWxlRXh0ZW5zaW9uczsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOwotI2lm
IEVOQUJMRShNRURJQV9DQVBUVVJFKQotICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJl
VHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07Ci0jZW5kaWYKLX07Ci0KIGNsYXNzIEZpbGVD
aG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgp
ID0gZGVmYXVsdDsKQEAgLTg2LDggKzcwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXRocyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9vc2VGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hvb3NlRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHJlcGxhY2VtZW50TmFtZXMgPSB7IH0pOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ly8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0IGlkZW50aWNhbCB0byBGaWxlQ2hvb3Nl
cjo6Y2hvb3NlRmlsZXMoKS4gV2Ugc2hvdWxkIG1lcmdlIHRoaXMKICAgICAvLyBmdW5jdGlvbiB3
aXRoIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBMQVRG
T1JNKElPU19GQU1JTFkpLWd1YXJkLgpAQCAtMTA3LDE2ICs5MSwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsKLSAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBl
LAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlTm9u
ZSwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZVVz
ZXIsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVF
bnZpcm9ubWVudAotICAgID47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4
OTZjYWJhMGFkNzk0ZWVlMTZjOWU5MjI3MGM2MjdmZTc5YWZjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3NlclNldHRpbmdzLmgiCisK
KyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIFN0cmluZyBtaW1lVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bikKK3sKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24oZXh0ZW5zaW9uLnN0YXJ0c1dpdGgoJy4nKSA/IGV4dGVuc2lvbi5yaWdodChleHRlbnNpb24u
bGVuZ3RoKCkgLSAxKSA6IGV4dGVuc2lvbik7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZFVuaXF1
ZVN0cmluZ3MoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MsIFZlY3RvcjxTdHJpbmc+JiBh
bGxTdHJpbmdzKQoreworICAgIGZvciAoYXV0byYgc3RyaW5nIDogc3RyaW5ncykKKyAgICAgICAg
YWxsU3RyaW5ncy5hcHBlbmRJZk5vdENvbnRhaW5zKHN0cmluZyk7Cit9CisKK3N0YXRpYyB2b2lk
IGFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVu
c2lvbnMsIFZlY3RvcjxTdHJpbmc+JiBhbGxNSU1FVHlwZXMpCit7CisgICAgZm9yIChhdXRvJiBl
eHRlbnNpb24gOiBleHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBtaW1lVHlw
ZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVChtaW1lVHlwZS5jb250YWlu
cygnLycpKTsKKyAgICAgICAgYWxsTUlNRVR5cGVzLmFwcGVuZElmTm90Q29udGFpbnMobWltZVR5
cGUpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWltZVR5cGVzLCBWZWN0b3I8U3RyaW5nPiYgYWxsRXh0
ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogbWltZVR5cGVzKSB7CisgICAg
ICAgIEFTU0VSVChtaW1lVHlwZS5jb250YWlucygnLycpKTsKKyAgICAgICAgYXBwZW5kVW5pcXVl
U3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5
cGUpLCBhbGxFeHRlbnNpb25zKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHNob3VsZEFwcGVu
ZEFsbEltYWdlc0V4dGVuc2lvbnMoVmVjdG9yPFN0cmluZz4mIGFsbEV4dGVuc2lvbnMpCit7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhbGxFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8g
bWltZVR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICBpZiAo
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkTUlNRVR5cGVz
KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOworCisgICAg
YXBwZW5kVW5pcXVlU3RyaW5ncyh0aGlzLT5hY2NlcHRNSU1FVHlwZXMsIGFsbG93ZWRNSU1FVHlw
ZXMpOworICAgIGFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnModGhpcy0+YWNjZXB0RmlsZUV4
dGVuc2lvbnMsIGFsbG93ZWRNSU1FVHlwZXMpOworCisgICAgaWYgKCF0aGlzLT50cmFuc2NvZGVE
aXNhbGxvd2VkSW1hZ2VzKSB7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVn
aXN0cnk6OmdldEV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKCJpbWFnZS8qIl9zKTsKKyAg
ICAgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhleHRlbnNpb25zLCBhbGxvd2VkTUlN
RVR5cGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlczsKK30KKworVmVj
dG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkg
Y29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisKKyAg
ICBhcHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKHRoaXMtPmFjY2VwdE1JTUVUeXBlcywgYWxs
b3dlZEZpbGVFeHRlbnNpb25zKTsKKyAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2Vw
dEZpbGVFeHRlbnNpb25zLCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpOworCisgICAgaWYgKHNob3Vs
ZEFwcGVuZEFsbEltYWdlc0V4dGVuc2lvbnMoYWxsb3dlZEZpbGVFeHRlbnNpb25zKSkgeworICAg
ICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9y
V2lsZGNhcmRNSU1FVHlwZSgiaW1hZ2UvKiJfcyk7CisgICAgICAgIGFwcGVuZFVuaXF1ZVN0cmlu
Z3MoZXh0ZW5zaW9ucywgYWxsb3dlZEZpbGVFeHRlbnNpb25zKTsKKyAgICB9CisKKyAgICByZXR1
cm4gYWxsb3dlZEZpbGVFeHRlbnNpb25zOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY5Y2Q0MDQ2MDFlNDcyYzdj
MTk1NjlmZmI0YWMzYWJhZDFhZjJmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaApAQCAtMCwwICsxLDcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gTWVkaWFDYXB0dXJlVHlwZSB7CisgICAgTWVkaWFDYXB0dXJlVHlwZU5vbmUsCisgICAg
TWVkaWFDYXB0dXJlVHlwZVVzZXIsCisgICAgTWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50Cit9
OworCitzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5ncyB7CisgICAgYm9vbCBhbGxvd3NEaXJlY3Rv
cmllcyB7IGZhbHNlIH07CisgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzIHsgZmFsc2UgfTsK
KyAgICBib29sIHRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMgeyBmYWxzZSB9OworICAgIFZlY3Rv
cjxTdHJpbmc+IGFjY2VwdE1JTUVUeXBlczsKKyAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxl
RXh0ZW5zaW9uczsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOworI2lmIEVOQUJM
RShNRURJQV9DQVBUVVJFKQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7
IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07CisjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPFN0cmluZz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlLAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlTm9uZSwKKyAg
ICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZVVzZXIsCisg
ICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9u
bWVudAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVkZTJhZGIwMWExNTUwZTJm
ZTUwZDUwNjQzYjNmYTNmLi44ZGU1NDQxMzQ4YTZjNmI5YWNmNzA0ZDA1MDI4MmY4YmZjNDE3ZTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC01OCwx
MSArNTgsMTIgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUg
c2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdvcmQgImdldCIgaW4gdGhlIG5hbWVzIG9mIHRo
ZXNlIGZ1bmN0aW9ucy4KICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0RXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+
IGdldEV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JN
SU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
dHJpbmcgZ2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bik7CiAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldE1lZGlhTUlNRVR5cGVzRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgZ2V0TUlN
RVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+
IGNyZWF0ZU1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAKQEAgLTc0LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVk
SW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAv
LyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29k
ZWQuCi0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rpbmco
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9y
IGJlaW5nIGxvYWRlZCBhcyBhIEphdmFTY3JpcHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQppbmRleCAyYjNmZTA1NTg0Zjk2NGUwOTk3
Njg0NmFhMTI5ODA3NmVhNGJlMTUwLi4yODNmNjA3MDgxY2IyZmNjZTIzMDFkYjI4OTVkNzg2NTBl
NmJjNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlw
ZVJlZ2lzdHJ5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlN
RVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0yNywxMSArMjcsNTkgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogCisjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL0NvcmVTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTEZpbGVU
eXBlTWFwcGluZ3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxTdHJp
bmc+PiYgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkKK3sKKyAgICBzdGF0aWMgYXV0byBleHRl
bnNpb25zRm9yTUlNRVR5cGVNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBI
YXNoTWFwPFN0cmluZywgSGFzaFNldDxTdHJpbmc+PiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7
CisKKyAgICAgICAgYXV0byBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSA9IFsmXShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSB7CisgICAgICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5lbnN1cmUodHlwZSwgW10oKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U3RyaW5nPigpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFkZChleHRlbnNpb24pOwor
ICAgICAgICB9OworCisgICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlID0gWyZd
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQ0ZBcnJheVJlZiYgZXh0ZW5zaW9ucykgeworICAg
ICAgICAgICAgYXV0byB3aWxkY2FyZE1JTUVUeXBlID0gbWFrZVN0cmluZyh0eXBlLnNwbGl0KCcv
JykuZmlyc3QoKSwgIi8qIl9zKTsKKworICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBj
b3VudCA9IENGQXJyYXlHZXRDb3VudChleHRlbnNpb25zKTsgaSA8IGNvdW50OyBpKyspIHsKKwor
ICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGV4dGVuc2lvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZXh0ZW5zaW9ucywgaSkpOworICAg
ICAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8gd2lsZGNhcmRNSU1FVHlw
ZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS8qIgorICAgICAgICAgICAgICAgIGFk
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKHdpbGRjYXJkTUlNRVR5cGUsIGV4dGVuc2lvbik7CisgICAg
ICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byBpdHNtaW1lVHlwZSwgZm9yIGV4YW1wbGUg
YWRkICJwbmciIHRvICJpbWFnZS9wbmciCisgICAgICAgICAgICAgICAgYWRkRXh0ZW5zaW9uRm9y
TUlNRVR5cGUodHlwZSwgZXh0ZW5zaW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gYWxsVVRJcyA9IGFkb3B0Q0YoX1VUQ29weURl
Y2xhcmVkVHlwZUlkZW50aWZpZXJzKCkpOworCisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwg
Y291bnQgPSBDRkFycmF5R2V0Q291bnQoYWxsVVRJcy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7
CisgICAgICAgICAgICBhdXRvIHV0aSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGFsbFVUSXMuZ2V0KCksIGkpKTsKKyAgICAgICAgICAgIGF1dG8gdHlw
ZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0Ns
YXNzTUlNRVR5cGUpKTsKKyAgICAgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29w
eUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Cisg
ICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMgfHwgIUNGQXJyYXlHZXRDb3VudChleHRlbnNpb25z
LmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGFkZEV4dGVu
c2lvbnNGb3JNSU1FVHlwZSh0eXBlLmdldCgpLCBleHRlbnNpb25zLmdldCgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CisgICAgfSgpKTsK
KworICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7Cit9CisKIFN0cmluZyBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKIHsKICAgICByZXR1cm4gW1tOU1VSTEZpbGVUeXBlTWFwcGluZ3Mgc2hhcmVkTWFwcGlu
Z3NdIE1JTUVUeXBlRm9yRXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4dGVuc2lvbl07CkBAIC00Miw2
ICs5MCwxNyBAQCBWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25z
Rm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiBtYWtlVmVjdG9yPFN0
cmluZz4oW1tOU1VSTEZpbGVUeXBlTWFwcGluZ3Mgc2hhcmVkTWFwcGluZ3NdIGV4dGVuc2lvbnNG
b3JNSU1FVHlwZTp0eXBlXSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6
OmdldEV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sK
KyAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zOworCisgICAgYXV0byBpdGVyID0gZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlTWFwKCkuZmluZCh0eXBlKTsKKyAgICBpZiAoaXRlciAhPSBleHRlbnNp
b25zRm9yTUlNRVR5cGVNYXAoKS5lbmQoKSkKKyAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmRSYW5n
ZShpdGVyLT52YWx1ZS5iZWdpbigpLCBpdGVyLT52YWx1ZS5lbmQoKSk7CisKKyAgICByZXR1cm4g
ZXh0ZW5zaW9uczsKK30KKwogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4
dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICAvLyBTeXN0ZW0g
UHJldmlld3MgYWNjZXB0IHNvbWUgbm9uLXN0YW5kYXJkIE1JTUVUeXBlcywgc28gd2UgY2FuJ3Qg
cmVseSBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IDVhYmZkNzVjYjQ5NDU2ZTQyZDM5ZDQ0ZDNi
YzIyNTlhYWZmYTUyMjYuLmViYWI2MTgyZTNlYTQ4OWNjZDgyMjQ2NmE2M2FiNGUyNGVkMGU4NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAgLTMyLDE3ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNv
bnN0IFN0cmluZyYgcGF0aCkKK0Jsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgp
CiAgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fcmVwbGFjZW1lbnRQYXRoKHJlcGxhY2VtZW50
UGF0aCkKIHsKIH0KIAogQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVmZXJl
bmNlKCkKIHsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBpZiAoIW1fcmVwbGFj
ZW1lbnRQYXRoLmlzTnVsbCgpKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcmVw
bGFjZW1lbnRQYXRoKTsKLSNlbmRpZgogfQogCiBjb25zdCBTdHJpbmcmIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTo6cGF0aCgpCkBAIC01MCwxMCArNDksOSBAQCBjb25zdCBTdHJpbmcmIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6cGF0aCgpCiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAg
aWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCkKICAgICAgICAgZ2VuZXJhdGVSZXBs
YWNlbWVudEZpbGUoKTsKLQorI2VuZGlmCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIG1fcmVwbGFjZW1lbnRQYXRoOwotI2VuZGlmCiAKICAgICBy
ZXR1cm4gbV9wYXRoOwogfQpAQCAtMTAxLDYgKzk5LDEyIEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpCiAgICAgICAgIHJldHVybjsKICNl
bmRpZgogCisgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkgeworICAgICAgICBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVw
bGFjZW1lbnRQYXRoKTsKKyAgICAgICAgaWYgKCFtZXRhZGF0YSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCiAgICAgbV9zaXplID0gbWV0YWRhdGEudmFsdWUoKS5sZW5ndGg7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5oCmluZGV4IDY1ODgyOWQwN2ZjZmJkNmIwMmEyMGUxY2IwMWZkYzlkNmRj
YzA3YzkuLjhmY2JlOGMxMWYyMTM0OGNlZmU0OGVkMDI2NjVjNTVkNjM2OTY3NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoLCByZXBsYWNlbWVudFBhdGgp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVSZWZlcmVuY2UoKTsKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXZva2VGaWxlQWNjZXNzKCk7
CiAKIHByb3RlY3RlZDoKLSAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBw
YXRoKTsKKyAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCk7CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKEZJTEVf
UkVQTEFDRU1FTlQpCkBAIC02MCw4ICs2MCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0
cmluZyBtX3BhdGg7Ci0jaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgU3RyaW5nIG1f
cmVwbGFjZW1lbnRQYXRoOworI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGJvb2wg
bV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBtX3NpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAppbmRleCBmZTkxZTgxYWFkNDMwMmUwM2RiOTY3YTQ2
YTMwNmFjNmQ0MmNjZTU1Li40YjE1Y2RkYmUwZTRjNzZlOGY5MmIwMDJkNjJhOWFiMDJiN2E2YmEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5IHsKIHB1
YmxpYzoKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3Bl
Y2lmaWVkIGZpbGUuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
VVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVS
TCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBV
UkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBkYXRhLgogICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IDZmMGNlNjQ5ZDhiMTdmZWY4ZDY2ZWYxM2Q2M2JjNWZkZTY4YzUyNGMuLjg5MzE4OWNmYTA3ODlk
NTFjNzdhNWUzMmI0NWQzZDViM2IyZjRlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC03MzcsNyArNzM3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
YWxsQ29va2llc0RlbGV0ZWQoKQogCiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAg
TkVUV09SS19QUk9DRVNTX01FU1NBR0VfQ0hFQ0soIXVybC5pc0VtcHR5KCkpOwogCkBAIC03NDUs
NyArNzQ1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJG
aWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3QKICAgICBpZiAoIXNlc3Npb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmls
ZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhh
bmRsZSkpKSwgY29udGVudFR5cGUpOworICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKHBhdGgsIHJlcGxhY2VtZW50UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSkpLCBjb250ZW50VHlwZSk7CiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUgogICAgIGlm
ICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJhY2tlZFBh
dGgsIG51bGxwdHIpLCBjb250ZW50VHlwZSk7CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgp
LCBjb250ZW50VHlwZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5k
ZXggZTgyMzAwMDllYzk2YmZlZWYyMDk4YTFhZWVlN2EyN2FjMzk4YzNkYS4uMThjY2VkOTdjNjUz
MmEzNmE3MGEzMWRkNzFkNmFmYmFmOGQ2NmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApA
QCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSYXdDb29raWUoY29uc3Qg
V2ViQ29yZTo6Q29va2llJik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJD
b3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDIyMDBkNGM0YWQyMGNmNmMyZjFhNWI3YTQwMzZiMDY3NDgwMTQzZWUuLjdiODIy
NTIzMjcwMGFhNjg4YzlkODRhYWMwNDIwYzQ5N2I2ZTVjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDYsNyArNDYsNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVW5zdWJz
Y3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhIYXNoU2V0PFN0cmluZz4gaG9zdHMp
CiAjZW5kaWYKIAotICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgs
IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5n
IGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBh
dGgsIFN0cmluZyByZXBsYWNlbWVudFBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVyQmxv
YlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5n
IGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoVVJMIHVybCwgVVJMIHNy
Y1VSTCkKICAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBV
Ukwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjY5NjAxY2VmMGVmYzkzZGJlZDNl
MDUzZDUzNDA4MTQ3YmUzZWQ5Ny4uY2ZmYzk5ZjgyYjA0NGM0OWIwNTAyYmU5NWRjYzhjYjg5OTFj
MjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgQmxvYlJlZ2lzdHJ5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRl
QmxvYlJlZ2lzdHJ5KCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBjbGFz
cyBFbXB0eUJsb2JSZWdpc3RyeSA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewotICAg
ICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
VVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFy
dD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCmluZGV4IGFmMDhmNmQ1ZWZiNGFhYTg2YjEw
NGE0OWM5ODU1ZjIwNzI1YjY4MDguLjJlNjhhMGM5MTNiMTBjMDgxMDRhYTNiOTRlM2I0MDU4Nzky
NGZlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCkBAIC0y
Niw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNHVXRpbGl0aWVz
LmgiCiAKKyNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01J
TUVUeXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VUSVV0aWxpdGllcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBwYWludEltYWdlKENHQ29udGV4dFJlZiBjb250
ZXh0LCBDR0ltYWdlUmVmIGltYWdlLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBDR1BvaW50IGRlc3Rp
bmF0aW9uLCBDR1JlY3Qgc291cmNlKQpAQCAtNDYsNCArNTIsODIgQEAgdm9pZCBwYWludEltYWdl
KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0ltYWdlUmVmIGltYWdlLCBDR0Zsb2F0IHNjYWxlRmFj
dG9yLCBDR1AKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCitTdHJp
bmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQoreworICAgIEFTU0VSVChtaW1lVHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iX3MpKTsKKwor
ICAgIC8vIENyZWF0ZSB0aGUgaW1hZ2Ugc291cmNlLgorICAgIGF1dG8gc291cmNlVVJMID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkp
OworICAgIGF1dG8gc291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChz
b3VyY2VVUkwuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBpZiAoIXNvdXJjZSkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJTb3VyY2UgcGF0aCBpcyBub3QgYSB2YWxp
ZCBpbWFnZS4iKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorCisgICAgYXV0byBzb3Vy
Y2VVVEkgPSBTdHJpbmcoQ0dJbWFnZVNvdXJjZUdldFR5cGUoc291cmNlLmdldCgpKSk7CisgICAg
YXV0byByZXBsYWNlbWVudFVUSSA9IFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7
CisgICAgaWYgKHNvdXJjZVVUSSA9PSByZXBsYWNlbWVudFVUSSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJTb3VyY2UgaW1hZ2UgYWxyZWFkeSBoYXMgdGhlIHJl
cGxhY2VtZW50IE1JTUUgdHlwZS4iKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorCisg
ICAgLy8gQ29tcHV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgbmFtZSBwcmVmaXggYW5kIGZpbGUgZXh0
ZW5zaW9uLgorICAgIGF1dG8gY29tcG9uZW50cyA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShwYXRoKS5zcGxpdCgnLicpOworICAgIGF1dG8gZXh0ZW5zaW9uID0gV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOwor
ICAgIGF1dG8gcHJlZml4ID0gbWFrZVN0cmluZyhjb21wb25lbnRzLmZpcnN0KCksICJfIl9zKTsK
KyAgICBhdXRvIHN1ZmZpeCA9IG1ha2VTdHJpbmcoIi4iX3MsIGV4dGVuc2lvbik7CisKKyAgICAv
LyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgcmVwbGFjZW1lbnRGaWxlSGFuZGxlOworICAgIFN0cmluZyByZXBsYWNlbWVudFBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShwcmVmaXgsIHJlcGxhY2VtZW50RmlsZUhh
bmRsZSwgc3VmZml4KTsKKyAgICBpZiAocmVwbGFjZW1lbnRGaWxlSGFuZGxlID09IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEX1dJVEhfTUVTU0FHRSgiUmVwbGFjZW1lbnQgaW1hZ2UgY2FuJ3QgYmUgY3JlYXRlZC4iKTsK
KyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIHRoZSBkYXRhIGNv
bnN1bWVyLgorICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgW10odm9p
ZCAqaW5mbywgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7Cisg
ICAgICAgIGF1dG8gcGxhdGZvcm1GaWxlSGFuZGxlID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUocGxhdGZvcm1GaWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
YnVmZmVyKSwgY291bnQpOworICAgIH0sIG51bGxwdHIgfTsKKworICAgIC8vIENyZWF0ZSB0aGUg
aW1hZ2UgcmVwbGFjZW1lbnQuCisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29u
c3VtZXJDcmVhdGUoJnJlcGxhY2VtZW50RmlsZUhhbmRsZSwgJmNhbGxiYWNrcykpOworICAgIGF1
dG8gcmVwbGFjZW1lbnQgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRh
Q29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHJlcGxhY2VtZW50VVRJLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDEsIG51bGxwdHIpKTsKKworICAgIC8vIFdyaXRlIHRoZSBzb3VyY2UgaW1hZ2UgdG8g
dGhlIHJlcGxhY2VtZW50IGltYWdlLgorICAgIHNpemVfdCBpbmRleCA9IENHSW1hZ2VTb3VyY2VH
ZXRQcmltYXJ5SW1hZ2VJbmRleChzb3VyY2UuZ2V0KCkpOworICAgIENHSW1hZ2VEZXN0aW5hdGlv
bkFkZEltYWdlRnJvbVNvdXJjZShyZXBsYWNlbWVudC5nZXQoKSwgc291cmNlLmdldCgpLCBpbmRl
eCwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUocmVwbGFjZW1lbnQu
Z2V0KCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXBsYWNlbWVudEZpbGVIYW5kbGUp
OworCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aDsKK30KKworVmVjdG9yPFN0cmluZz4gdHJh
bnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVwbGFjZW1l
bnRQYXRoczsKKyAgICBTdHJpbmcgcHJlZmVycmVkRW5jb2RpbmdNSU1FVHlwZTsKKyAgICAKKyAg
ICBmb3IgKGF1dG8gbWltZVR5cGUgOiBhbGxvd2VkTUlNRVR5cGVzKSB7CisgICAgICAgIGlmIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyhtaW1lVHlwZSkpIHsKKyAgICAgICAgICAgIHByZWZlcnJlZEVuY29kaW5nTUlNRVR5cGUg
PSBtaW1lVHlwZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKHByZWZlcnJlZEVuY29kaW5nTUlNRVR5cGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBy
ZXBsYWNlbWVudFBhdGhzOworCisgICAgZm9yIChhdXRvJiBwYXRoIDogcGF0aHMpIHsKKyAgICAg
ICAgYXV0byBtaW1lVHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yUGF0aChwYXRoKTsKKyAgICAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuY29udGFpbnMobWlt
ZVR5cGUpKQorICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy5hcHBlbmQobnVsbFN0cmluZygp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy5hcHBlbmQodHJh
bnNjb2RlSW1hZ2UocGF0aCwgcHJlZmVycmVkRW5jb2RpbmdNSU1FVHlwZSkpOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgKaW5kZXggODUxZDE4MWE4
ZmM3NTczYzkzMGNmYzYwM2IwZjQxNDI4NzQ3YjIyZC4uOTVkYTZkOTM3Nzk4YjJjYTI5MTdhODYw
ZTZmMTUwY2YyMjE1ZmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9D
R1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMu
aApAQCAtMjksNiArMjksOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgcGFpbnRJbWFn
ZShDR0NvbnRleHRSZWYsIENHSW1hZ2VSZWYsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQg
ZGVzdGluYXRpb24sIENHUmVjdCBzb3VyY2UpOworU3RyaW5nIHRyYW5zY29kZUltYWdlKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitWZWN0b3I8U3RyaW5nPiB0
cmFuc2NvZGVJbWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAKaW5kZXggZmM3NGI2MDE3M2M1NTI1OTBi
NTRlMzQwYzY2YWUxZmEzNjg0NTcwYS4uOWE1NmUzOWI5MjZiOTY2MjQ1ZDY5YjU3OTIyM2QxMDFm
MDU1ZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcApAQCAtMzAsOCAr
MzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJv
eEV4dGVuc2lvbikKLSAgICA6IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKQorQmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24p
CisgICAgOiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCwgcmVwbGFjZW1lbnRQYXRoKQogICAg
ICwgbV9zYW5kYm94RXh0ZW5zaW9uKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbikpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaAppbmRleCA3NWE1ZDRkMGNiYmVjMDg1YWZkZGIz
OGZlYmI1MzNlNzM2NDA2MzI2Li43YjgzMjlmMjI5YTU1ZmQ0ZGJjM2M0NDY4Mzc5YmIzMWJmMTAz
NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTM0LDEzICszNCwxMyBA
QCBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwogCiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBz
YW5kYm94RXh0ZW5zaW9uKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9
IHsgfSwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbiA9IG51bGxw
dHIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24p
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uKHBhdGgsIHJlcGxhY2VtZW50UGF0aCwgV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uKSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPiYmKTsKKyAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CiAgICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckZpbGVB
Y2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAppbmRleCA4NTFlYmY1YzAzOWU3YjI4OTE5YWY5
MTBiMDJmZWEwMGNlZWVkZjQ3Li5kMzVhNzRhODdhYTBiODUyZjQwODc0NjFkN2M4NTI0ZGQ2YjBl
MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5Q
YW5lbFBhcmFtZXRlcnMuY3BwCkBAIC01OCwxMiArNTgsMTUgQEAgUmVmPEFQSTo6QXJyYXk+IE9w
ZW5QYW5lbFBhcmFtZXRlcnM6OmFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3QKICAgICByZXR1
cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0
ZW5zaW9ucyk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLVdlYkNvcmU6Ok1lZGlh
Q2FwdHVyZVR5cGUgT3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSgpIGNvbnN0
CitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZTsKKyAgICBy
ZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hbGxvd2VkTUlN
RVR5cGVzKCkpOworfQorCitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWxs
b3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3Jl
YXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSk7CiB9Ci0j
ZW5kaWYKIAogUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OnNlbGVjdGVkRmls
ZU5hbWVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCmluZGV4IDczMGU1ZDVlZWZmMmJhMGJlNDg5NDdiMGQ3
OTdlNjMxNWMzMjZiOTEuLmIyZTA4YmU5ZDUwMTljOGVjZjg3NTJmZDdhNzI5MjRmMTAyMzY1YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuaApAQCAtNDIsOSArNDIsMTMgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dNdWx0
aXBsZUZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVz
OyB9CiAgICAgUmVmPEFQSTo6QXJyYXk+IGFjY2VwdE1JTUVUeXBlcygpIGNvbnN0OwogICAgIFJl
ZjxBUEk6OkFycmF5PiBhY2NlcHRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0OworICAgIFJlZjxBUEk6
OkFycmF5PiBhbGxvd2VkTUlNRVR5cGVzKCkgY29uc3Q7CisgICAgUmVmPEFQSTo6QXJyYXk+IGFs
bG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBzZWxlY3Rl
ZEZpbGVOYW1lcygpIGNvbnN0OworICAgIGJvb2wgdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MudHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlczsgfQor
ICAgIHZvaWQgc2V0VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyhib29sIGZsYWcpIHsgbV9zZXR0
aW5ncy50cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzID0gZmxhZzsgfQogI2lmIEVOQUJMRShNRURJ
QV9DQVBUVVJFKQotICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlw
ZSgpIGNvbnN0OworICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZTsgfQogI2VuZGlm
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQppbmRleCBkOTAwZjllOGQ2NzU0MWNiOGMy
OWVkNDI4YTFlOWIwMDhiMTQ4ODIzLi43YjI5OWM5YmEyY2RkZTlkNjFmMDljOWZjNWFjZjU0YWFj
ZWYwNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KQEAgLTI1LDYwICsyNSwxMSBAQAogCiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLT3BlblBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmgi
Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oPgogCiAjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKIAotc3RhdGljIE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFw
KCkKLXsKLSAgICBzdGF0aWMgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBhdXRvIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCA9
IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGF1
dG8gYWxsVVRJcyA9IGFkb3B0Q0YoX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkpOwot
Ci0gICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUgPSBeKE5TU3RyaW5nICptaW1l
VHlwZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25z
Rm9yTUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVdKQotICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnNGb3JNSU1FVHlwZU1hcC5nZXQoKVttaW1lVHlwZV0gPSBbTlNNdXRhYmxlU2V0IHNldF07Ci0g
ICAgICAgICAgICBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSBhZGRP
YmplY3Q6ZXh0ZW5zaW9uXTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIGFkZEV4dGVuc2lv
bnNGb3JNSU1FVHlwZSA9IF4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0FycmF5PE5TU3RyaW5nICo+
ICpleHRlbnNpb25zKSB7Ci0gICAgICAgICAgICBhdXRvIHdpbGRjYXJkTUlNRVR5cGUgPSBbW21p
bWVUeXBlIGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0cmluZzpAIi8iXVswXSBzdHJpbmdCeUFwcGVu
ZGluZ1N0cmluZzpAIi8qIl07Ci0KLSAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lv
biBpbiBleHRlbnNpb25zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNp
b24gdG8gd2lsZGNhcmRNSU1FVHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS8q
IgotICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKHdpbGRjYXJkTUlNRVR5
cGUsIGV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byBpdHNt
aW1lVHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS9wbmciCi0gICAgICAgICAg
ICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUsIGV4dGVuc2lvbik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChhbGxVVElzLmdldCgpKTsgaSA8IGNvdW50OyArK2kpIHsKLSAg
ICAgICAgICAgIGF1dG8gdXRpID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoYWxsVVRJcy5nZXQoKSwgaSkpOwotICAgICAgICAgICAgYXV0byBtaW1lVHlw
ZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0Ns
YXNzTUlNRVR5cGUpKTsKLSAgICAgICAgICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdENGKFVUVHlw
ZUNvcHlBbGxUYWdzV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikp
OwotICAgICAgICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKChfX2JyaWRnZSBOU1N0cmlu
ZyAqKW1pbWVUeXBlLmdldCgpLCAoX19icmlkZ2UgTlNBcnJheTxOU1N0cmluZyAqPiAqKWV4dGVu
c2lvbnMuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkIGFkZGl0aW9uYWwgbWlt
ZSB0eXBlcyB3aGljaCBfVVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSBtYXkgbm90IHJl
dHVybi4KLSAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJwIiwgQCJ3
ZWJwIik7Ci0KLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKLSAgICB9
KCkpOwotCi0gICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKS5nZXQoKTsK
LX0KLQotc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNT
dHJpbmcgKm1pbWV0eXBlKQotewotICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFw
KCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKLX0KLQogQGltcGxlbWVudGF0aW9uIFdLT3BlblBh
bmVsUGFyYW1ldGVycwogCiAtIChCT09MKWFsbG93c011bHRpcGxlU2VsZWN0aW9uCkBAIC0xMTQs
NTggKzY1LDE3IEBAIHN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlKE5TU3RyaW5nICptaW1ldHlwZSkKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxv
d2VkRmlsZUV4dGVuc2lvbnMKIHsKLSAgICAvLyBBZ2dyZWdhdGUgZXh0ZW5zaW9ucyBiYXNlZCBv
biBzcGVjaWZpZWQgTUlNRSB0eXBlcy4KLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gW3Nl
bGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
PSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBhdXRvIGFsbG93ZWRGaWxl
RXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKLQotICAg
IFthY2NlcHRlZE1JTUVUeXBlcyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5n
ICptaW1lVHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCogc3RvcCkgewotICAgICAgICBBU1NF
UlQoW21pbWVUeXBlIGNvbnRhaW5zU3RyaW5nOkAiLyJdKTsKLSAgICAgICAgW2FsbG93ZWRGaWxl
RXh0ZW5zaW9ucyB1bmlvblNldDpleHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpXTsKLSAg
ICB9XTsKLQotICAgIGF1dG8gYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkRmlsZUV4
dGVuc2lvbnMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqZXh0ZW5zaW9u
LCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICpzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChbZXh0ZW5z
aW9uIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJy4nKTsKLSAgICAgICAgW2FkZGl0aW9uYWxBbGxv
d2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0OltleHRlbnNpb24gc3Vic3RyaW5nRnJvbUluZGV4
OjFdXTsKLSAgICB9XTsKLSAgICAKLSAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVj
dHNGcm9tQXJyYXk6YWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5nZXQoKV07Ci0gICAg
cmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CisgICAgcmV0dXJuIHdy
YXBwZXIoX29wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsKK30K
KworLSAoQk9PTClfdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcworeworICAgIHJldHVybiBfb3Bl
blBhbmVsUGFyYW1ldGVycy0+dHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcygpOwogfQogCi0tIChO
U0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcworLSAodm9p
ZClfc2V0VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlczooQk9PTClmbGFnCiB7Ci0gICAgYXV0byBh
Y2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAgYXV0byBh
Y2NlcHRlZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdOwot
Ci0gICAgY29uc3RleHByIGF1dG8gQWxsRmlsZXNUaXRsZSA9IEAiQWxsIEZpbGVzIjsKLSAgICBj
b25zdGV4cHIgYXV0byBDdXN0b21GaWxlc1RpdGxlID0gQCJDdXN0b20gRmlsZXMiOwotICAgIAot
ICAgIGlmICghW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVu
c2lvbnMgY291bnRdKQotICAgICAgICByZXR1cm4gQFtBbGxGaWxlc1RpdGxlXTsKLQotICAgIGlm
ICghKFthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVu
c2lvbnMgY291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmls
ZXNUaXRsZV07Ci0KLSAgICBhdXRvIG1pbWVUeXBlID0gW2FjY2VwdGVkTUlNRVR5cGVzIGZpcnN0
T2JqZWN0XTsKLSAgICBhdXRvIHJhbmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07
Ci0gICAgCi0gICAgaWYgKCFyYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZp
bGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwotICAgIAotICAgIGF1dG8gbWltZVR5cGVQcmVmaXgg
PSBbbWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07Ci0gICAgYXV0byBt
aW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRp
b24gKyAxXTsKLSAgICAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpA
IioiXSkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVA
IEZpbGVzIiwgW1ttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdUb0luZGV4OjFdIHVwcGVyY2FzZVN0
cmluZ10sIFttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dLCBBbGxGaWxlc1Rp
dGxlXTsKLQotICAgIGlmIChbbWltZVR5cGVTdWZmaXggbGVuZ3RoXSA8PSA0KQotICAgICAgICBy
ZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW21pbWVUeXBlU3Vm
Zml4IHVwcGVyY2FzZVN0cmluZ10sIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07Ci0K
LSAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgbWltZVR5
cGVTdWZmaXgsIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07CisgICAgX29wZW5QYW5l
bFBhcmFtZXRlcnMtPnNldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMoZmxhZyk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCmluZGV4IDI5ZWU4MTIwZTRhZjFiYWVh
MjJjMDYyNGFjMmUyM2I0ZTFiZDRhZDYuLmM2YTk1MGI3MTE4ZDhjNmU5ZmJhYjVkYjkyN2NkZDlh
ZTg5Mjk1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaApAQCAtMzEsOCArMzEs
OCBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKl9hY2NlcHRlZE1JTUVUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNv
cHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdy
aXRlLCBzZXR0ZXI9X3NldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXM6KSBCT09MIF90cmFuc2Nv
ZGVEaXNhbGxvd2VkSW1hZ2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOwog
CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmlu
ZGV4IDQ5YzcxNDI3ODVlYzI5YjQ0NmZkOTU2OTc4MTk1YTE5N2QzOWI5M2YuLjBhMDFiZDFlNzEw
NGI2ZmZiODNiZmZlMzVmMzQ0ZjE3OWJmYTljMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAKKyNpbXBvcnQgIkFQSUFycmF5LmgiCiAjaW1w
b3J0ICJBUElGcmFtZUluZm8uaCIKICNpbXBvcnQgIkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbXBv
cnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKQEAgLTgyNiw3ICs4MjcsNyBAQCBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJGcmFtZVByb3h5KiB3ZWJGcgogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOikpOwogCi0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmll
dyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJz
KSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIGxpc3RlbmVyID0gV1RGTW92ZShs
aXN0ZW5lcildIChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmll
dzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOndyYXBw
ZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihmcmFtZSkg
Y29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KSwgb3BlblBhbmVsUGFyYW1ldGVycyA9IG1ha2VSZWYoKm9wZW5QYW5lbFBhcmFtZXRlcnMpLCBs
aXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CkBAIC04NDAsNyArODQxLDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVu
T3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnIKICAgICAg
ICAgZm9yIChOU1VSTCAqdXJsIGluIFVSTHMpCiAgICAgICAgICAgICBmaWxlbmFtZXMuYXBwZW5k
KHVybC5wYXRoKTsKIAotICAgICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsK
KyAgICAgICAgbGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcywgb3BlblBhbmVsUGFyYW1l
dGVycy0+YWxsb3dlZE1JTUVUeXBlcygpLT50b1N0cmluZ1ZlY3RvcigpKTsKICAgICB9KS5nZXQo
KV07CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggODU3NDY1
MTVkYTY3ZDE0MmFmN2RmYWQ4OGRlOGE0OGE4M2Y2MWMxMC4uZDE1ZmVlMmZkOTFiMzdlMDczMTk0
NWQ1NGUzYTQzMzM1N2YxMGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKQEAgLTU0LDEyICs1
NCwxMiBAQCB2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVz
KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGZpbAogfQogI2VuZGlmCiAKLXZvaWQgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hv
b3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVz
KTsKKyAgICBtX3BhZ2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVuYW1lcywgYWxs
b3dlZE1JTUVUeXBlcyk7CiB9CiAKIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eTo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAppbmRleCAxZWVjZGNhMTdkYzM4ZGFlOTVlMjg5
Y2FhZjcwODYxY2QwYjc2YzVmLi4zYTk4YTQ0NjM0ZDY5ZDU1OGU4MjZjMGVjYTNjNzY1ZDljODUy
MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6
OkRhdGEqIGljb25JbWFnZURhdGEpOwogI2VuZGlmCi0gICAgdm9pZCBjaG9vc2VGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKKyAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2Vk
TUlNRVR5cGVzID0geyB9KTsKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3YTc0
NzI1NTA5ZGYyYTc2MWJlMTE1MGVhYWU0NmQ0NDZkYzU5Y2I1Li5mYjlmZDIzYjZlY2NiZWE0YWZk
MzA3NzQ1YWIzZGNiYTA2Mzc1YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgorI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCkBAIC02NjgzLDE3ICs2Njg0LDIzIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3Ry
aW5nQW5kSWNvbihjb25zdCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5
cGVzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgYXV0byByZXBsYWNlbWVudFVSTHMgPSB0cmFuc2NvZGVJbWFnZXMoZmlsZVVSTHMsIGFs
bG93ZWRNSU1FVHlwZXMpOworCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICBh
dXRvIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVh
ZE9ubHlIYW5kbGVzRm9yRmlsZXMoIldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwiX3MsIGZpbGVVUkxzKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzYW5kYm94RXh0ZW5zaW9u
RmlsZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmaWxlVVJMcy5zaXplKCk7IGkg
PCBzaXplOyArK2kpCisgICAgICAgIHNhbmRib3hFeHRlbnNpb25GaWxlcy5hcHBlbmQoaSA8IHJl
cGxhY2VtZW50VVJMcy5zaXplKCkgJiYgIXJlcGxhY2VtZW50VVJMc1tpXS5pc051bGwoKSA/IHJl
cGxhY2VtZW50VVJMc1tpXSA6IGZpbGVVUkxzW2ldKTsKKworICAgIGF1dG8gc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JG
aWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgc2FuZGJv
eEV4dGVuc2lvbkZpbGVzKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5k
Ym94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMp
KSk7CiAjZW5kaWYKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGZpbGVVUkxzKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMsIHJlcGxhY2VtZW50VVJMcykpOwogCiAg
ICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBhZTE5NWJkN2UyZjgyNDBkMWU3ZDg4YzdiN2RlMTQyMmE0ZGI5Mjk2Li5i
YTVhZTBkOTFjNWFkNzhmMDg1MTQxYjc2YjZmYzQwZmUzZjEwM2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5kaWYK
LSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzID0g
eyB9KTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogCiAgICAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJh
d2luZ0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiA9IG51bGxwdHIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwCmluZGV4IDhmNDdiOGYwNzBlMWYyOTgzMzQ1MzhkY2E4Y2Y0ZDRlNGEzOTRj
NGIuLjkwM2Y5NDFkNzU4MjdlNzI1NzJlZmI4MjFiNmQyM2VhOWNmYmFkZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmls
ZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAKQEAgLTQ0LDcgKzQ0
LDggQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmUKICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRo
KCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwog
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25I
YW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aCA9IHBh
dGggPT0gZmlsZS0+cGF0aCgpID8gbnVsbFN0cmluZygpIDogZmlsZS0+cGF0aCgpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIHBhdGgsIHJlcGxhY2VtZW50UGF0aCwgZXh0ZW5zaW9u
SGFuZGxlLCBjb250ZW50VHlwZSksIDApOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCA0MDk4NGRiMjdkYWRk
N2Q2NWU5YTUxYWMxNzJkMDU3NzE5MmQ0YTM4Li5lODM3YTY5NjRlMDQ3ZDNhNDViMzIwZWQwMzZi
NmE4YTczMDNmNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxl
QVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIEJsb2JSZWdpc3RyeVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYsIFJlZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25z
dCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsOwogICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkws
IFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCmluZGV4IGQ5
ODM0M2M0NTE5NzAwNWFlYTM2YTk2ZDExMmI0ZDVlNmJmZDkyYWMuLmQyYWFlZjUzOWYzNjY1NDEy
YjRjZmZiZGVkNWJhOWU2MmE0OTUwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAK
QEAgLTQ2LDkgKzQ2LDkgQEAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6On5XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lcigpCiB7CiB9CiAKLXZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXI6OmRpZENob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcykKK3ZvaWQgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6OmRpZENob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50RmlsZXMpCiB7Ci0g
ICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlRmlsZXMoZmlsZXMpOworICAgIG1fZmlsZUNob29zZXIt
PmNob29zZUZpbGVzKGZpbGVzLCByZXBsYWNlbWVudEZpbGVzKTsKIH0KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAppbmRleCBkMGQ4NTliOGQzMDYz
ZjQ3YTYxNmMyMDQwZWYzN2ViNGZkMWJkMGY5Li44ZGM0NmVmYmExY2NiYTIxMjIxNjI0M2U3YTRl
NDQ3NzMyNTEwYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIH5XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcigpOwogCiAgICAgdm9p
ZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KLSAgICB2b2lkIGRpZENob29z
ZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5h
bEZpbGVzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZGlkQ2hvb3NlRmls
ZXNXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlTdHJpbmcsIFdlYkNvcmU6Okljb24qKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0MjI2NDZkNjIxMWU3
YjM0NTdiMjcyMzk3ZjhhYjhjY2YyZTNlYTZkLi42NzA5MjI3ZTc5OGY5MDVmNWM0N2E5ZDA5MTU3
NTMzNjQwZmRkZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNDMwMCwxMiArNDMwMCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdAog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQordm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiByZXBsYWNlbWVudEZpbGVzKQogewogICAgIGlmICghbV9hY3RpdmVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci0+ZGlkQ2hvb3NlRmlsZXMoZmlsZXMpOworICAgIG1fYWN0aXZlT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXItPmRpZENob29zZUZpbGVzKGZpbGVzLCByZXBsYWNlbWVudEZpbGVzKTsK
ICAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGY5NGFjYWFmMTg1
NTM4N2Y1ZWMwODhiZjNmMzc2YmIxZWExY2VhZWQuLjUyYjdjODI3NmIxMzdjOTYwNTBiODYxMDNi
ZmY0M2I0NDkzNGViMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmYWlsZWRUb1No
b3dQb3B1cE1lbnUoKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcmVwbGFjZW1lbnRGaWxlcyk7CiAgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2ODg5ZDYyMzJiOWZlNTU3
YTE5YTM5MGEzYWZlNDRkODczZjY5ZTA5Li5jNWUzNDMxZjYxNzQ4YzFkNDEwZDBiZDQ1MjVjZjIx
ZTRmNjZjNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM0Myw3ICszNDMsNyBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oVmVjdG9yPFN0cmluZz4gZmlsZVVSTHMs
IFN0cmluZyBkaXNwbGF5U3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgaWNvbkRhdGEsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRl
bnNpb24sIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGljb25TZXJ2aWNlc1NhbmRi
b3hFeHRlbnNpb24pCiAjZW5kaWYKLSAgICBEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChWZWN0
b3I8U3RyaW5nPiBmaWxlVVJMcykKKyAgICBEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChWZWN0
b3I8U3RyaW5nPiBmaWxlVVJMcywgVmVjdG9yPFN0cmluZz4gcmVwbGFjZW1lbnRVUkxzKQogICAg
IERpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykK
ICAgICBFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KaW5kZXggMmM4MDMwY2E4OTZlYmRhNjlmNTUxNzk5ZWNmZTEzN2ZmMTJkYzlh
NC4uZmFmOTNiNzNhMmIwMTQxMDM4MDVhNWNjNmJjYTdiNjUzYTY1MjdiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtOTMsNyArOTMsNyBAQCBNZWRpYVN0cmF0ZWd5KiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZU1lZGlhU3RyYXRlZ3koKQogCiBjbGFzcyBXZWJCbG9i
UmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsKIHByaXZhdGU6Ci0gICAgdm9p
ZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBt
X2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2Up
LCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJl
Z2lzdGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsg
fQogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBh
cnQ+JiYgcGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVn
aXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShwYXJ0cyksIGNvbnRlbnRUeXBlKTsg
fQogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNy
Y1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwp
OyB9CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJl
Z2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBX
VEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM5YmJlZGE5MjRlZWFjZTkyYTc5NTIzNzM3
MGEyZDE2ODY0ZDk5NGMuLjE2YjE1ZDcyNzgzZDgwZjkyMDI5YWU5NTQ1NGQxYzZkMTFkYzNiYTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMC0wNi0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlu
cHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUg
Y29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
bWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6cGFyYW1ldGVyczpdKToKKyAgICAgICAg
KC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKToKKyAgICAgICAgKC1b
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpdKToKKyAgICAgICAg
KC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFy
YW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVuT3Bl
blBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5l
bDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0ZpbGVFeHRl
bnNpb25zUG9wdXBUYXJnZXQgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOiBEZWxl
dGVkLgorCiAyMDIwLTA2LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVuYW1lIGluaXRpYWxpemVUaHJlYWRpbmcgdG8gaW5pdGlhbGl6ZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0g
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRl
eCA1NzBhYWE1NGRiOTcwZTQ3NDI0ODk0ZjdiZDg3MWE3M2YyYzdkZDBlLi5iNTViMmY3N2VjZmQ1
Y2E1NDUzZWExMzBlYTM4M2I5YzI4MWI2YTZkIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNzYsMzkgKzc2LDMwIEBAIC0g
KHZvaWQpcGVyZm9ybUFjdGlvbjooTlNUZXh0RmluZGVyQWN0aW9uKW9wCiBAaW50ZXJmYWNlIEZp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVjdCB7CiBAcHJpdmF0ZQogICAgIE5TT3Bl
blBhbmVsICpfb3BlblBhbmVsOwotICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmls
ZUV4dGVuc2lvbnM7CisgICAgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICpfcGFyYW1ldGVyczsKIH0K
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKIAotLSAo
aWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVF
eHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsK
Ky0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIHBhcmFtZXRl
cnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgewogICAgIGlmICgoc2VsZiA9
IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5QYW5lbCA9IG9wZW5QYW5lbDsKLSAgICAg
ICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29weV07
CisgICAgICAgIF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICB9CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKHZvaWQpcG9wdXBBY3Rpb246KGlkKXNlbmRlciB7Ci0gICAgLy8gTGFzdCBp
dGVtLgotICAgIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dID09IFtzZW5kZXIgbnVt
YmVyT2ZJdGVtc10gLSAxKQorLSAodm9pZClwb3B1cEFjdGlvbjooTlNCdXR0b24gKilzZW5kZXIg
eworICAgIGlmIChzZW5kZXIuc3RhdGUgPT0gTlNDb250cm9sU3RhdGVWYWx1ZU9uKSB7CiAgICAg
ICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlmICgh
W3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSkgewotICAgICAgICAvLyBGaXJzdCBpdGVtLgot
ICAgICAgICBpZiAoIVtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgICAg
IFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVF
eHRlbnNpb25zXTsKKyAgICAgICAgX3BhcmFtZXRlcnMuX3RyYW5zY29kZURpc2FsbG93ZWRJbWFn
ZXMgPSBOTzsKKyAgICB9IGVsc2UgeworICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmls
ZVR5cGVzOl9wYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgICAgICBfcGFy
YW1ldGVycy5fdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyA9IFlFUzsKICAgICB9CiB9CiAKLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIHJlbGVhc2VdOwot
ICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogQGVuZAogCiBAaW50ZXJmYWNlIFdLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5kZXJCYXJDb250YWluZXIsIFdLTmF2aWdhdGlv
bkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+CkBAIC02Mjks
NTAgKzYyMCwyNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2
YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIH1dOwogfQogCi0tIChu
dWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVw
VGFyZ2V0OihGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Kilwb3B1cFRhcmdldAorLSAobnVsbGFi
bGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCop
cG9wdXBUYXJnZXQKIHsKLSAgICBOU1RleHRGaWVsZCogbGFiZWwgPSBbW1tOU1RleHRGaWVsZCBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07Ci0gICAgW2xhYmVs
IHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwotICAgIFtsYWJlbCBzZXRFZGl0YWJsZTpOT107
Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwotICAgIFtsYWJlbCBzZXRCb3JkZXJlZDpO
T107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07
Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAgICBOU1BvcFVwQnV0dG9uICpidXR0b24gPSBb
W1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgcHVsbHNEb3du
Ok5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRvbiBhZGRJdGVtc1dpdGhUaXRsZXM6dGl0bGVz
XTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdldF07Ci0gICAgW2J1dHRvbiBzZXRB
Y3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwotICAgIFtidXR0b24gc2l6ZVRvRml0XTsK
LSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBdOwotICAgIFtwb3B1cFRhcmdldCBwb3B1
cEFjdGlvbjpidXR0b25dOwotICAgIAorICAgIE5TQnV0dG9uICpjaGVja2JveCA9IFtOU0J1dHRv
biBjaGVja2JveFdpdGhUaXRsZTpAIlNob3cgYWxsIEZpbGVzIiB0YXJnZXQ6cG9wdXBUYXJnZXQg
YWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKKyAgICBbY2hlY2tib3ggc2l6ZVRvRml0
XTsKKyAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246Y2hlY2tib3hdOworICAgICAgICAKICAg
ICBOU1ZpZXcqIGZpbHRlclZpZXcgPSBbW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNa
ZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwotICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZpZXc6bGFiZWxd
OwotICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZpZXc6YnV0dG9uXTsKLQotICAgIGNvbnN0IENHRmxv
YXQgbWFyZ2luID0gMjA7Ci0gICAgY29uc3QgQ0dGbG9hdCBzcGFjaW5nID0gMjsKLSAgICBjb25z
dCBDR0Zsb2F0IG1pbkJ1dHRvbldpZHRoID0gMjMwOworICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZp
ZXc6Y2hlY2tib3hdOwogCi0gICAgTlNSZWN0IGxhYmVsRnJhbWUgPSBbbGFiZWwgZnJhbWVdOwot
ICAgIE5TUmVjdCBidXR0b25GcmFtZSA9IFtidXR0b24gZnJhbWVdOworICAgIGNvbnN0IENHRmxv
YXQgbWFyZ2luID0gMTA7CisgICAgCisgICAgTlNSZWN0IGNoZWNrYm94RnJhbWUgPSBbY2hlY2ti
b3ggZnJhbWVdOwogICAgIE5TUmVjdCBmaWx0ZXJWaWV3RnJhbWUgPSBbZmlsdGVyVmlldyBmcmFt
ZV07CiAKLSAgICAvLyBTZXQgYSBtaW5pbXVtIHdpZHRoIGZvciAnYnV0dG9uJy4KLSAgICBidXR0
b25GcmFtZS5zaXplID0gTlNNYWtlU2l6ZShNQVgoTlNXaWR0aChidXR0b25GcmFtZSksIG1pbkJ1
dHRvbldpZHRoKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKTsKLSAgICAKLSAgICAvLyBGaWx0ZXJW
aWV3IHdpbGwgbGF5IG91dCAnbGFiZWwnIGFuZCAnYnV0dG9uJyBob3Jpem9udGFsbHkgYW5kIGhh
dmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgotICAgIGZpbHRlclZpZXdGcmFtZS5zaXplID0gTlNNYWtl
U2l6ZShOU1dpZHRoKGxhYmVsRnJhbWUpICsgTlNXaWR0aChidXR0b25GcmFtZSkgKyBzcGFjaW5n
LCBNQVgoTlNIZWlnaHQobGFiZWxGcmFtZSksIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSkgKyBtYXJn
aW4gKiAyKTsKKyAgICAvLyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91dCAnY2hlY2tib3gnaG9yaXpv
bnRhbGx5IGFuZCBoYXZlIGEgdmVydGljYWwgbWFyZ2lucy4KKyAgICBmaWx0ZXJWaWV3RnJhbWUu
c2l6ZSA9IE5TTWFrZVNpemUoTlNXaWR0aChjaGVja2JveEZyYW1lKSwgTlNIZWlnaHQoY2hlY2ti
b3hGcmFtZSkgKyBtYXJnaW4gKiAyKTsKICAgICBbZmlsdGVyVmlldyBzZXRGcmFtZTpmaWx0ZXJW
aWV3RnJhbWVdOwogCi0gICAgLy8gJ2xhYmVsJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0
aWNhbGx5LgotICAgIGxhYmVsRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNaW5YKGxhYmVs
RnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGxhYmVsRnJhbWUp
KSAvIDIpOwotICAgIFtsYWJlbCBzZXRGcmFtZTpsYWJlbEZyYW1lXTsKLSAgICAKLSAgICAvLyAn
YnV0dG9uJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5IGFuZCBpdCB3aWxsIGNv
bWUgYWZ0ZXIgJ2xhYmVsJyBob3Jpem9udGFsbHkuCi0gICAgYnV0dG9uRnJhbWUub3JpZ2luID0g
TlNNYWtlUG9pbnQoTlNNYXhYKGxhYmVsRnJhbWUpICsgc3BhY2luZywgKE5TSGVpZ2h0KGZpbHRl
clZpZXdGcmFtZSkgLSBOU0hlaWdodChidXR0b25GcmFtZSkpIC8gMik7Ci0gICAgW2J1dHRvbiBz
ZXRGcmFtZTpidXR0b25GcmFtZV07CisgICAgLy8gJ2NoZWNrYm94RnJhbWUnIHdpbGwgYmUgbGFp
ZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCisgICAgY2hlY2tib3hGcmFtZS5vcmlnaW4gPSBOU01h
a2VQb2ludChOU01pblgoY2hlY2tib3hGcmFtZSksIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUp
IC0gTlNIZWlnaHQoY2hlY2tib3hGcmFtZSkpIC8gMik7CisgICAgW2NoZWNrYm94IHNldEZyYW1l
OmNoZWNrYm94RnJhbWVdOwogCiAgICAgcmV0dXJuIGZpbHRlclZpZXc7CiB9CkBAIC02ODAsNyAr
NjQ4LDcgQEAgLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAq
KXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVuc2kKICNpZiBfX2hhc19mZWF0dXJlKG9iamNf
Z2VuZXJpY3MpCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBh
bmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgaW5p
dGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNBcnJheTxOU1VSTCAqPiAqIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCiAjZWxzZQot
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJh
bWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJh
bWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJy
YXkgKlVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVy
cyAqKXBhcmFtZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheSAqVVJMcywgQk9PTCB0cmFuc2NvZGVJbWFn
ZXMpKWNvbXBsZXRpb25IYW5kbGVyCiAjZW5kaWYKIHsKICAgICBOU09wZW5QYW5lbCAqb3BlblBh
bmVsID0gW05TT3BlblBhbmVsIG9wZW5QYW5lbF07CkBAIC02ODgsMTAgKzY1Niw5IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVy
czooV0tPcGVuUGFuZWxQYXJhCiAgICAgb3BlblBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0aW9u
ID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKIAogICAgIFtfZmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6
IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxl
RXh0ZW5zaW9uc107CisgICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRl
bnNpb25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgcGFy
YW1ldGVyczogcGFyYW1ldGVyc107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lv
bnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7Ci0gICAg
TlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxvd2VkRmlsZUV4
dGVuc2lvbnNUaXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOwor
ICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6X2ZpbGVFeHRl
bnNpb25zUG9wdXBUYXJnZXRdOwogICAgIGlmIChmaWx0ZXJWaWV3KQogICAgICAgICBbb3BlblBh
bmVsIHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403092</attachid>
            <date>2020-06-29 12:01:31 -0700</date>
            <delta_ts>2020-06-29 12:44:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200629120130.patch</filename>
            <type>text/plain</type>
            <size>89888</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxOGFkMzgyZjlkNDg0ZDIzNmFjMGMy
ZmM3NTE1MTYwYWU2NGQzYTguLjIwNWE1ZWIzZTdiNzA4NWFlNzk2MGUxODNhNzhmZWM1OTJhNGI5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWZlYzIxNjc5Y2U3OTAzNTgwNWI4MmZkNjhhNTQzMzFiOWVlNWVlZS4uMDk4YmYyOWIz
NzZjZTA1NzZhMjU3NzA1ZGVkM2VkZjIzNGI4NThjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUw
IEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZv
cm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQg
dG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwv
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZp
bGVMaXN0KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIHBsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVDaG9vc2VyRmlsZUluZm86OkZpbGVDaG9vc2VyRmlsZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxl
Q2hvb3NlclNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUZv
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRVbmlxdWVTdHJpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRBcHBlbmRBbGxJbWFnZXNFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25z
Rm9yTUlNRVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0
RXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorCiAyMDIwLTA2LTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bVEZDXSBBZGp1c3Qg
dGFibGUgY29udGVudCB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBtYXRjaCB2ZXJ0aWNhbC1hbGlnbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA2ZjEzM2ZjMmNlMmQ4Zjk3YjQwNjJkNDQzMjc5ZDgxZTE4ZDEwNGY5Li5mMWMx
ZWVjNTBiNWQ1MzE4MzA4OWQ4Y2NhMTMwZTNhZDllNThmMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYwIEBACisyMDIwLTA2LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdl
IGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQg
aXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVS
TCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVC
bG9iUmVnaXN0cnkpOgorICAgICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2Nv
ZGVJbWFnZXMpOgorICAgICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmg6CisgICAgICAg
ICogU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b246OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAg
KiBTaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0KToKKyAg
ICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNv
bnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlw
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmg6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OnRyYW5zY29k
ZURpc2FsbG93ZWRJbWFnZXMgY29uc3QpOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0
ZXJzOjpzZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzKToKKyAgICAgICAgKEFQSTo6T3BlblBh
bmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3Bl
blBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgICgtW1dL
T3BlblBhbmVsUGFyYW1ldGVycyBfdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlc10pOgorICAgICAg
ICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX3NldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXM6
XSk6CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNp
b25zVGl0bGVzXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09w
ZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5P
cGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHk6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6OmRpZENob29zZUZpbGVzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIwLTA2LTI4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRocmVhZC1zYWZldHkgaXNzdWUgaW4gd2ViUHJv
Y2Vzc1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDcwNzdhZjE2NGNkMTc4ZWJiNTBiM2VkNDhhZmUxYTRkYWUxMjUy
ZDcuLjMxMGU1MjdlZGI4OTJiNTZjZjE4YmI5ZmEzNWIzMThhMjQzMWYxNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNi0yOCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFNl
bGVjdGluZyBhIG5vbi1hY2NlcHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4gPGlucHV0IHR5cGU9ImZp
bGUiPiBlbGVtZW50IHNob3VsZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2VwdGVkIGZvcm1hdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAyYjU0Mzk2YWNhMmVmYjQyZWFlMmI5MTlhZWNi
YTY2MGVjNzNmNDdmLi45ZDUxZGIzNzlhZDdmMjdiNzRmNWIwMWYwZDcxOThhZDE4ZDM4ZDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMjkg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1
dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBm
b3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorCiAyMDIwLTA2LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGluaXRpYWxpemVUaHJlYWRpbmcgdG8gaW5p
dGlhbGl6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDYwYjMyZTQ2ZmM0MjkwODIzYTYyOWJkYTNlZDI3
MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQzYzZkNTJhOGE4YWYxNTVlNmU4ZWU4ZjkxMjAxMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciopOwogaW5s
aW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkg
eyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAogLy8gUHJl
Zml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhl
IGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwogV1RGX0VYUE9S
VF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxlQWNjZXNzUGVybWlzc2lv
bjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSBmYWxzZSk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiAvLyBSZXR1cm5zIHRoZSBy
ZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNz
ZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0K
aW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0ZmZhODlkNGRjZGY0MGFjMWIxYjg3ZC4uM2FjYjg2YWM3
NzVjZGFkZjcyNWNkODgwODhkMmI1Y2Q0YjE0YjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0Zp
bGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcgaG9tZURpcmVjdG9yeVBh
dGgoKQogICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKIH0KIAotU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRm
b3JtRmlsZUhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgc3VmZml4KQogewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGU7CiAKQEAgLTExMyw5ICsxMTMsMTMgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUgK
ICAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgpOwogICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4VXRmOC5sZW5ndGgoKSk7CiAg
ICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2KTsKKworICAgIC8vIEFwcGVu
ZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4KKyAgICBDU3RyaW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgu
dXRmOCgpOworICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChzdWZmaXhVdGY4LmRhdGEoKSwg
c3VmZml4VXRmOC5sZW5ndGgoKSk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcp
OwogCi0gICAgcGxhdGZvcm1GaWxlSGFuZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5k
YXRhKCkpOworICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQ
YXRoLmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3Bw
IGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJk
YWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1Y2EwZjVkZi4uZmEwYjUzMWZlMTBmZjc0ZWJhYjg2NWYz
Y2EwOTE1ZGExZDk1NzUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
QEAgLTMyNiw3ICszMjYsNyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9
CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQog
ewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIs
IHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSkpOwogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggYzlmNTAxNDM2YWJjYzgwOTRlODQx
NDgwZDIxZmUzNmE0NzFlODFmZi4uYjNjMDQwMWI1MDZmZGNlMzIzMmVkNmZlZmJiYmYwZTUyZDEw
MDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NDIs
NyArNDQyLDcgQEAgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1
aW50NjRfdCYgZnJlZVNwYWNlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgY2hhciBidWZm
ZXJbUEFUSF9NQVhdOwogICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggNjU5ZGZkNTI3MjdkYzllZjY5
OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4uYjYzMTQ5NTczYTQ4NDFmZTYwMDFlZWZhZmRkMDA5MmNm
Yzc0MWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNDA0LDcgKzQw
NCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9u
PGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rpb24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsK
IH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGhhbmRs
ZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAwODI2ODcw
NDc1MTY3OWU0MGU2MjgxNTBkMDc4NmE5ZGYzMmQwMDU0Li41N2FlODc0NTRlOTBjMWFiNGMwODE4
MzBkOTFjMTVjOTQ5OTMxYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTk0NSw2ICs5NDUsNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vRHJh
Z0l0ZW0uaAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2tpbmdSZWdpb25zLmgKICAgICBwbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5oCisgICAgcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCiAgICAg
cGxhdGZvcm0vRmlsZUhhbmRsZS5oCiAgICAgcGxhdGZvcm0vRmlsZU1vbml0b3IuaAogICAgIHBs
YXRmb3JtL0ZpbGVTdHJlYW1DbGllbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA5NWM3Njk4Y2FlMmUw
MjlmNTNiY2FkYzhjMDkzNThkYWUzMzJmODVmLi5hYjc0NTQ0OTBlNmY0ZTdkYTc4YjBlMmQ2ZGUz
ODQ2Y2M2MzU5MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc5Nyw2ICsxNzk3LDcgQEAgcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwCiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiBwbGF0Zm9ybS9FdmVudFRy
YWNraW5nUmVnaW9ucy5jcHAKIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorcGxhdGZvcm0vRmls
ZUNob29zZXJTZXR0aW5ncy5jcHAKIHBsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCiBwbGF0Zm9ybS9G
aWxlTW9uaXRvci5jcHAKIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmEzMTkwOGJkMGNl
NTdjNzQwZTJiMDU2Zjg0N2I5N2U0YmU1YjhhOS4uZjg1ODM3NzVkMDk1ZWQxYzQ1ZjliMGM5OTRi
MTI5Yzc2ZmRkY2RjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjE0Miw2ICsyMTQyLDcgQEAKIAkJNzIxNDQzMzMyMjNFQzhC
MDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0
NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNDhERDRDMjRB
NUMzRUQwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQ4REQ0OTI0QTU5MDA2MDBERTAyQjggLyog
RmlsZUNob29zZXJTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWlu
TWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRF
RDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRF
RTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8q
IEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5n
ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3
MzQsNiArOTczNSw4IEBACiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRl
ZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZG
NyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgz
IC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFtZVJh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0OERENDkyNEE1OTAwNjAwREUw
MkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZUNob29zZXJT
ZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjQ4REQ0QjI0QTU5MEM5
MDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aWxlQ2hvb3NlclNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0
RUQzMjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkExQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWlu
TWF4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzJCMUEzQTdFNTQwMEY1RjEzQyAv
KiBFWFRCbGVuZE1pbk1heC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUQmxlbmRNaW5N
YXguaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0NDEsNiArMjY0NDQsOCBA
QAogCQkJCTI2MkVDNDE5MUQwNzhGM0QwMEJBNzhGQyAvKiBFdmVudFRyYWNraW5nUmVnaW9ucy5o
ICovLAogCQkJCTkzNEZFOUU0MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8s
CiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCisJCQkJ
NzI0OERENEIyNEE1OTBDOTAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwICovLAor
CQkJCTcyNDhERDQ5MjRBNTkwMDYwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi8s
CiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJ
CTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggKi8sCiAJCQkJN0EwOUNF
RUIxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmNwcCAqLywKQEAgLTMwNjcwLDYgKzMw
Njc1LDcgQEAKIAkJCQk5NzZENkM4MTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM4Rjg2REExRjUwOUU3NDAwRThDRkM1IC8qIEZpbGVDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDY2Qzc3MkIwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjQ4REQ0QzI0QTVDM0VEMDBERTAyQjggLyogRmlsZUNo
b29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM1MUQ0QjExREY5MTZCNDAwODAx
MENEIC8qIEZpbGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODhBOTA1MTc1NTNDRDcw
MDBDNzRGOSAvKiBGaWxlSWNvbkxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQkUx
MjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKaW5kZXggOGQ2ZTM4NzM4NTUxM2RkZDQxZTAzNzI0MDk4YjQzMmVhY2Vj
ZWJjMC4uMzcxMDA3YjQwMzgzNmViMzE5OTI4OGJmYTE2Y2QyMzI0YmRhMjJmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCkBAIC00NiwxNiArNDYsMTcgQEAgUmVmPEZpbGU+IEZpbGU6OmNyZWF0
ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0
aXYKICAgICByZXR1cm4gZmlsZTsKIH0KIAotUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlKQorUmVmPEZpbGU+IEZpbGU6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBT
dHJpbmcgdHlwZTsKLSAgICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKHBhdGgsIG5hbWVPdmVy
cmlkZSwgbmFtZSwgdHlwZSk7CisgICAgU3RyaW5nIGVmZmVjdGl2ZVBhdGggPSAhcmVwbGFjZW1l
bnRQYXRoLmlzTnVsbCgpID8gcmVwbGFjZW1lbnRQYXRoIDogcGF0aDsKKyAgICBjb21wdXRlTmFt
ZUFuZENvbnRlbnRUeXBlKGVmZmVjdGl2ZVBhdGgsIG5hbWVPdmVycmlkZSwgbmFtZSwgdHlwZSk7
CiAKICAgICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsK
LSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFs
VVJMLCBwYXRoLCB0eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZp
bGVCbG9iVVJMKGludGVybmFsVVJMLCBwYXRoLCByZXBsYWNlbWVudFBhdGgsIHR5cGUpOwogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92
ZSh0eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3Ry
aW5nIHsgZWZmZWN0aXZlUGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CiB9CiAKIEZpbGU6OkZpbGUo
VVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMmY5MzhiNDIwZDNhNjBmYjkzZjc0MGJjYjA0ZDc0MWY4
M2VmZjc4Li44Nzk3NGQwMDNjMzlkY2U1ZDgzNGZjOTdmMDQ2OGZiMzJkZWQzMjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8v
IENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhv
ciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZm
ZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZp
bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQ
YXRoID0geyB9LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSk7CiAKICAgICAvLyBD
cmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZpbGUnIGNvbnN0cnVjdG9yLgogICAgIHN0YXRp
YyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJp
YW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5jcHAKaW5kZXggNWUxZDRjMDBhOWMwNjhjODAzMWMyNGNjZDYwYWIyMGE2YWZhMDYwYi4uMTEz
ZjJlOTA2ZGJiNTdkMzBiY2E5ZDk1NTJlY2VjMzU1NmIzYjNhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC02NCwxNSArNjQs
MTYgQEAgc3RhdGljIFRocmVhZFNwZWNpZmljPEJsb2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAo
KQogICAgIHJldHVybiAqbWFwOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsK
KyAgICBTdHJpbmcgZWZmZWN0aXZlUGF0aCA9ICFyZXBsYWNlbWVudFBhdGguaXNOdWxsKCkgPyBy
ZXBsYWNlbWVudFBhdGggOiBwYXRoOwogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRl
KGVmZmVjdGl2ZVBhdGgpLCBwYXRoLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBh
dGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xh
dGVkQ29weSgpXSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwo
dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgZWZmZWN0aXZl
UGF0aCA9IGVmZmVjdGl2ZVBhdGguaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVk
Q29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7CisgICAg
ICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OmNyZWF0ZShlZmZlY3RpdmVQYXRoKSwgcGF0aCwgY29udGVudFR5cGUpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oCmluZGV4IGE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIuLmVj
Yjc0ZjE3YzA2ZGJlYmM3MzQ5ODNkYjM5MjFkYzk4OTg0MTU5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00MCw3ICs0MCw3IEBA
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9y
PEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCAxYWY5
ZWIyMmM0YTY0MzUyMTQxZTcxOTU2ZTUyYTZjZmY2MmEwZjQ3Li5mMDA5ODlkZDAzZmMxMjk1NjNh
ODg1NDg2ZDVhNTdhYTdhZDIwZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rp
cmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJl
Y3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBSZWY8Rmls
ZUxpc3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYg
cGF0aHMpCiAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRo
LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAg
ICBhcHBlbmREaXJlY3RvcnlGaWxlcyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShpbmZvLnBhdGgpLCBmaWxlT2JqZWN0cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGUoaW5mby5wYXRoLCBpbmZvLmRpc3BsYXlO
YW1lKSk7CisgICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8u
cGF0aCwgeyB9LCBpbmZvLmRpc3BsYXlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBGaWxlTGlz
dDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThjYmY1ZTRiODIwZWI2ODBmN2NjNDI2NTVmMGI5ZTJk
NmQuLjdkNTRmNTllMDJjNjFiM2NlOTM2MjJjNmViNWIxMWQwM2E2ZmViZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgRmlsZUlu
cHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBw
YXRocywgY29uc3QKIAogICAgIGlmICghYWxsb3dzRGlyZWN0b3JpZXMoKSkgewogICAgICAgICBh
dXRvIGZpbGVzID0gcGF0aHMubWFwKFtdKGF1dG8mIGZpbGVJbmZvKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lKTsK
KyAgICAgICAgICAgIHJldHVybiBGaWxlOjpjcmVhdGUoZmlsZUluZm8ucGF0aCwgZmlsZUluZm8u
cmVwbGFjZW1lbnRQYXRoLCBmaWxlSW5mby5kaXNwbGF5TmFtZSk7CiAgICAgICAgIH0pOwogICAg
ICAgICBkaWRDcmVhdGVGaWxlTGlzdChGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZXMpKSwg
aWNvbik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2Vy
LmNwcAppbmRleCBhYzdmNWQ0N2JjZjQ1MzhmZWQ4MGM2MmI5OWMyNDczNTA0NzQ4ODViLi5kMTQ0
ZDFhYzMyZWM1ZWE2YjE3Zjg4MGMxY2EyZTEyMGFmZTMzOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUNob29zZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgRmlsZUNob29zZXI6
OmNob29zZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICBjaG9vc2VGaWxlcyhmaWxl
bmFtZXMpOwogfQogCi12b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzKQordm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2Vt
ZW50TmFtZXMpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBzaG91bGQg
bm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KICAgICBpZiAobV9zZXR0aW5ncy5zZWxl
Y3RlZEZpbGVzID09IGZpbGVuYW1lcykKQEAgLTY4LDggKzY4LDggQEAgdm9pZCBGaWxlQ2hvb3Nl
cjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwotICAgIGZv
ciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCi0gICAgICAgIGZpbGVzLmFwcGVuZChGaWxl
Q2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSBmaWxlbmFtZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBmaWxlcy5hcHBlbmQo
RmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZXNbaV0sIGkgPCByZXBsYWNlbWVudE5hbWVzLnNp
emUoKSA/IHJlcGxhY2VtZW50TmFtZXNbaV0gOiBudWxsU3RyaW5nKCkpKTsKICAgICBtX2NsaWVu
dC0+ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXIuaAppbmRleCBlNTFlYjllODQzODc5NWE3NmZlYzlhM2RiZjdjNmEwODRlYTA4ODk1Li44Nzc5
MzQyNmRjYTRhNDE2NTg2MjVkM2VjMGE2NmYyZjdlNTI0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTI5LDI1ICsyOSwxOSBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSAiRmlsZUNob29zZXJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBNZWRpYUNhcHR1cmVUeXBlIHsKLSAg
ICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKLSAgICBNZWRpYUNhcHR1cmVUeXBlVXNlciwKLSAgICBN
ZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyOwogY2xh
c3MgSWNvbjsKIAogc3RydWN0IEZpbGVDaG9vc2VyRmlsZUluZm8gewotICAgIEZpbGVDaG9vc2Vy
RmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lID0g
U3RyaW5nKCkpCisgICAgRmlsZUNob29zZXJGaWxlSW5mbyhjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lID0geyB9KQogICAgICAgICA6IHBhdGgocGF0aCkKKyAgICAgICAgLCByZXBsYWNlbWVudFBh
dGgocmVwbGFjZW1lbnRQYXRoKQogICAgICAgICAsIGRpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQog
ICAgIHsKICAgICB9CkBAIC01OCwyMCArNTIsMTAgQEAgc3RydWN0IEZpbGVDaG9vc2VyRmlsZUlu
Zm8gewogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyBwYXRoOworICAgIGNvbnN0IFN0cmluZyBy
ZXBsYWNlbWVudFBhdGg7CiAgICAgY29uc3QgU3RyaW5nIGRpc3BsYXlOYW1lOwogfTsKIAotc3Ry
dWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewotICAgIGJvb2wgYWxsb3dzRGlyZWN0b3JpZXMgeyBm
YWxzZSB9OwotICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcyB7IGZhbHNlIH07Ci0gICAgVmVj
dG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZp
bGVFeHRlbnNpb25zOwotICAgIFZlY3RvcjxTdHJpbmc+IHNlbGVjdGVkRmlsZXM7Ci0jaWYgRU5B
QkxFKE1FRElBX0NBUFRVUkUpCi0gICAgTWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBl
IHsgTWVkaWFDYXB0dXJlVHlwZU5vbmUgfTsKLSNlbmRpZgotfTsKLQogY2xhc3MgRmlsZUNob29z
ZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbGVDaG9vc2VyQ2xpZW50KCkgPSBk
ZWZhdWx0OwpAQCAtODYsOCArNzAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hvb3NlRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhdGhzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9vc2VGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVw
bGFjZW1lbnROYW1lcyA9IHsgfSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBG
SVhNRTogVGhpcyBmdW5jdGlvbiBpcyBhbG1vc3QgaWRlbnRpY2FsIHRvIEZpbGVDaG9vc2VyOjpj
aG9vc2VGaWxlcygpLiBXZSBzaG91bGQgbWVyZ2UgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHdpdGgg
RmlsZUNob29zZXI6OmNob29zZUZpbGVzKCkgYW5kIGhlbmNlIHJlbW92ZSB0aGUgUExBVEZPUk0o
SU9TX0ZBTUlMWSktZ3VhcmQuCkBAIC0xMDcsMTYgKzkxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZT4gewotICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCi0g
ICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAot
ICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwK
LSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmly
b25tZW50Ci0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTg5NmNh
YmEwYWQ3OTRlZWUxNmM5ZTkyMjcwYzYyN2ZlNzlhZmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHAKQEAgLTAsMCArMSwx
MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyU2V0dGluZ3MuaCIKKworI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQor
eworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihl
eHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5n
dGgoKSAtIDEpIDogZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kVW5pcXVlU3Ry
aW5ncyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncywgVmVjdG9yPFN0cmluZz4mIGFsbFN0
cmluZ3MpCit7CisgICAgZm9yIChhdXRvJiBzdHJpbmcgOiBzdHJpbmdzKQorICAgICAgICBhbGxT
dHJpbmdzLmFwcGVuZElmTm90Q29udGFpbnMoc3RyaW5nKTsKK30KKworc3RhdGljIHZvaWQgYXBw
ZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9u
cywgVmVjdG9yPFN0cmluZz4mIGFsbE1JTUVUeXBlcykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVu
c2lvbiA6IGV4dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IG1pbWVUeXBlRm9y
RXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG1pbWVUeXBlLmNvbnRhaW5zKCcv
JykpOworICAgICAgICBhbGxNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIFZlY3RvcjxTdHJpbmc+JiBhbGxFeHRlbnNp
b25zKQoreworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBtaW1lVHlwZXMpIHsKKyAgICAgICAg
QVNTRVJUKG1pbWVUeXBlLmNvbnRhaW5zKCcvJykpOworICAgICAgICBhcHBlbmRVbmlxdWVTdHJp
bmdzKE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSks
IGFsbEV4dGVuc2lvbnMpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgc2hvdWxkQXBwZW5kQWxs
SW1hZ2VzRXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiYgYWxsRXh0ZW5zaW9ucykKK3sKKyAgICBm
b3IgKGF1dG8mIGV4dGVuc2lvbiA6IGFsbEV4dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1l
VHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgIGlmIChNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlw
ZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K1ZlY3RvcjxTdHJpbmc+IEZpbGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMoKSBj
b25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1FVHlwZXM7CisKKyAgICBhcHBl
bmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2VwdE1JTUVUeXBlcywgYWxsb3dlZE1JTUVUeXBlcyk7
CisgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyh0aGlzLT5hY2NlcHRGaWxlRXh0ZW5z
aW9ucywgYWxsb3dlZE1JTUVUeXBlcyk7CisKKyAgICBpZiAoIXRoaXMtPnRyYW5zY29kZURpc2Fs
bG93ZWRJbWFnZXMpIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0RXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUoImltYWdlLyoiX3MpOworICAgICAg
ICBhcHBlbmRNSU1FVHlwZXNGb3JFeHRlbnNpb25zKGV4dGVuc2lvbnMsIGFsbG93ZWRNSU1FVHlw
ZXMpOworICAgIH0KKworICAgIHJldHVybiBhbGxvd2VkTUlNRVR5cGVzOworfQorCitWZWN0b3I8
U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25z
dAoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKworICAgIGFw
cGVuZEV4dGVuc2lvbnNGb3JNSU1FVHlwZXModGhpcy0+YWNjZXB0TUlNRVR5cGVzLCBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnMpOworICAgIGFwcGVuZFVuaXF1ZVN0cmluZ3ModGhpcy0+YWNjZXB0Rmls
ZUV4dGVuc2lvbnMsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk7CisKKyAgICBpZiAoc2hvdWxkQXBw
ZW5kQWxsSW1hZ2VzRXh0ZW5zaW9ucyhhbGxvd2VkRmlsZUV4dGVuc2lvbnMpKSB7CisgICAgICAg
IGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JXaWxk
Y2FyZE1JTUVUeXBlKCJpbWFnZS8qIl9zKTsKKyAgICAgICAgYXBwZW5kVW5pcXVlU3RyaW5ncyhl
eHRlbnNpb25zLCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpOworICAgIH0KKworICAgIHJldHVybiBh
bGxvd2VkRmlsZUV4dGVuc2lvbnM7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVDaG9vc2VyU2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjljZDQwNDYwMWU0NzJjN2MxOTU2
OWZmYjRhYzNhYmFkMWFmMmY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBNZWRpYUNhcHR1cmVUeXBlIHsKKyAgICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKKyAgICBNZWRp
YUNhcHR1cmVUeXBlVXNlciwKKyAgICBNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKK307CisK
K3N0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzIHsKKyAgICBib29sIGFsbG93c0RpcmVjdG9yaWVz
IHsgZmFsc2UgfTsKKyAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OworICAg
IGJvb2wgdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyB7IGZhbHNlIH07CisgICAgVmVjdG9yPFN0
cmluZz4gYWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZpbGVFeHRl
bnNpb25zOworICAgIFZlY3RvcjxTdHJpbmc+IHNlbGVjdGVkRmlsZXM7CisjaWYgRU5BQkxFKE1F
RElBX0NBUFRVUkUpCisgICAgTWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlIHsgTWVk
aWFDYXB0dXJlVHlwZU5vbmUgfTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxT
dHJpbmc+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8U3RyaW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCisgICAgICAg
IFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwKKyAgICAg
ICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50
CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IDk5NmVlNzg0ZWRlMmFkYjAxYTE1NTBlMmZlNTBk
NTA2NDNiM2ZhM2YuLjhkZTU0NDEzNDhhNmM2YjlhY2Y3MDRkMDUwMjgyZjhiZmM0MTdlODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTU4LDExICs1
OCwxMiBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlz
IHdlIHNob3VsZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZXMgb2YgdGhlc2Ug
ZnVuY3Rpb25zLgogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRFeHRlbnNpb25zRm9yTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0
RXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsK
ICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0TWVkaWFNSU1FVHlwZXNGb3JFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwogCi0gICAgc3RhdGljIFN0cmluZyBnZXRNSU1FVHlw
ZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIGdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YT4gY3Jl
YXRlTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEoKTsKIApAQCAtNzQsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFn
ZVZpZGVvT3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENo
ZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgZW5jb2RlZC4K
LSAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
IAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVp
bmcgbG9hZGVkIGFzIGEgSmF2YVNjcmlwdCBvciBKU09OIHJlc291cmNlLgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCmluZGV4IDJiM2ZlMDU1ODRmOTY0ZTA5OTc2ODQ2
YWExMjk4MDc2ZWE0YmUxNTAuLjI4M2Y2MDcwODFjYjJmY2NlMjMwMWRiMjg5NWQ3ODY1MGU2YmM0
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlw
ZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTI3LDExICsyNyw1OSBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
Q29yZVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TVVJMRmlsZVR5cGVN
YXBwaW5nc1NQSS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmluZz4+
JiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQoreworICAgIHN0YXRpYyBhdXRvIGV4dGVuc2lv
bnNGb3JNSU1FVHlwZU1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKKwor
ICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlID0gWyZdKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIHsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmVuc3VyZSh0eXBlLCBbXSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gSGFzaFNldDxTdHJpbmc+KCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKGV4dGVuc2lvbik7CisgICAg
ICAgIH07CisKKyAgICAgICAgYXV0byBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUgPSBbJl0oY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBDRkFycmF5UmVmJiBleHRlbnNpb25zKSB7CisgICAgICAg
ICAgICBhdXRvIHdpbGRjYXJkTUlNRVR5cGUgPSBtYWtlU3RyaW5nKHR5cGUuc3BsaXQoJy8nKS5m
aXJzdCgpLCAiLyoiX3MpOworCisgICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50
ID0gQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnMpOyBpIDwgY291bnQ7IGkrKykgeworCisgICAg
ICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0
cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChleHRlbnNpb25zLCBpKSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byB3aWxkY2FyZE1JTUVUeXBlLCBm
b3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlLyoiCisgICAgICAgICAgICAgICAgYWRkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUod2lsZGNhcmRNSU1FVHlwZSwgZXh0ZW5zaW9uKTsKKyAgICAgICAg
ICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGl0c21pbWVUeXBlLCBmb3IgZXhhbXBsZSBhZGQg
InBuZyIgdG8gImltYWdlL3BuZyIKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1F
VHlwZSh0eXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBhbGxVVElzID0gYWRvcHRDRihfVVRDb3B5RGVjbGFy
ZWRUeXBlSWRlbnRpZmllcnMoKSk7CisKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChhbGxVVElzLmdldCgpKTsgaSA8IGNvdW50OyArK2kpIHsKKyAg
ICAgICAgICAgIGF1dG8gdXRpID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoYWxsVVRJcy5nZXQoKSwgaSkpOworICAgICAgICAgICAgYXV0byB0eXBlID0g
YWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NN
SU1FVHlwZSkpOworICAgICAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihVVFR5cGVDb3B5QWxs
VGFnc1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKKyAgICAg
ICAgICAgIGlmICghZXh0ZW5zaW9ucyB8fCAhQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnMuZ2V0
KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYWRkRXh0ZW5zaW9u
c0Zvck1JTUVUeXBlKHR5cGUuZ2V0KCksIGV4dGVuc2lvbnMuZ2V0KCkpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKKyAgICB9KCkpOworCisg
ICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKK30KKwogU3RyaW5nIE1JTUVUeXBl
UmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
KQogewogICAgIHJldHVybiBbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10g
TUlNRVR5cGVGb3JFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uXTsKQEAgLTQyLDYgKzkw
LDE3IEBAIFZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JN
SU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3RyaW5n
PihbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gZXh0ZW5zaW9uc0Zvck1J
TUVUeXBlOnR5cGVdKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
RXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7CisKKyAgICBhdXRvIGl0ZXIgPSBleHRlbnNpb25z
Rm9yTUlNRVR5cGVNYXAoKS5maW5kKHR5cGUpOworICAgIGlmIChpdGVyICE9IGV4dGVuc2lvbnNG
b3JNSU1FVHlwZU1hcCgpLmVuZCgpKQorICAgICAgICBleHRlbnNpb25zLmFwcGVuZFJhbmdlKGl0
ZXItPnZhbHVlLmJlZ2luKCksIGl0ZXItPnZhbHVlLmVuZCgpKTsKKworICAgIHJldHVybiBleHRl
bnNpb25zOworfQorCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5z
aW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIC8vIFN5c3RlbSBQcmV2
aWV3cyBhY2NlcHQgc29tZSBub24tc3RhbmRhcmQgTUlNRVR5cGVzLCBzbyB3ZSBjYW4ndCByZWx5
IG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggNWFiZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1
OWFhZmZhNTIyNi4uZWJhYjYxODJlM2VhNDg5Y2NkODIyNDY2YTYzYWI0ZTI0ZWQwZTg1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcApAQCAtMzIsMTcgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3Qg
U3RyaW5nJiBwYXRoKQorQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCkKICAg
ICA6IG1fcGF0aChwYXRoKQorICAgICwgbV9yZXBsYWNlbWVudFBhdGgocmVwbGFjZW1lbnRQYXRo
KQogewogfQogCiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2Uo
KQogewotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGlmICghbV9yZXBsYWNlbWVu
dFBhdGguaXNOdWxsKCkpCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNl
bWVudFBhdGgpOwotI2VuZGlmCiB9CiAKIGNvbnN0IFN0cmluZyYgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOjpwYXRoKCkKQEAgLTUwLDEwICs0OSw5IEBAIGNvbnN0IFN0cmluZyYgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjpwYXRoKCkKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBpZiAo
bV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkKQogICAgICAgICBnZW5lcmF0ZVJlcGxhY2Vt
ZW50RmlsZSgpOwotCisjZW5kaWYKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gbV9yZXBsYWNlbWVudFBhdGg7Ci0jZW5kaWYKIAogICAgIHJldHVy
biBtX3BhdGg7CiB9CkBAIC0xMDEsNiArOTksMTIgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CiAKKyAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgIG1ldGFk
YXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNl
bWVudFBhdGgpOworICAgICAgICBpZiAoIW1ldGFkYXRhKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmgKaW5kZXggNjU4ODI5ZDA3ZmNmYmQ2YjAyYTIwZTFjYjAxZmRjOWQ2ZGNjMDdj
OS4uOGZjYmU4YzExZjIxMzQ4Y2VmZTQ4ZWQwMjY2NWM1NWQ2MzY5Njc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFJlZjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgsIHJlcGxhY2VtZW50UGF0aCkpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgfkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpOwpAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUZpbGVBY2Nlc3MoKTsKIAog
cHJvdGVjdGVkOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRQYXRoKTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoRklMRV9SRVBM
QUNFTUVOVCkKQEAgLTYwLDggKzYwLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5n
IG1fcGF0aDsKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBTdHJpbmcgbV9yZXBs
YWNlbWVudFBhdGg7CisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgYm9vbCBtX3Jl
cGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IGZlOTFlODFhYWQ0MzAyZTAzZGI5NjdhNDZhMzA2
YWM2ZDQyY2NlNTUuLjRiMTVjZGRiZTBlNGM3NmU4ZjkyYjAwMmQ2MmE5YWIwMmI3YTZiYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAt
NDcsNyArNDcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkgewogcHVibGlj
OgogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZp
ZWQgZmlsZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwg
UmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCBy
ZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBibG9iIGRhdGEuCiAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmYw
Y2U2NDlkOGIxN2ZlZjhkNjZlZjEzZDYzYmM1ZmRlNjhjNTI0Yy4uODkzMTg5Y2ZhMDc4OWQ1MWM3
N2E1ZTMyYjQ1ZDNkNWIzYjJmNGVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTczNyw3ICs3MzcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxD
b29raWVzRGVsZXRlZCgpCiAKICNlbmRpZgogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBORVRX
T1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDSyghdXJsLmlzRW1wdHkoKSk7CiAKQEAgLTc0NSw3ICs3
NDUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogICAgIGlmICghc2Vzc2lvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxv
YlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxl
KSkpLCBjb250ZW50VHlwZSk7CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJG
aWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUocGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUo
V1RGTW92ZShleHRlbnNpb25IYW5kbGUpKSksIGNvbnRlbnRUeXBlKTsKIH0KIAogdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJs
LCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQpAQCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSCiAgICAgaWYgKCFz
ZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlQmFja2VkUGF0aCwg
bnVsbHB0ciksIGNvbnRlbnRUeXBlKTsKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNv
bnRlbnRUeXBlKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBl
ODIzMDAwOWVjOTZiZmVlZjIwOThhMWFlZWU3YTI3YWMzOThjM2RhLi4xOGNjZWQ5N2M2NTMyYTM2
YTcwYTMxZGQ3MWQ2YWZiYWY4ZDY2ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0y
MTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFJhd0Nvb2tpZShjb25zdCBXZWJD
b3JlOjpDb29raWUmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSk7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMjIwMGQ0YzRhZDIwY2Y2YzJmMWE1YjdhNDAzNmIwNjc0ODAxNDNlZS4uN2I4MjI1MjMy
NzAwYWE2ODhjOWQ4NGFhYzA0MjBjNDk3YjZlNWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00Niw3ICs0Niw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVbnN1YnNjcmli
ZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKEhhc2hTZXQ8U3RyaW5nPiBob3N0cykKICNl
bmRpZgogCi0gICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29u
dGVudFR5cGUpCisgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
U3RyaW5nIHJlcGxhY2VtZW50UGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
ZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCiAgICAgUmVnaXN0ZXJCbG9iVVJM
KFVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29u
dGVudFR5cGUpCiAgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChVUkwgdXJsLCBVUkwgc3JjVVJM
KQogICAgIFJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFVSTCB1cmwsIFVSTCBz
cmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNjk2MDFjZWYwZWZjOTNkYmVkM2UwNTNk
NTM0MDgxNDdiZTNlZDk3Li5jZmZjOTlmODJiMDQ0YzQ5YjA1MDJiZTk1ZGNjOGNiODk5MWMyMjA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTcsNyArNTcsNyBAQCBC
bG9iUmVnaXN0cnkqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9i
UmVnaXN0cnkoKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGNsYXNzIEVt
cHR5QmxvYlJlZ2lzdHJ5IDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7Ci0gICAgICAg
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAg
ICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
c3JjVVJMKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKaW5kZXggYWYwOGY2ZDVlZmI0YWFhODZiMTA0YTQ5
Yzk4NTVmMjA3MjViNjgwOC4uMmU2OGEwYzkxM2IxMGMwODEwNGFhM2I5NGUzYjQwNTg3OTI0ZmUw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKQEAgLTI2LDYg
KzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIK
IAorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRp
b24sIENHUmVjdCBzb3VyY2UpCkBAIC00Niw0ICs1Miw4MiBAQCB2b2lkIHBhaW50SW1hZ2UoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3Is
IENHUAogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKK1N0cmluZyB0
cmFuc2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Cit7CisgICAgQVNTRVJUKG1pbWVUeXBlLnN0YXJ0c1dpdGgoImltYWdlLyJfcykpOworCisgICAg
Ly8gQ3JlYXRlIHRoZSBpbWFnZSBzb3VyY2UuCisgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7Cisg
ICAgYXV0byBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJj
ZVVSTC5nZXQoKSwgbnVsbHB0cikpOworICAgIGlmICghc291cmNlKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIlNvdXJjZSBwYXRoIGlzIG5vdCBhIHZhbGlkIGlt
YWdlLiIpOworICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICBhdXRvIHNvdXJjZVVU
SSA9IFN0cmluZyhDR0ltYWdlU291cmNlR2V0VHlwZShzb3VyY2UuZ2V0KCkpKTsKKyAgICBhdXRv
IHJlcGxhY2VtZW50VVRJID0gV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAg
ICBpZiAoc291cmNlVVRJID09IHJlcGxhY2VtZW50VVRJKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRF9XSVRIX01FU1NBR0UoIlNvdXJjZSBpbWFnZSBhbHJlYWR5IGhhcyB0aGUgcmVwbGFj
ZW1lbnQgTUlNRSB0eXBlLiIpOworICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICAv
LyBDb21wdXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIHByZWZpeCBhbmQgZmlsZSBleHRlbnNp
b24uCisgICAgYXV0byBjb21wb25lbnRzID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBh
dGgpLnNwbGl0KCcuJyk7CisgICAgYXV0byBleHRlbnNpb24gPSBXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAg
YXV0byBwcmVmaXggPSBtYWtlU3RyaW5nKGNvbXBvbmVudHMuZmlyc3QoKSwgIl8iX3MpOworICAg
IGF1dG8gc3VmZml4ID0gbWFrZVN0cmluZygiLiJfcywgZXh0ZW5zaW9uKTsKKworICAgIC8vIENy
ZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSByZXBsYWNlbWVudEZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKHByZWZpeCwgcmVwbGFjZW1lbnRGaWxlSGFuZGxl
LCBzdWZmaXgpOworICAgIGlmIChyZXBsYWNlbWVudEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRURf
V0lUSF9NRVNTQUdFKCJSZXBsYWNlbWVudCBpbWFnZSBjYW4ndCBiZSBjcmVhdGVkLiIpOworICAg
ICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgdGhlIGRhdGEgY29uc3Vt
ZXIuCisgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyBbXSh2b2lkICpp
bmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkgLT4gc2l6ZV90IHsKKyAgICAg
ICAgYXV0byBwbGF0Zm9ybUZpbGVIYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlKj4oaW5mbyk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShwbGF0Zm9ybUZpbGVIYW5kbGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZm
ZXIpLCBjb3VudCk7CisgICAgfSwgbnVsbHB0ciB9OworCisgICAgLy8gQ3JlYXRlIHRoZSBpbWFn
ZSByZXBsYWNlbWVudC4KKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1l
ckNyZWF0ZSgmcmVwbGFjZW1lbnRGaWxlSGFuZGxlLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBy
ZXBsYWNlbWVudCA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGFDb25z
dW1lcihjb25zdW1lci5nZXQoKSwgcmVwbGFjZW1lbnRVVEkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgMSwgbnVsbHB0cikpOworCisgICAgLy8gV3JpdGUgdGhlIHNvdXJjZSBpbWFnZSB0byB0aGUg
cmVwbGFjZW1lbnQgaW1hZ2UuCisgICAgc2l6ZV90IGluZGV4ID0gQ0dJbWFnZVNvdXJjZUdldFBy
aW1hcnlJbWFnZUluZGV4KHNvdXJjZS5nZXQoKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRk
SW1hZ2VGcm9tU291cmNlKHJlcGxhY2VtZW50LmdldCgpLCBzb3VyY2UuZ2V0KCksIGluZGV4LCBu
dWxscHRyKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShyZXBsYWNlbWVudC5nZXQo
KSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcGxhY2VtZW50RmlsZUhhbmRsZSk7CisK
KyAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoOworfQorCitWZWN0b3I8U3RyaW5nPiB0cmFuc2Nv
ZGVJbWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWxsb3dlZE1JTUVUeXBlcykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFBh
dGhzOworICAgIFN0cmluZyBwcmVmZXJyZWRFbmNvZGluZ01JTUVUeXBlOworICAgIAorICAgIGZv
ciAoYXV0byBtaW1lVHlwZSA6IGFsbG93ZWRNSU1FVHlwZXMpIHsKKyAgICAgICAgaWYgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5n
KG1pbWVUeXBlKSkgeworICAgICAgICAgICAgcHJlZmVycmVkRW5jb2RpbmdNSU1FVHlwZSA9IG1p
bWVUeXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
cHJlZmVycmVkRW5jb2RpbmdNSU1FVHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHJlcGxh
Y2VtZW50UGF0aHM7CisKKyAgICBmb3IgKGF1dG8mIHBhdGggOiBwYXRocykgeworICAgICAgICBh
dXRvIG1pbWVUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQ
YXRoKHBhdGgpOworICAgICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5jb250YWlucyhtaW1lVHlw
ZSkpCisgICAgICAgICAgICByZXBsYWNlbWVudFBhdGhzLmFwcGVuZChudWxsU3RyaW5nKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNlbWVudFBhdGhzLmFwcGVuZCh0cmFuc2Nv
ZGVJbWFnZShwYXRoLCBwcmVmZXJyZWRFbmNvZGluZ01JTUVUeXBlKSk7CisgICAgfQorICAgIAor
ICAgIHJldHVybiByZXBsYWNlbWVudFBhdGhzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaAppbmRleCA4NTFkMTgxYThmYzc1
NzNjOTMwY2ZjNjAzYjBmNDE0Mjg3NDdiMjJkLi45NWRhNmQ5Mzc3OThiMmNhMjkxN2E4NjBlNmYx
NTBjZjIyMTVmYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRp
bGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCkBA
IC0yOSw2ICsyOSw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBwYWludEltYWdlKENH
Q29udGV4dFJlZiwgQ0dJbWFnZVJlZiwgQ0dGbG9hdCBzY2FsZUZhY3RvciwgQ0dQb2ludCBkZXN0
aW5hdGlvbiwgQ0dSZWN0IHNvdXJjZSk7CitTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKK1ZlY3RvcjxTdHJpbmc+IHRyYW5z
Y29kZUltYWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcAppbmRleCBmYzc0YjYwMTczYzU1MjU5MGI1NGUz
NDBjNjZhZTFmYTM2ODQ1NzBhLi45YTU2ZTM5YjkyNmI5NjYyNDVkNjliNTc5MjIzZDEwMWYwNTVm
ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCkBAIC0zMCw4ICszMCw4
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2Fu
ZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0
ZW5zaW9uKQotICAgIDogQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgpCitCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50UGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikKKyAg
ICA6IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoLCByZXBsYWNlbWVudFBhdGgpCiAgICAgLCBt
X3NhbmRib3hFeHRlbnNpb24oV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IDc1YTVkNGQwY2JiZWMwODVhZmRkYjM4ZmVi
YjUzM2U3MzY0MDYzMjYuLjdiODMyOWYyMjlhNTVmZDRkYmMzYzQ0NjgzNzliYjMxYmYxMDM1OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaApAQCAtMzQsMTMgKzM0LDEzIEBAIGNs
YXNzIFNhbmRib3hFeHRlbnNpb247CiAKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRi
b3hFeHRlbnNpb24pCisgICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9
LCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZVdpdGhTYW5kYm94RXh0ZW5zaW9uKHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbikpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24ocGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRl
bnNpb24pKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+JiYpOworICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiYmKTsKICAgICB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbigpOwogCiAgICAgdm9pZCBwcmVwYXJlRm9yRmlsZUFjY2Vz
cygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCmluZGV4IDg1MWViZjVjMDM5ZTdiMjg5MTlhZjkxMGIw
MmZlYTAwY2VlZWRmNDcuLmQzNWE3NGE4N2FhMGI4NTJmNDA4NzQ2MWQ3Yzg1MjRkZDZiMGUzMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKQEAgLTU4LDEyICs1OCwxNSBAQCBSZWY8QVBJOjpBcnJheT4gT3BlblBh
bmVsUGFyYW1ldGVyczo6YWNjZXB0RmlsZUV4dGVuc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBB
UEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNp
b25zKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQotV2ViQ29yZTo6TWVkaWFDYXB0
dXJlVHlwZSBPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QKK1Jl
ZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOworICAgIHJldHVy
biBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRNSU1FVHlw
ZXMoKSk7Cit9CisKK1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2Vk
RmlsZUV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVT
dHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsKIH0KLSNlbmRp
ZgogCiBSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2VsZWN0ZWRGaWxlTmFt
ZXMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU9wZW5QYW5lbFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElP
cGVuUGFuZWxQYXJhbWV0ZXJzLmgKaW5kZXggNzMwZTVkNWVlZmYyYmEwYmU0ODk0N2IwZDc5N2U2
MzE1YzMyNmI5MS4uYjJlMDhiZTlkNTAxOWM4ZWNmODc1MmZkN2E3MjkyNGYxMDIzNjVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1l
dGVycy5oCkBAIC00Miw5ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd011bHRpcGxl
RmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmFsbG93c011bHRpcGxlRmlsZXM7IH0K
ICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0TUlNRVR5cGVzKCkgY29uc3Q7CiAgICAgUmVmPEFQ
STo6QXJyYXk+IGFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgUmVmPEFQSTo6QXJy
YXk+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4gYWxsb3dl
ZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IHNlbGVjdGVkRmls
ZU5hbWVzKCkgY29uc3Q7CisgICAgYm9vbCB0cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9zZXR0aW5ncy50cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzOyB9CisgICAg
dm9pZCBzZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzKGJvb2wgZmxhZykgeyBtX3NldHRpbmdz
LnRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMgPSBmbGFnOyB9CiAjaWYgRU5BQkxFKE1FRElBX0NB
UFRVUkUpCi0gICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkg
Y29uc3Q7CisgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmluZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0
MjhhMWU5YjAwOGIxNDg4MjMuLjdiMjk5YzliYTJjZGRlOWQ2MWYwOWM5ZmM1YWNmNTRhYWNlZjA3
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAtMjUsNjAgKzI1LDExIEBACiAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaCIKLSNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVNlcnZpY2VzU1BJLmg+CiAKICNpZiBQTEFURk9STShN
QUMpCiAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogCi1zdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIE5TU2V0PE5TU3RyaW5nICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQot
ewotICAgIHN0YXRpYyBhdXRvIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCA9IG1ha2VOZXZlckRl
c3Ryb3llZChbXSB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgYXV0byBh
bGxVVElzID0gYWRvcHRDRihfVVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSk7Ci0KLSAg
ICAgICAgYXV0byBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSA9IF4oTlNTdHJpbmcgKm1pbWVUeXBl
LCBOU1N0cmluZyAqZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnNGb3JN
SU1FVHlwZU1hcC5nZXQoKVttaW1lVHlwZV0pCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSA9IFtOU011dGFibGVTZXQgc2V0XTsKLSAgICAg
ICAgICAgIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVdIGFkZE9iamVj
dDpleHRlbnNpb25dOwotICAgICAgICB9OwotCi0gICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlID0gXihOU1N0cmluZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4
dGVuc2lvbnMpIHsKLSAgICAgICAgICAgIGF1dG8gd2lsZGNhcmRNSU1FVHlwZSA9IFtbbWltZVR5
cGUgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiLyJdWzBdIHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOkAiLyoiXTsKLQotICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uIGlu
IGV4dGVuc2lvbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikKLSAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0
byB3aWxkY2FyZE1JTUVUeXBlLCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlLyoiCi0g
ICAgICAgICAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUod2lsZGNhcmRNSU1FVHlwZSwg
ZXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGl0c21pbWVU
eXBlLCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlL3BuZyIKLSAgICAgICAgICAgICAg
ICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSwgZXh0ZW5zaW9uKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGFsbFVUSXMuZ2V0KCkpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICAgICAgYXV0byB1dGkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChhbGxVVElzLmdldCgpLCBpKSk7Ci0gICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0g
YWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NN
SU1FVHlwZSkpOwotICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29w
eUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Ci0g
ICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKF9fYnJpZGdlIE5TU3RyaW5nICop
bWltZVR5cGUuZ2V0KCksIChfX2JyaWRnZSBOU0FycmF5PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9u
cy5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGQgYWRkaXRpb25hbCBtaW1lIHR5
cGVzIHdoaWNoIF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpIG1heSBub3QgcmV0dXJu
LgotICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShAImltYWdlL3dlYnAiLCBAIndlYnAi
KTsKLQotICAgICAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOwotICAgIH0oKSk7
Ci0KLSAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpLmdldCgpOwotfQot
Ci1zdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmlu
ZyAqbWltZXR5cGUpCi17Ci0gICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBv
YmplY3RGb3JLZXk6bWltZXR5cGVdOwotfQotCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTExNCw1OCAr
NjUsMTcgQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUo
TlNTdHJpbmcgKm1pbWV0eXBlKQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRG
aWxlRXh0ZW5zaW9ucwogewotICAgIC8vIEFnZ3JlZ2F0ZSBleHRlbnNpb25zIGJhc2VkIG9uIHNw
ZWNpZmllZCBNSU1FIHR5cGVzLgotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtz
ZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIGF1dG8gYWxsb3dlZEZpbGVFeHRl
bnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwotCi0gICAgW2Fj
Y2VwdGVkTUlNRVR5cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1p
bWVUeXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MKiBzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChb
bWltZVR5cGUgY29udGFpbnNTdHJpbmc6QCIvIl0pOwotICAgICAgICBbYWxsb3dlZEZpbGVFeHRl
bnNpb25zIHVuaW9uU2V0OmV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSldOwotICAgIH1d
OwotCi0gICAgYXV0byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRGaWxlRXh0ZW5z
aW9ucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24sIE5T
VUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgQVNTRVJUKFtleHRlbnNpb24g
Y2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpOwotICAgICAgICBbYWRkaXRpb25hbEFsbG93ZWRG
aWxlRXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1d
OwotICAgIH1dOwotICAgIAotICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zy
b21BcnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zLmdldCgpXTsKLSAgICByZXR1
cm4gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKKyAgICByZXR1cm4gd3JhcHBl
cihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkpOworfQorCist
IChCT09MKV90cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzCit7CisgICAgcmV0dXJuIF9vcGVuUGFu
ZWxQYXJhbWV0ZXJzLT50cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzKCk7CiB9CiAKLS0gKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCistICh2b2lkKV9z
ZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzOihCT09MKWZsYWcKIHsKLSAgICBhdXRvIGFjY2Vw
dGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2Vw
dGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAg
ICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNvbnN0
ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAg
aWYgKCFbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
cyBjb3VudF0pCi0gICAgICAgIHJldHVybiBAW0FsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKCEo
W2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
cyBjb3VudF0pKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1Rp
dGxlXTsKLQotICAgIGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmpl
Y3RdOwotICAgIGF1dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAg
ICAKLSAgICBpZiAoIXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNU
aXRsZSwgQWxsRmlsZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFtt
aW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVU
eXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiAr
IDFdOwotICAgIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJd
KQotICAgICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmls
ZXMiLCBbW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5n
XSwgW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVd
OwotCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVy
biBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXgg
dXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKLQotICAg
IHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1lVHlwZVN1
ZmZpeCwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICBfb3BlblBhbmVsUGFy
YW1ldGVycy0+c2V0VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyhmbGFnKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVs
UGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgxMjBlNGFmMWJhZWEyMmMw
NjI0YWMyZTIzYjRlMWJkNGFkNi4uYzZhOTUwYjcxMThkOGM2ZTlmYmFiNWRiOTI3Y2RkOWFlODky
OTU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0zMSw4ICszMSw4IEBA
CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkp
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5n
ICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxO
U1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUs
IHNldHRlcj1fc2V0VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlczopIEJPT0wgX3RyYW5zY29kZURp
c2FsbG93ZWRJbWFnZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXgg
NDljNzE0Mjc4NWVjMjliNDQ2ZmQ5NTY5NzgxOTVhMTk3ZDM5YjkzZi4uMGEwMWJkMWU3MTA0YjZm
ZmI4M2JmZmUzNWYzNDRmMTc5YmZhOWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNpbXBvcnQg
IkFQSUZyYW1lSW5mby5oIgogI2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAi
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgpAQCAtODI2LDcgKzgyNyw3IEBAIGJvb2wg
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkqIHdlYkZyCiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6KSk7CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGlu
aXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihmcmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3Rl
bmVyKV0gKE5TQXJyYXkgKlVSTHMpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigq
b3BlblBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBv
cGVuUGFuZWxQYXJhbWV0ZXJzID0gbWFrZVJlZigqb3BlblBhbmVsUGFyYW1ldGVycyksIGxpc3Rl
bmVyID0gV1RGTW92ZShsaXN0ZW5lcildIChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKQEAgLTg0MCw3ICs4NDEsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVu
UGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcgogICAgICAgICBm
b3IgKE5TVVJMICp1cmwgaW4gVVJMcykKICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQodXJs
LnBhdGgpOwogCi0gICAgICAgIGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMpOworICAg
ICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzLCBvcGVuUGFuZWxQYXJhbWV0ZXJz
LT5hbGxvd2VkTUlNRVR5cGVzKCktPnRvU3RyaW5nVmVjdG9yKCkpOwogICAgIH0pLmdldCgpXTsK
IAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCA4NTc0NjUxNWRh
NjdkMTQyYWY3ZGZhZDg4ZGU4YTQ4YTgzZjYxYzEwLi5kMTVmZWUyZmQ5MWIzN2UwNzMxOTQ1ZDU0
ZTNhNDMzMzU3ZjEwYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtNTQsMTIgKzU0LDEy
IEBAIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgZmlsCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzKQordm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlbmFtZXMpOwor
ICAgIG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVzLCBhbGxvd2Vk
TUlNRVR5cGVzKTsKIH0KIAogdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojpj
YW5jZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCmluZGV4IDFlZWNkY2ExN2RjMzhkYWU5NWUyODljYWFm
NzA4NjFjZDBiNzZjNWYuLjNhOThhNDQ2MzRkNjlkNTU4ZTgyNmMwZWNhM2M3NjVkOWM4NTIyZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0
YSogaWNvbkltYWdlRGF0YSk7CiAjZW5kaWYKLSAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOworICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1F
VHlwZXMgPSB7IH0pOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdhNzQ3MjU1
MDlkZjJhNzYxYmUxMTUwZWFhZTQ2ZDQ0NmRjNTljYjUuLmM5YzdiZTU1MzViNzRjMTUwMDlhY2Rl
NzkyMjI5Y2ExMzNmOTk4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIK
ICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAi
UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCkBAIC02NjgzLDE3ICs2
Njg0LDI4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdp
dGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlVVJMcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBh
bGxvd2VkTUlNRVR5cGVzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byByZXBsYWNlbWVudFVS
THMgPSB0cmFuc2NvZGVJbWFnZXMoZmlsZVVSTHMsIGFsbG93ZWRNSU1FVHlwZXMpOworI2Vsc2UK
KyAgICBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHM7CisgICAgVU5VU0VEX1BBUkFNKGFs
bG93ZWRNSU1FVHlwZXMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05T
KQotICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbCJfcywgZmlsZVVSTHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hF
eHRlbnNpb25GaWxlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNp
emUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFwcGVu
ZChpIDwgcmVwbGFjZW1lbnRVUkxzLnNpemUoKSAmJiAhcmVwbGFjZW1lbnRVUkxzW2ldLmlzTnVs
bCgpID8gcmVwbGFjZW1lbnRVUkxzW2ldIDogZmlsZVVSTHNbaV0pOworCisgICAgYXV0byBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFu
ZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9z
LCBzYW5kYm94RXh0ZW5zaW9uRmlsZXMpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4
dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcykpKTsKICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgcmVwbGFjZW1lbnRVUkxz
KSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAg
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGFlMTk1YmQ3ZTJmODI0MGQxZTdkODhjN2I3ZGUxNDIyYTRk
YjkyOTYuLmJhNWFlMGQ5MWM1YWQ3OGYwODUxNDFiNzZiNmZjNDBmZTNmMTAzZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25EYXRhKTsK
ICNlbmRpZgotICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9y
PFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1F
VHlwZXMgPSB7IH0pOwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CiAKICAgICBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJv
eHkmLCBEcmF3aW5nQXJlYVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmID0g
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggOGY0N2I4ZjA3MGUxZjI5ODMzNDUzOGRjYThjZjRk
NGU0YTM5NGM0Yi4uOTAzZjk0MWQ3NTgyN2U3MjU3MmVmYjgyMWI2ZDIzZWE5Y2ZiYWRlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZTsKIApAQCAt
NDQsNyArNDQsOCBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZQogICAgIGlmICghZmlsZS0+cGF0
aCgpLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZp
bGUtPnBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhh
bmRsZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4
dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQ
YXRoID0gcGF0aCA9PSBmaWxlLT5wYXRoKCkgPyBudWxsU3RyaW5nKCkgOiBmaWxlLT5wYXRoKCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBl
eHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDQwOTg0
ZGIyN2RhZGQ3ZDY1ZTlhNTFhYzE3MmQwNTc3MTkyZDRhMzguLmU4MzdhNjk2NGUwNDdkM2E0NWIz
MjBlZDAzNmI2YThhNzMwM2Y2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYsIFJlZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAK
aW5kZXggZDk4MzQzYzQ1MTk3MDA1YWVhMzZhOTZkMTEyYjRkNWU2YmZkOTJhYy4uZDJhYWVmNTM5
ZjM2NjU0MTJiNGNmZmJkZWQ1YmE5ZTYyYTQ5NTA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmNwcApAQCAtNDYsOSArNDYsOSBAQCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6fldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCkKIHsKIH0KIAotdm9pZCBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQor
dm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRGaWxl
cykKIHsKLSAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9maWxl
Q2hvb3Nlci0+Y2hvb3NlRmlsZXMoZmlsZXMsIHJlcGxhY2VtZW50RmlsZXMpOwogfQogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCmluZGV4IGQwZDg1
OWI4ZDMwNjNmNDdhNjE2YzIwNDBlZjM3ZWI0ZmQxYmQwZjkuLjhkYzQ2ZWZiYTFjY2JhMjEyMjE2
MjQzZTdhNGU0NDc3MzI1MTBjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAgICAgfldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCk7CiAK
ICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQotICAgIHZvaWQg
ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29z
ZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9yaWdpbmFsRmlsZXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRD
aG9vc2VGaWxlc1dpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgV2ViQ29yZTo6SWNvbiopOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQyMjY0
NmQ2MjExZTdiMzQ1N2IyNzIzOTdmOGFiOGNjZjJlM2VhNmQuLjY3MDkyMjdlNzk4ZjkwNWY1YzQ3
YTlkMDkxNTc1MzM2NDBmZGRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC00MzAwLDEyICs0MzAwLDEyIEBAIHZvaWQgV2ViUGFnZTo6ZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVj
dG9yPFN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCit2b2lkIFdlYlBhZ2U6OmRpZENob29z
ZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHJlcGxhY2VtZW50RmlsZXMpCiB7CiAgICAgaWYgKCFtX2FjdGl2ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2FjdGl2ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLT5kaWRDaG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9hY3RpdmVP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+ZGlkQ2hvb3NlRmlsZXMoZmlsZXMsIHJlcGxhY2VtZW50
RmlsZXMpOwogICAgIG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk0
YWNhYWYxODU1Mzg3ZjVlYzA4OGJmM2YzNzZiYjFlYTFjZWFlZC4uNTJiN2M4Mjc2YjEzN2M5NjA1
MGI4NjEwM2JmZjQzYjQ0OTM0ZWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMTYwMyw3ICsxNjAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZh
aWxlZFRvU2hvd1BvcHVwTWVudSgpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiByZXBsYWNlbWVudEZpbGVzKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5Q
YW5lbCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDY4ODlkNjIz
MmI5ZmU1NTdhMTlhMzkwYTNhZmU0NGQ4NzNmNjllMDkuLmM1ZTM0MzFmNjE3NDhjMWQ0MTBkMGJk
NDUyNWNmMjFlNGY2NmM2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzQzLDcgKzM0Myw3IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihWZWN0b3I8U3RyaW5nPiBm
aWxlVVJMcywgU3RyaW5nIGRpc3BsYXlTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBpY29uRGF0
YSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2Fu
ZGJveEV4dGVuc2lvbiwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaWNvblNlcnZp
Y2VzU2FuZGJveEV4dGVuc2lvbikKICNlbmRpZgotICAgIERpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsKFZlY3RvcjxTdHJpbmc+IGZpbGVVUkxzKQorICAgIERpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsKFZlY3RvcjxTdHJpbmc+IGZpbGVVUkxzLCBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVS
THMpCiAgICAgRGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRF
TlNJT05TKQogICAgIEV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAyYzgwMzBjYTg5NmViZGE2OWY1NTE3OTllY2ZlMTM3
ZmYxMmRjOWE0Li5mYWY5M2I3M2EyYjAxNDEwMzgwNWE1Y2M2YmNhN2I2NTNhNjUyN2I3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC05Myw3ICs5Myw3IEBAIE1lZGlhU3RyYXRl
Z3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCiAKIGNsYXNz
IFdlYkJsb2JSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHJpdmF0ZToK
LSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJl
ZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVn
aXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVu
dFR5cGUpOyB9CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3Rv
cjxCbG9iUGFydD4mJiBwYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBt
X2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVu
dFR5cGUpOyB9CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmws
IHNyY1VSTCk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsg
bV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBz
cmNVUkwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAppbmRleCA5YjI1N2Y0ZjI1NTJlZmYwMmVkNDdiY2U4NTM3ZGQ0NDcw
YTQzMTdlLi40NzViMjFmMTczNzJmOGU4ODNkOTEzNjNjNDA5ZThhYTRmYTQ2NDBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgTWVkaWFTdHJhdGVn
eSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkKIAogY2xhc3Mg
V2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBwcml2YXRlOgot
ICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZp
bmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVm
ZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdp
c3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50
VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9y
PEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1f
YmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50
VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwg
c3JjVVJMKTsgfQogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBt
X2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNy
Y1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzOWJiZWRhOTI0ZWVhY2U5MmE3
OTUyMzczNzBhMmQxNjg2NGQ5OTRjLi5mM2Y0ZjAyNzhiNzQxMmZiZTc2YzU4ZjVjYzIwM2I0NzY4
NDFmNWMzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNj
ZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91
bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAg
ICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDpwYXJh
bWV0ZXJzOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0
aW9uOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0
ZXJWaWV3Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3
OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhh
bmRsZXI6d2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1l
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFy
Z2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFsbG9jXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6
cG9wdXBUYXJnZXQ6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0
byBpbml0aWFsaXplCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCmluZGV4IDU3MGFhYTU0ZGI5NzBlNDc0MjQ4OTRmN2JkODcxYTczZjJj
N2RkMGUuLmI1NWIyZjc3ZWNmZDVjYTU0NTNlYTEzMGVhMzgzYjljMjgxYjZhNmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBA
IC03NiwzOSArNzYsMzAgQEAgLSAodm9pZClwZXJmb3JtQWN0aW9uOihOU1RleHRGaW5kZXJBY3Rp
b24pb3AKIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2JqZWN0IHsK
IEBwcml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7Ci0gICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBXS09wZW5QYW5lbFBhcmFtZXRl
cnMgKl9wYXJhbWV0ZXJzOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldAogCi0tIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9w
ZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxv
d2VkRmlsZUV4dGVuc2lvbnMgeworLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVs
KilvcGVuUGFuZWwgcGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVy
cyB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewogICAgICAgICBfb3BlblBhbmVs
ID0gb3BlblBhbmVsOwotICAgICAgICBfYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRG
aWxlRXh0ZW5zaW9ucyBjb3B5XTsKKyAgICAgICAgX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwog
ICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2Vu
ZGVyIHsKLSAgICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVk
SXRlbV0gPT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCistICh2b2lkKXBvcHVwQWN0aW9u
OihOU0J1dHRvbiAqKXNlbmRlciB7CisgICAgaWYgKHNlbmRlci5zdGF0ZSA9PSBOU0NvbnRyb2xT
dGF0ZVZhbHVlT24pIHsKICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpu
aWxdOwotICAgIGVsc2UgaWYgKCFbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dKSB7Ci0gICAg
ICAgIC8vIEZpcnN0IGl0ZW0uCi0gICAgICAgIGlmICghW19hbGxvd2VkRmlsZUV4dGVuc2lvbnMg
Y291bnRdKQotICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0Ai
Il1dOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmls
ZVR5cGVzOl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgICAgICBfcGFyYW1ldGVycy5fdHJh
bnNjb2RlRGlzYWxsb3dlZEltYWdlcyA9IE5POworICAgIH0gZWxzZSB7CisgICAgICAgIFtfb3Bl
blBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X3BhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5z
aW9uc107CisgICAgICAgIF9wYXJhbWV0ZXJzLl90cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzID0g
WUVTOwogICAgIH0KIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19hbGxvd2VkRmlsZUV4
dGVuc2lvbnMgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiBAZW5kCiAKIEBp
bnRlcmZhY2UgV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKCkgPE5TVGV4dEZpbmRlckJhckNv
bnRhaW5lciwgV0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZSwgX1dLSWNvbkxvYWRp
bmdEZWxlZ2F0ZT4KQEAgLTYyOSw1MCArNjIwLDI3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0
CiAgICAgfV07CiB9CiAKLS0gKG51bGxhYmxlIE5TVmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5T
QXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQqKXBv
cHVwVGFyZ2V0CistIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihGaWxlRXh0
ZW5zaW9uc1BvcHVwVGFyZ2V0Kilwb3B1cFRhcmdldAogewotICAgIE5TVGV4dEZpZWxkKiBsYWJl
bCA9IFtbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9y
ZWxlYXNlXTsKLSAgICBbbGFiZWwgc2V0U3RyaW5nVmFsdWU6QCJGb3JtYXQ6Il07Ci0gICAgW2xh
YmVsIHNldEVkaXRhYmxlOk5PXTsKLSAgICBbbGFiZWwgc2V0U2VsZWN0YWJsZTpOT107Ci0gICAg
W2xhYmVsIHNldEJvcmRlcmVkOk5PXTsKLSAgICBbbGFiZWwgc2V0QmFja2dyb3VuZENvbG9yOltO
U0NvbG9yIGNsZWFyQ29sb3JdXTsKLSAgICBbbGFiZWwgc2l6ZVRvRml0XTsKLQotICAgIE5TUG9w
VXBCdXR0b24gKmJ1dHRvbiA9IFtbW05TUG9wVXBCdXR0b24gYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNaZXJvUmVjdCBwdWxsc0Rvd246Tk9dIGF1dG9yZWxlYXNlXTsKLSAgICBbYnV0dG9uIGFkZEl0
ZW1zV2l0aFRpdGxlczp0aXRsZXNdOwotICAgIFtidXR0b24gc2V0VGFyZ2V0OnBvcHVwVGFyZ2V0
XTsKLSAgICBbYnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rpb246KV07Ci0gICAg
W2J1dHRvbiBzaXplVG9GaXRdOwotICAgIFtidXR0b24gc2VsZWN0SXRlbUF0SW5kZXg6MF07Ci0g
ICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07Ci0gICAgCisgICAgTlNCdXR0b24g
KmNoZWNrYm94ID0gW05TQnV0dG9uIGNoZWNrYm94V2l0aFRpdGxlOkAiU2hvdyBhbGwgRmlsZXMi
IHRhcmdldDpwb3B1cFRhcmdldCBhY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOworICAg
IFtjaGVja2JveCBzaXplVG9GaXRdOworICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpjaGVj
a2JveF07CisgICAgICAgIAogICAgIE5TVmlldyogZmlsdGVyVmlldyA9IFtbW05TVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07Ci0gICAgW2ZpbHRlclZp
ZXcgYWRkU3VidmlldzpsYWJlbF07Ci0gICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpidXR0b25d
OwotCi0gICAgY29uc3QgQ0dGbG9hdCBtYXJnaW4gPSAyMDsKLSAgICBjb25zdCBDR0Zsb2F0IHNw
YWNpbmcgPSAyOwotICAgIGNvbnN0IENHRmxvYXQgbWluQnV0dG9uV2lkdGggPSAyMzA7CisgICAg
W2ZpbHRlclZpZXcgYWRkU3VidmlldzpjaGVja2JveF07CiAKLSAgICBOU1JlY3QgbGFiZWxGcmFt
ZSA9IFtsYWJlbCBmcmFtZV07Ci0gICAgTlNSZWN0IGJ1dHRvbkZyYW1lID0gW2J1dHRvbiBmcmFt
ZV07CisgICAgY29uc3QgQ0dGbG9hdCBtYXJnaW4gPSAxMDsKKyAgICAKKyAgICBOU1JlY3QgY2hl
Y2tib3hGcmFtZSA9IFtjaGVja2JveCBmcmFtZV07CiAgICAgTlNSZWN0IGZpbHRlclZpZXdGcmFt
ZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKIAotICAgIC8vIFNldCBhIG1pbmltdW0gd2lkdGggZm9y
ICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNpemUgPSBOU01ha2VTaXplKE1BWChOU1dpZHRo
KGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgpLCBOU0hlaWdodChidXR0b25GcmFtZSkpOwot
ICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdsYWJlbCcgYW5kICdidXR0b24n
IGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMuCi0gICAgZmlsdGVyVmll
d0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgobGFiZWxGcmFtZSkgKyBOU1dpZHRoKGJ1
dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hlaWdodChsYWJlbEZyYW1lKSwgTlNIZWlnaHQo
YnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOworICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkg
b3V0ICdjaGVja2JveCdob3Jpem9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgor
ICAgIGZpbHRlclZpZXdGcmFtZS5zaXplID0gTlNNYWtlU2l6ZShOU1dpZHRoKGNoZWNrYm94RnJh
bWUpLCBOU0hlaWdodChjaGVja2JveEZyYW1lKSArIG1hcmdpbiAqIDIpOwogICAgIFtmaWx0ZXJW
aWV3IHNldEZyYW1lOmZpbHRlclZpZXdGcmFtZV07CiAKLSAgICAvLyAnbGFiZWwnIHdpbGwgYmUg
bGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCi0gICAgbGFiZWxGcmFtZS5vcmlnaW4gPSBOU01h
a2VQb2ludChOU01pblgobGFiZWxGcmFtZSksIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0g
TlNIZWlnaHQobGFiZWxGcmFtZSkpIC8gMik7Ci0gICAgW2xhYmVsIHNldEZyYW1lOmxhYmVsRnJh
bWVdOwotICAgIAotICAgIC8vICdidXR0b24nIHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRp
Y2FsbHkgYW5kIGl0IHdpbGwgY29tZSBhZnRlciAnbGFiZWwnIGhvcml6b250YWxseS4KLSAgICBi
dXR0b25GcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01heFgobGFiZWxGcmFtZSkgKyBzcGFj
aW5nLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSkg
LyAyKTsKLSAgICBbYnV0dG9uIHNldEZyYW1lOmJ1dHRvbkZyYW1lXTsKKyAgICAvLyAnY2hlY2ti
b3hGcmFtZScgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseS4KKyAgICBjaGVja2Jv
eEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWluWChjaGVja2JveEZyYW1lKSwgKE5TSGVp
Z2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChjaGVja2JveEZyYW1lKSkgLyAyKTsKKyAg
ICBbY2hlY2tib3ggc2V0RnJhbWU6Y2hlY2tib3hGcmFtZV07CiAKICAgICByZXR1cm4gZmlsdGVy
VmlldzsKIH0KQEAgLTY4MCw3ICs2NDgsNyBAQCAtIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVG
aWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaQogI2lm
IF9faGFzX2ZlYXR1cmUob2JqY19nZW5lcmljcykKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TVVJMICo+ICogVVJMcykpY29tcGxl
dGlvbkhhbmRsZXIKICNlbHNlCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFt
ZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNBcnJheSAqVVJMcykpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczoo
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0Zy
YW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5ICpVUkxz
LCBCT09MIHRyYW5zY29kZUltYWdlcykpY29tcGxldGlvbkhhbmRsZXIKICNlbmRpZgogewogICAg
IE5TT3BlblBhbmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBhbmVsXTsKQEAgLTY4
OCwxMCArNjU2LDkgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9w
ZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmEKICAgICBvcGVuUGFuZWwuYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRpcGxlU2VsZWN0aW9u
OwogCiAgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwotICAgIF9maWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9j
XSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogcGFy
YW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICBfZmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVu
UGFuZWw6IG9wZW5QYW5lbCBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzXTsKIAotICAgIE5TQXJyYXkg
KmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc1RpdGxlczsKLSAgICBOU1ZpZXcgKmZpbHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0
ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBwb3B1cFRhcmdldDpfZmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldF07CisgICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRl
RmlsdGVyVmlldzpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CiAgICAgaWYgKGZpbHRlclZp
ZXcpCiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0ZXJWaWV3XTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403099</attachid>
            <date>2020-06-29 12:44:43 -0700</date>
            <delta_ts>2020-06-29 16:37:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200629124442.patch</filename>
            <type>text/plain</type>
            <size>90741</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxOGFkMzgyZjlkNDg0ZDIzNmFjMGMy
ZmM3NTE1MTYwYWU2NGQzYTguLjIwNWE1ZWIzZTdiNzA4NWFlNzk2MGUxODNhNzhmZWM1OTJhNGI5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWZlYzIxNjc5Y2U3OTAzNTgwNWI4MmZkNjhhNTQzMzFiOWVlNWVlZS4uYTE2NmJjYTVl
NzZjOTAzMDZiNDViZjVmZGJmNDJiNWNmZTg4ZTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDIwLTA2LTI5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZv
cm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQg
dG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwv
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZp
bGVMaXN0KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIHBsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVDaG9vc2VyRmlsZUluZm86OkZpbGVDaG9vc2VyRmlsZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxl
Q2hvb3NlclNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUZv
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRVbmlxdWVTdHJpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRBcHBlbmRBbGxJbWFnZXNFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmguCisgICAgICAgICogcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5
cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJs
b2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpz
dGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeS5oOgorCiAyMDIwLTA2LTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bVEZDXSBBZGp1c3QgdGFibGUgY29udGVudCB2ZXJ0aWNhbCBwb3Np
dGlvbiB0byBtYXRjaCB2ZXJ0aWNhbC1hbGlnbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZjEzM2ZjMmNlMmQ4Zjk3
YjQwNjJkNDQzMjc5ZDgxZTE4ZDEwNGY5Li5mMWMxZWVjNTBiNWQ1MzE4MzA4OWQ4Y2NhMTMwZTNh
ZDllNThmMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIwLTA2LTI4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
U2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0i
ZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFBs
YXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZXMpOgorICAgICAgICAqIFBsYXRm
b3JtL2NnL0NHVXRpbGl0aWVzLmg6CisgICAgICAgICogU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9w
ZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJz
OjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1l
dGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBh
bmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6CisgICAgICAgIChBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OnRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMgY29uc3QpOgor
ICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjpzZXRUcmFuc2NvZGVEaXNhbGxvd2Vk
SW1hZ2VzKToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJl
VHlwZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZp
bGVFeHRlbnNpb25zXSk6CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfdHJhbnNj
b2RlRGlzYWxsb3dlZEltYWdlc10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMg
X3NldFRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXM6XSk6CisgICAgICAgICgtW1dLT3BlblBhbmVs
UGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzXSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94
eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXI6OmRpZENob29zZUZpbGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDIwLTA2LTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHRocmVhZC1zYWZldHkgaXNzdWUgaW4gd2ViUHJvY2Vzc1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlk
Q2hhbmdlQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDcwNzdhZjE2
NGNkMTc4ZWJiNTBiM2VkNDhhZmUxYTRkYWUxMjUyZDcuLjMxMGU1MjdlZGI4OTJiNTZjZjE4YmI5
ZmEzNWIzMThhMjQzMWYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMC0wNi0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgorCisgICAgICAgIFttYWNPU106IFNlbGVjdGluZyBhIG5vbi1hY2NlcHRlZCBpbWFn
ZSBmb3JtYXQgdG8gYW4gPGlucHV0IHR5cGU9ImZpbGUiPiBlbGVtZW50IHNob3VsZCBjb252ZXJ0
IGl0IHRvIGFuIGFjY2VwdGVkIGZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1ODQ2
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wNi0yOCAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBpbml0aWFs
aXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCAyYjU0Mzk2YWNhMmVmYjQyZWFlMmI5MTlhZWNiYTY2MGVjNzNmNDdmLi45ZDUxZGIzNzlhZDdm
MjdiNzRmNWIwMWYwZDcxOThhZDE4ZDM4ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMjkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNj
ZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91
bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorCiAyMDIw
LTA2LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVu
YW1lIGluaXRpYWxpemVUaHJlYWRpbmcgdG8gaW5pdGlhbGl6ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4
IDYwYjMyZTQ2ZmM0MjkwODIzYTYyOWJkYTNlZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQzYzZk
NTJhOGE4YWYxNTVlNmU4ZWU4ZjkxMjAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsx
NDUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25z
dCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNo
b3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3Ry
aW5nJiBzdWZmaXggPSB7IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRs
ZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Bl
cm1pc3Npb24gPSBGaWxlQWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlz
dHMgPSBmYWxzZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlJik7CiAvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJl
Z2lubmluZyBvZiB0aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0ZmZh
ODlkNGRjZGY0MGFjMWIxYjg3ZC4uM2FjYjg2YWM3NzVjZGFkZjcyNWNkODgwODhkMmI1Y2Q0YjE0
YjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMsNyAr
OTMsNyBAQCBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVEaXJl
Y3RvcnkoKTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBvcGVu
VGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBw
bGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogewogICAgIHBsYXRmb3Jt
RmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKQEAgLTExMyw5ICsxMTMs
MTMgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0
Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUgKICAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBw
cmVmaXgudXRmOCgpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRh
dGEoKSwgcHJlZml4VXRmOC5sZW5ndGgoKSk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5k
KCJYWFhYWFgiLCA2KTsKKworICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4KKyAg
ICBDU3RyaW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZpbGVQ
YXRoLmFwcGVuZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAgICAg
dGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFuZGxl
ID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBsYXRmb3JtRmlsZUhh
bmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VXRmOC5sZW5n
dGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1Y2Ew
ZjVkZi4uZmEwYjUzMWZlMTBmZjc0ZWJhYjg2NWYzY2EwOTE1ZGExZDk1NzUxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBWZWN0b3I8
U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFt
ZS5nZXQoKSwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKaW5kZXggYzlmNTAxNDM2YWJjYzgwOTRlODQxNDgwZDIxZmUzNmE0NzFlODFmZi4uYjNjMDQw
MWI1MDZmZGNlMzIzMmVkNmZlZmJiYmYwZTUyZDEwMDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBnZXRWb2x1bWVG
cmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwogICAgIGNvbnN0IGNo
YXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKaW5kZXggNjU5ZGZkNTI3MjdkYzllZjY5OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4uYjYz
MTQ5NTczYTQ4NDFmZTYwMDFlZWZhZmRkMDA5MmNmYzc0MWFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJh
dGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rp
b24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
LCBjb25zdCBTdHJpbmcmKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCAwODI2ODcwNDc1MTY3OWU0MGU2MjgxNTBkMDc4NmE5ZGYz
MmQwMDU0Li41N2FlODc0NTRlOTBjMWFiNGMwODE4MzBkOTFjMTVjOTQ5OTMxYTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTk0NSw2ICs5NDUsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vRHJhZ0l0ZW0uaAogICAgIHBsYXRmb3JtL0V2ZW50
VHJhY2tpbmdSZWdpb25zLmgKICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisgICAgcGxhdGZv
cm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCiAgICAgcGxhdGZvcm0vRmlsZUhhbmRsZS5oCiAgICAg
cGxhdGZvcm0vRmlsZU1vbml0b3IuaAogICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW1DbGllbnQuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCA5NWM3Njk4Y2FlMmUwMjlmNTNiY2FkYzhjMDkzNThkYWUzMzJmODVm
Li5hYjc0NTQ0OTBlNmY0ZTdkYTc4YjBlMmQ2ZGUzODQ2Y2M2MzU5MzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMTc5Nyw2ICsxNzk3LDcgQEAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCiBwbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCiBwbGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9ucy5jcHAKIHBsYXRmb3Jt
L0ZpbGVDaG9vc2VyLmNwcAorcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHAKIHBsYXRm
b3JtL0ZpbGVIYW5kbGUuY3BwCiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAKIHBsYXRmb3JtL0Zp
bGVTdHJlYW0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZmEzMTkwOGJkMGNlNTdjNzQwZTJiMDU2Zjg0N2I5N2U0YmU1Yjhh
OS4uZjg1ODM3NzVkMDk1ZWQxYzQ1ZjliMGM5OTRiMTI5Yzc2ZmRkY2RjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE0Miw2
ICsyMTQyLDcgQEAKIAkJNzIxNDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIy
M0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZH
UHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIz
MEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAv
KiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTcyNDhERDRDMjRBNUMzRUQwMERFMDJCOCAvKiBGaWxlQ2hvb3Nl
clNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjQ4REQ0OTI0QTU5MDA2MDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVEMzMyMUEz
QThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNF
WFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0
MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3MzQsNiArOTczNSw4IEBACiAJCTcyMTQ0MzQ1
MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBbmltYXRpb25GcmFtZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzI0OERENDkyNEE1OTAwNjAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmlsZUNob29zZXJTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MjQ4REQ0QjI0QTU5MEM5MDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0
aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlQ2hvb3NlclNldHRpbmdzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVY
VEJsZW5kTWluTWF4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVY
VEJsZW5kTWluTWF4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMkEx
QTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNEVEMzJCMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRVhUQmxlbmRNaW5NYXguaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY0NDEsNiArMjY0NDQsOCBAQAogCQkJCTI2MkVDNDE5MUQwNzhGM0QwMEJB
NzhGQyAvKiBFdmVudFRyYWNraW5nUmVnaW9ucy5oICovLAogCQkJCTkzNEZFOUU0MEI1Q0E1Mzkw
MDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8sCiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4
Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCisJCQkJNzI0OERENEIyNEE1OTBDOTAwREUwMkI4IC8q
IEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwICovLAorCQkJCTcyNDhERDQ5MjRBNTkwMDYwMERFMDJC
OCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAx
MENEIC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAv
KiBGaWxlSGFuZGxlLmggKi8sCiAJCQkJN0EwOUNFRUIxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVN
b25pdG9yLmNwcCAqLywKQEAgLTMwNjcwLDYgKzMwNjc1LDcgQEAKIAkJCQk5NzZENkM4MTEyMkI4
QTNEMDAxRkQxRjcgLyogRmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4Rjg2REExRjUwOUU3
NDAwRThDRkM1IC8qIEZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2Qzc3MkIw
QUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjQ4
REQ0QzI0QTVDM0VEMDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTM1MUQ0QjExREY5MTZCNDAwODAxMENEIC8qIEZpbGVIYW5kbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBODhBOTA1MTc1NTNDRDcwMDBDNzRGOSAvKiBGaWxlSWNvbkxvYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggOGQ2ZTM4
NzM4NTUxM2RkZDQxZTAzNzI0MDk4YjQzMmVhY2VjZWJjMC4uMzcxMDA3YjQwMzgzNmViMzE5OTI4
OGJmYTE2Y2QyMzI0YmRhMjJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC00NiwxNiAr
NDYsMTcgQEAgUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXYKICAgICByZXR1cm4gZmlsZTsKIH0KIAot
UmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bmFtZU92ZXJyaWRlKQorUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlk
ZSkKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJpbmcgdHlwZTsKLSAgICBjb21wdXRlTmFt
ZUFuZENvbnRlbnRUeXBlKHBhdGgsIG5hbWVPdmVycmlkZSwgbmFtZSwgdHlwZSk7CisgICAgU3Ry
aW5nIGVmZmVjdGl2ZVBhdGggPSAhcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpID8gcmVwbGFjZW1l
bnRQYXRoIDogcGF0aDsKKyAgICBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGVmZmVjdGl2ZVBh
dGgsIG5hbWVPdmVycmlkZSwgbmFtZSwgdHlwZSk7CiAKICAgICBhdXRvIGludGVybmFsVVJMID0g
QmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBwYXRoLCB0eXBlKTsKKyAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBwYXRo
LCByZXBsYWNlbWVudFBhdGgsIHR5cGUpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmls
ZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBX
VEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGlu
dGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3RyaW5nIHsgZWZmZWN0aXZlUGF0aCB9LCBXVEZN
b3ZlKG5hbWUpKSk7CiB9CiAKIEZpbGU6OkZpbGUoVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlLCBT
dHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBkMmY5
MzhiNDIwZDNhNjBmYjkzZjc0MGJjYjA0ZDc0MWY4M2VmZjc4Li44Nzk3NGQwMDNjMzlkY2U1ZDgz
NGZjOTdmMDQ2OGZiMzJkZWQzMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRp
b25hbCBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2Np
YXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBp
biB0aGUgcGF0aC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9LCBjb25zdCBTdHJpbmcmIG5h
bWVPdmVycmlkZSA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3
IEZpbGUnIGNvbnN0cnVjdG9yLgogICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxC
bG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggNWUxZDRjMDBhOWMwNjhj
ODAzMWMyNGNjZDYwYWIyMGE2YWZhMDYwYi4uMTEzZjJlOTA2ZGJiNTdkMzBiY2E5ZDk1NTJlY2Vj
MzU1NmIzYjNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuY3BwCkBAIC02NCwxNSArNjQsMTYgQEAgc3RhdGljIFRocmVhZFNwZWNpZmlj
PEJsb2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAqbWFwOwogfQogCi12
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKKyAgICBTdHJpbmcgZWZmZWN0aXZlUGF0aCA9
ICFyZXBsYWNlbWVudFBhdGguaXNOdWxsKCkgPyByZXBsYWNlbWVudFBhdGggOiBwYXRoOwogICAg
IGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZp
bGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRl
bnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmws
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGVmZmVjdGl2ZVBhdGgpLCBwYXRoLCBjb250
ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBj
b250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGJsb2JS
ZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgZWZmZWN0aXZlUGF0aCA9IGVmZmVjdGl2ZVBhdGguaXNvbGF0
ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlwZSA9IGNvbnRl
bnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
RmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShlZmZlY3RpdmVQ
YXRoKSwgcGF0aCwgY29udGVudFR5cGUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IGE5Yzc5ZmUyMjkyZjg5
NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIuLmVjYjc0ZjE3YzA2ZGJlYmM3MzQ5ODNkYjM5MjFk
Yzk4OTg0MTU5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBj
bGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGly
ZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5
RmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCAxYWY5ZWIyMmM0YTY0MzUyMTQxZTcxOTU2ZTUyYTZj
ZmY2MmEwZjQ3Li5mMDA5ODlkZDAzZmMxMjk1NjNhODg1NDg2ZDVhNTdhYTdhZDIwZDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuY3BwCkBA
IC02NCw3ICs2NCw3IEBAIHN0YXRpYyBSZWY8RmlsZUxpc3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMpCiAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhpbmZv
LnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxlT2JqZWN0
cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpj
cmVhdGUoaW5mby5wYXRoLCBpbmZvLmRpc3BsYXlOYW1lKSk7CisgICAgICAgICAgICBmaWxlT2Jq
ZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgeyB9LCBpbmZvLmRpc3BsYXlOYW1l
KSk7CiAgICAgfQogICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVj
dHMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGYzYzcwOThj
YmY1ZTRiODIwZWI2ODBmN2NjNDI2NTVmMGI5ZTJkNmQuLjdkNTRmNTllMDJjNjFiM2NlOTM2MjJj
NmViNWIxMWQwM2E2ZmViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApA
QCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKIAogICAgIGlmICghYWxs
b3dzRGlyZWN0b3JpZXMoKSkgewogICAgICAgICBhdXRvIGZpbGVzID0gcGF0aHMubWFwKFtdKGF1
dG8mIGZpbGVJbmZvKSB7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJbmZv
LnBhdGgsIGZpbGVJbmZvLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlOjpj
cmVhdGUoZmlsZUluZm8ucGF0aCwgZmlsZUluZm8ucmVwbGFjZW1lbnRQYXRoLCBmaWxlSW5mby5k
aXNwbGF5TmFtZSk7CiAgICAgICAgIH0pOwogICAgICAgICBkaWRDcmVhdGVGaWxlTGlzdChGaWxl
TGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZXMpKSwgaWNvbik7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAppbmRleCBhYzdmNWQ0N2JjZjQ1Mzhm
ZWQ4MGM2MmI5OWMyNDczNTA0NzQ4ODViLi5kMTQ0ZDFhYzMyZWM1ZWE2YjE3Zjg4MGMxY2EyZTEy
MGFmZTMzOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICBjaG9vc2VGaWxlcyhmaWxlbmFtZXMpOwogfQogCi12b2lkIEZpbGVDaG9v
c2VyOjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQordm9pZCBG
aWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50TmFtZXMpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBzaG91bGQgbm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3Mg
aGVyZS4KICAgICBpZiAobV9zZXR0aW5ncy5zZWxlY3RlZEZpbGVzID09IGZpbGVuYW1lcykKQEAg
LTY4LDggKzY4LDggQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEZpbGVD
aG9vc2VyRmlsZUluZm8+IGZpbGVzOwotICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFt
ZXMpCi0gICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmaWxlbmFtZXMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKQorICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFt
ZXNbaV0sIGkgPCByZXBsYWNlbWVudE5hbWVzLnNpemUoKSA/IHJlcGxhY2VtZW50TmFtZXNbaV0g
OiBudWxsU3RyaW5nKCkpKTsKICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAppbmRleCBlNTFlYjllODQzODc5NWE3
NmZlYzlhM2RiZjdjNmEwODRlYTA4ODk1Li44Nzc5MzQyNmRjYTRhNDE2NTg2MjVkM2VjMGE2NmYy
ZjdlNTI0MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKQEAgLTI5LDI1
ICsyOSwxOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CisjaW5jbHVkZSAiRmlsZUNob29zZXJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotZW51bSBNZWRpYUNhcHR1cmVUeXBlIHsKLSAgICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKLSAg
ICBNZWRpYUNhcHR1cmVUeXBlVXNlciwKLSAgICBNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQK
LX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyOwogY2xhc3MgSWNvbjsKIAogc3RydWN0IEZpbGVDaG9v
c2VyRmlsZUluZm8gewotICAgIEZpbGVDaG9vc2VyRmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lID0gU3RyaW5nKCkpCisgICAgRmlsZUNob29zZXJG
aWxlSW5mbyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRo
ID0geyB9LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lID0geyB9KQogICAgICAgICA6IHBhdGgo
cGF0aCkKKyAgICAgICAgLCByZXBsYWNlbWVudFBhdGgocmVwbGFjZW1lbnRQYXRoKQogICAgICAg
ICAsIGRpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQogICAgIHsKICAgICB9CkBAIC01OCwyMCArNTIs
MTAgQEAgc3RydWN0IEZpbGVDaG9vc2VyRmlsZUluZm8gewogICAgIH0KIAogICAgIGNvbnN0IFN0
cmluZyBwYXRoOworICAgIGNvbnN0IFN0cmluZyByZXBsYWNlbWVudFBhdGg7CiAgICAgY29uc3Qg
U3RyaW5nIGRpc3BsYXlOYW1lOwogfTsKIAotc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3Mgewot
ICAgIGJvb2wgYWxsb3dzRGlyZWN0b3JpZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgYWxsb3dzTXVs
dGlwbGVGaWxlcyB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVz
OwotICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZpbGVFeHRlbnNpb25zOwotICAgIFZlY3RvcjxT
dHJpbmc+IHNlbGVjdGVkRmlsZXM7Ci0jaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgTWVk
aWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlIHsgTWVkaWFDYXB0dXJlVHlwZU5vbmUgfTsK
LSNlbmRpZgotfTsKLQogY2xhc3MgRmlsZUNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkZpbGVDaG9vc2VyQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtODYsOCArNzAsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2hvb3NlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNob29zZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnROYW1lcyA9IHsgfSk7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBhbG1v
c3QgaWRlbnRpY2FsIHRvIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpLiBXZSBzaG91bGQgbWVy
Z2UgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHdpdGggRmlsZUNob29zZXI6OmNob29zZUZpbGVzKCkg
YW5kIGhlbmNlIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3VhcmQuCkBAIC0xMDcs
MTYgKzkxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVk
aWFDYXB0dXJlVHlwZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAg
IFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVy
ZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1
cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0
dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50Ci0gICAgPjsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXJTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNl
dHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDQ4NTlmZjIyNjJiYWUwMDM2MmYyMDc4MTZmMDkwNWRl
ZDM2YmZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXJTZXR0aW5ncy5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVDaG9vc2VyU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8g
ZXh0ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5ndGgoKSAtIDEpIDogZXh0ZW5zaW9uKTsKK30K
Kworc3RhdGljIHZvaWQgYXBwZW5kVW5pcXVlU3RyaW5ncyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c3RyaW5ncywgVmVjdG9yPFN0cmluZz4mIGFsbFN0cmluZ3MpCit7CisgICAgZm9yIChhdXRvJiBz
dHJpbmcgOiBzdHJpbmdzKQorICAgICAgICBhbGxTdHJpbmdzLmFwcGVuZElmTm90Q29udGFpbnMo
c3RyaW5nKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucywgVmVjdG9yPFN0cmluZz4mIGFsbE1JTUVU
eXBlcykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnMpIHsKKyAgICAg
ICAgYXV0byBtaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAg
ICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgQVNTRVJUKG1pbWVUeXBlLmNvbnRhaW5zKCcvJykpOworICAgICAgICBhbGxNSU1FVHlwZXMu
YXBwZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBh
cHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlw
ZXMsIFZlY3RvcjxTdHJpbmc+JiBhbGxFeHRlbnNpb25zKQoreworICAgIGZvciAoYXV0byYgbWlt
ZVR5cGUgOiBtaW1lVHlwZXMpIHsKKyAgICAgICAgQVNTRVJUKG1pbWVUeXBlLmNvbnRhaW5zKCcv
JykpOworICAgICAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4
dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSksIGFsbEV4dGVuc2lvbnMpOworICAgIH0KK30K
Kworc3RhdGljIGJvb2wgc2hvdWxkQXBwZW5kQWxsSW1hZ2VzRXh0ZW5zaW9ucyhWZWN0b3I8U3Ry
aW5nPiYgYWxsRXh0ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGFsbEV4
dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9u
KGV4dGVuc2lvbik7CisgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZElt
YWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IEZpbGVDaG9vc2Vy
U2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+
IGFsbG93ZWRNSU1FVHlwZXM7CisKKyAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2Vw
dE1JTUVUeXBlcywgYWxsb3dlZE1JTUVUeXBlcyk7CisgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0
ZW5zaW9ucyh0aGlzLT5hY2NlcHRGaWxlRXh0ZW5zaW9ucywgYWxsb3dlZE1JTUVUeXBlcyk7CisK
KyAgICBpZiAoIXRoaXMtPnRyYW5zY29kZURpc2FsbG93ZWRJbWFnZXMpIHsKKyAgICAgICAgYXV0
byBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBl
KCJpbWFnZS8qIl9zKTsKKyAgICAgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhleHRl
bnNpb25zLCBhbGxvd2VkTUlNRVR5cGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dlZE1J
TUVUeXBlczsKK30KKworVmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dl
ZEZpbGVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkRmls
ZUV4dGVuc2lvbnM7CisKKyAgICBhcHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKHRoaXMtPmFj
Y2VwdE1JTUVUeXBlcywgYWxsb3dlZEZpbGVFeHRlbnNpb25zKTsKKyAgICBhcHBlbmRVbmlxdWVT
dHJpbmdzKHRoaXMtPmFjY2VwdEZpbGVFeHRlbnNpb25zLCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMp
OworCisgICAgaWYgKHNob3VsZEFwcGVuZEFsbEltYWdlc0V4dGVuc2lvbnMoYWxsb3dlZEZpbGVF
eHRlbnNpb25zKSkgeworICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoImltYWdlLyoiX3MpOworICAgICAgICBhcHBlbmRV
bmlxdWVTdHJpbmdzKGV4dGVuc2lvbnMsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk7CisgICAgfQor
CisgICAgcmV0dXJuIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2OWNkNDA0
NjAxZTQ3MmM3YzE5NTY5ZmZiNGFjM2FiYWQxYWYyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIE1lZGlhQ2FwdHVyZVR5cGUgeworICAgIE1lZGlhQ2FwdHVyZVR5cGVO
b25lLAorICAgIE1lZGlhQ2FwdHVyZVR5cGVVc2VyLAorICAgIE1lZGlhQ2FwdHVyZVR5cGVFbnZp
cm9ubWVudAorfTsKKworc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgeworICAgIGJvb2wgYWxs
b3dzRGlyZWN0b3JpZXMgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcyB7
IGZhbHNlIH07CisgICAgYm9vbCB0cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzIHsgZmFsc2UgfTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRNSU1FVHlwZXM7CisgICAgVmVjdG9yPFN0cmluZz4g
YWNjZXB0RmlsZUV4dGVuc2lvbnM7CisgICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0ZWRGaWxlczsK
KyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2Fw
dHVyZVR5cGUgeyBNZWRpYUNhcHR1cmVUeXBlTm9uZSB9OworI2VuZGlmCisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJl
VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlw
ZU5vbmUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5
cGVVc2VyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVU
eXBlRW52aXJvbm1lbnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggOTk2ZWU3ODRlZGUyYWRi
MDFhMTU1MGUyZmU1MGQ1MDY0M2IzZmEzZi4uZDM3ZjliOTFkZjJjMDdhNTM0NmJmY2VjZmU2Njkw
ZGE0MjhiNzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
aApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyBnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
KTsKICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0TWVkaWFNSU1FVHlwZXNGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwogCi0gICAgc3RhdGljIFN0cmluZyBnZXRNSU1F
VHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YT4g
Y3JlYXRlTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEoKTsKIApAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJ
bWFnZVZpZGVvT3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8v
IENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgZW5jb2Rl
ZC4KLSAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3Ig
YmVpbmcgbG9hZGVkIGFzIGEgSmF2YVNjcmlwdCBvciBKU09OIHJlc291cmNlLgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCmluZGV4IDJiM2ZlMDU1ODRmOTY0ZTA5OTc2
ODQ2YWExMjk4MDc2ZWE0YmUxNTAuLjI4Y2RjNWU4MTA5MzA5NmIzYjljNDhlOGZmYTUyZGRhNWZk
MTI3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBl
UmVnaXN0cnlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1F
VHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTI3LDExICsyNyw3MCBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKKyNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvQ29yZVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TVVJMRmlsZVR5
cGVNYXBwaW5nc1NQSS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmlu
Zz4+JiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQoreworICAgIHN0YXRpYyBhdXRvIGV4dGVu
c2lvbnNGb3JNSU1FVHlwZU1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsK
KworICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlID0gWyZdKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIHsKKyAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmVuc3VyZSh0eXBlLCBbXSgpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSGFzaFNldDxTdHJpbmc+KCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKGV4dGVuc2lvbik7Cisg
ICAgICAgIH07CisKKyAgICAgICAgYXV0byBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUgPSBbJl0o
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBDRkFycmF5UmVmJiBleHRlbnNpb25zKSB7CisgICAg
ICAgICAgICBhdXRvIHdpbGRjYXJkTUlNRVR5cGUgPSBtYWtlU3RyaW5nKHR5cGUuc3BsaXQoJy8n
KS5maXJzdCgpLCAiLyoiX3MpOworCisgICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnMpOyBpIDwgY291bnQ7IGkrKykgeworCisg
ICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uID0gcmVpbnRlcnByZXRfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChleHRlbnNpb25zLCBpKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byB3aWxkY2FyZE1JTUVUeXBl
LCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlLyoiCisgICAgICAgICAgICAgICAgYWRk
RXh0ZW5zaW9uRm9yTUlNRVR5cGUod2lsZGNhcmRNSU1FVHlwZSwgZXh0ZW5zaW9uKTsKKyAgICAg
ICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGl0c21pbWVUeXBlLCBmb3IgZXhhbXBsZSBh
ZGQgInBuZyIgdG8gImltYWdlL3BuZyIKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JN
SU1FVHlwZSh0eXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisg
ICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBhbGxVVElzID0gYWRvcHRDRihfVVRDb3B5RGVj
bGFyZWRUeXBlSWRlbnRpZmllcnMoKSk7CisKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBj
b3VudCA9IENGQXJyYXlHZXRDb3VudChhbGxVVElzLmdldCgpKTsgaSA8IGNvdW50OyArK2kpIHsK
KyAgICAgICAgICAgIGF1dG8gdXRpID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoYWxsVVRJcy5nZXQoKSwgaSkpOworICAgICAgICAgICAgYXV0byB0eXBl
ID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xh
c3NNSU1FVHlwZSkpOworICAgICAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihVVFR5cGVDb3B5
QWxsVGFnc1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKKyAg
ICAgICAgICAgIGlmICghZXh0ZW5zaW9ucyB8fCAhQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnMu
Z2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYWRkRXh0ZW5z
aW9uc0Zvck1JTUVUeXBlKHR5cGUuZ2V0KCksIGV4dGVuc2lvbnMuZ2V0KCkpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKKyAgICB9KCkpOwor
CisgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKK30KKworc3RhdGljIFZlY3Rv
cjxTdHJpbmc+IGV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zOworCisgICAgYXV0byBpdGVyID0g
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkuZmluZCh0eXBlKTsKKyAgICBpZiAoaXRlciAhPSBl
eHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKS5lbmQoKSkKKyAgICAgICAgZXh0ZW5zaW9ucy5hcHBl
bmRSYW5nZShpdGVyLT52YWx1ZS5iZWdpbigpLCBpdGVyLT52YWx1ZS5lbmQoKSk7CisKKyAgICBy
ZXR1cm4gZXh0ZW5zaW9uczsKK30KKwogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVU
eXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIHJldHVybiBb
W05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gTUlNRVR5cGVGb3JFeHRlbnNp
b246KE5TU3RyaW5nICopZXh0ZW5zaW9uXTsKQEAgLTM5LDYgKzk4LDggQEAgU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKQogCiBWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9y
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogeworICAgIGlmICh0eXBlLmVuZHNXaXRoKCcq
JykpCisgICAgICAgIHJldHVybiBleHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlwZSh0eXBlKTsK
ICAgICByZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNo
YXJlZE1hcHBpbmdzXSBleHRlbnNpb25zRm9yTUlNRVR5cGU6dHlwZV0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5jcHAKaW5kZXggNWFiZmQ3NWNiNDk0NTZlNDJkMzlkNDRkM2JjMjI1OWFhZmZhNTIyNi4u
ZWJhYjYxODJlM2VhNDg5Y2NkODIyNDY2YTYzYWI0ZTI0ZWQwZTg1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmNwcApAQCAtMzIsMTcgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBwYXRo
KQorQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCkKICAgICA6IG1fcGF0aChw
YXRoKQorICAgICwgbV9yZXBsYWNlbWVudFBhdGgocmVwbGFjZW1lbnRQYXRoKQogewogfQogCiBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2UoKQogewotI2lmIEVO
QUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxs
KCkpCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwot
I2VuZGlmCiB9CiAKIGNvbnN0IFN0cmluZyYgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpwYXRoKCkK
QEAgLTUwLDEwICs0OSw5IEBAIGNvbnN0IFN0cmluZyYgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpw
YXRoKCkKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBpZiAobV9yZXBsYWNlbWVu
dFNob3VsZEJlR2VuZXJhdGVkKQogICAgICAgICBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZSgpOwot
CisjZW5kaWYKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gbV9yZXBsYWNlbWVudFBhdGg7Ci0jZW5kaWYKIAogICAgIHJldHVybiBtX3BhdGg7CiB9
CkBAIC0xMDEsNiArOTksMTIgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnN0YXJ0VHJh
Y2tpbmdNb2RpZmljYXRpb25zKCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKKyAgICBpZiAo
IW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgIG1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpOwor
ICAgICAgICBpZiAoIW1ldGFkYXRhKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgK
aW5kZXggNjU4ODI5ZDA3ZmNmYmQ2YjAyYTIwZTFjYjAxZmRjOWQ2ZGNjMDdjOS4uOGZjYmU4YzEx
ZjIxMzQ4Y2VmZTQ4ZWQwMjY2NWM1NWQ2MzY5Njc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC0zNSw5
ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRQYXRoID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlKHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgsIHJlcGxhY2VtZW50UGF0aCkpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgfkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJldm9rZUZpbGVBY2Nlc3MoKTsKIAogcHJvdGVjdGVkOgot
ICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRQYXRoKTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKQEAg
LTYwLDggKzYwLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIG1fcGF0aDsKLSNp
ZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBTdHJpbmcgbV9yZXBsYWNlbWVudFBhdGg7
CisjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgYm9vbCBtX3JlcGxhY2VtZW50U2hv
dWxkQmVHZW5lcmF0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeS5oCmluZGV4IGZlOTFlODFhYWQ0MzAyZTAzZGI5NjdhNDZhMzA2YWM2ZDQyY2NlNTUu
LjRiMTVjZGRiZTBlNGM3NmU4ZjkyYjAwMmQ2MmE5YWIwMmI3YTZiYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkgewogcHVibGljOgogCiAgICAgLy8g
UmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSA9IDA7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJpbmcgdG8g
dGhlIHNwZWNpZmllZCBibG9iIGRhdGEuCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmYwY2U2NDlkOGIxN2Zl
ZjhkNjZlZjEzZDYzYmM1ZmRlNjhjNTI0Yy4uODkzMTg5Y2ZhMDc4OWQ1MWM3N2E1ZTMyYjQ1ZDNk
NWIzYjJmNGVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTczNyw3ICs3Mzcs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxDb29raWVzRGVsZXRl
ZCgpCiAKICNlbmRpZgogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdp
c3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGV4dGVuc2lvbkhh
bmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBORVRXT1JLX1BST0NFU1Nf
TUVTU0FHRV9DSEVDSyghdXJsLmlzRW1wdHkoKSk7CiAKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdAogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSkpLCBjb250ZW50
VHlwZSk7CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1
cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGF0
aCwgcmVwbGFjZW1lbnRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShleHRl
bnNpb25IYW5kbGUpKSksIGNvbnRlbnRUeXBlKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Qmxv
YlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtNzc0LDcg
Kzc3NCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSCiAgICAgaWYgKCFzZXNzaW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlQmFja2VkUGF0aCwgbnVsbHB0ciksIGNv
bnRlbnRUeXBlKTsKKyAgICBzZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0
LCBpbnQ2NF90IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBlODIzMDAwOWVjOTZi
ZmVlZjIwOThhMWFlZWU3YTI3YWMzOThjM2RhLi4xOGNjZWQ5N2M2NTMyYTM2YTcwYTMxZGQ3MWQ2
YWZiYWY4ZDY2ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yMTUsNyArMjE1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFJhd0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUm
KTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZy
b21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjIwMGQ0
YzRhZDIwY2Y2YzJmMWE1YjdhNDAzNmIwNjc0ODAxNDNlZS4uN2I4MjI1MjMyNzAwYWE2ODhjOWQ4
NGFhYzA0MjBjNDk3YjZlNWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC00Niw3ICs0Niw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVbnN1YnNjcmliZUZyb21Db29raWVD
aGFuZ2VOb3RpZmljYXRpb25zKEhhc2hTZXQ8U3RyaW5nPiBob3N0cykKICNlbmRpZgogCi0gICAg
UmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCisg
ICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwgU3RyaW5nIHJlcGxh
Y2VtZW50UGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFu
ZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCiAgICAgUmVnaXN0ZXJCbG9iVVJMKFVSTCB1cmwsIFZl
Y3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCiAg
ICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChVUkwgdXJsLCBVUkwgc3JjVVJMKQogICAgIFJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFVSTCB1cmwsIFVSTCBzcmNVUkwsIFN0cmlu
ZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAppbmRleCBmNjk2MDFjZWYwZWZjOTNkYmVkM2UwNTNkNTM0MDgxNDdiZTNl
ZDk3Li5jZmZjOTlmODJiMDQ0YzQ5YjA1MDJiZTk1ZGNjOGNiODk5MWMyMjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTcsNyArNTcsNyBAQCBCbG9iUmVnaXN0cnkq
IE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQog
ewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGNsYXNzIEVtcHR5QmxvYlJlZ2lz
dHJ5IDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7Ci0gICAgICAgIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0
cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZp
bmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9D
R1V0aWxpdGllcy5jcHAKaW5kZXggYWYwOGY2ZDVlZmI0YWFhODZiMTA0YTQ5Yzk4NTVmMjA3MjVi
NjgwOC4uMmU2OGEwYzkxM2IxMGMwODEwNGFhM2I5NGUzYjQwNTg3OTI0ZmUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKQEAgLTI2LDYgKzI2LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIKIAorI2luY2x1ZGUg
PEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB2b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHSW1hZ2VSZWYg
aW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24sIENHUmVjdCBz
b3VyY2UpCkBAIC00Niw0ICs1Miw4MiBAQCB2b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUAogICAgIENH
Q29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKK1N0cmluZyB0cmFuc2NvZGVJbWFn
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgQVNT
RVJUKG1pbWVUeXBlLnN0YXJ0c1dpdGgoImltYWdlLyJfcykpOworCisgICAgLy8gQ3JlYXRlIHRo
ZSBpbWFnZSBzb3VyY2UuCisgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRl
V2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgYXV0byBzb3Vy
Y2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwg
bnVsbHB0cikpOworICAgIGlmICghc291cmNlKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RF9XSVRIX01FU1NBR0UoIlNvdXJjZSBwYXRoIGlzIG5vdCBhIHZhbGlkIGltYWdlLiIpOworICAg
ICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICBhdXRvIHNvdXJjZVVUSSA9IFN0cmluZyhD
R0ltYWdlU291cmNlR2V0VHlwZShzb3VyY2UuZ2V0KCkpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50
VVRJID0gV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBpZiAoc291cmNl
VVRJID09IHJlcGxhY2VtZW50VVRJKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRF9XSVRI
X01FU1NBR0UoIlNvdXJjZSBpbWFnZSBhbHJlYWR5IGhhcyB0aGUgcmVwbGFjZW1lbnQgTUlNRSB0
eXBlLiIpOworICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlIHRo
ZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIHByZWZpeCBhbmQgZmlsZSBleHRlbnNpb24uCisgICAgYXV0
byBjb21wb25lbnRzID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpLnNwbGl0KCcu
Jyk7CisgICAgYXV0byBleHRlbnNpb24gPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQ
cmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgYXV0byBwcmVmaXgg
PSBtYWtlU3RyaW5nKGNvbXBvbmVudHMuZmlyc3QoKSwgIl8iX3MpOworICAgIGF1dG8gc3VmZml4
ID0gbWFrZVN0cmluZygiLiJfcywgZXh0ZW5zaW9uKTsKKworICAgIC8vIENyZWF0ZSBhIHRlbXBv
cmFyeSBmaWxlLgorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXBsYWNlbWVu
dEZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKHByZWZpeCwgcmVwbGFjZW1lbnRGaWxlSGFuZGxlLCBzdWZmaXgpOwor
ICAgIGlmIChyZXBsYWNlbWVudEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdF
KCJSZXBsYWNlbWVudCBpbWFnZSBjYW4ndCBiZSBjcmVhdGVkLiIpOworICAgICAgICByZXR1cm4g
cGF0aDsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgdGhlIGRhdGEgY29uc3VtZXIuCisgICAgQ0dE
YXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyBbXSh2b2lkICppbmZvLCBjb25zdCB2
b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkgLT4gc2l6ZV90IHsKKyAgICAgICAgYXV0byBwbGF0
Zm9ybUZpbGVIYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlKj4oaW5mbyk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShwbGF0
Zm9ybUZpbGVIYW5kbGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBjb3VudCk7
CisgICAgfSwgbnVsbHB0ciB9OworCisgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSByZXBsYWNlbWVu
dC4KKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgmcmVw
bGFjZW1lbnRGaWxlSGFuZGxlLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byByZXBsYWNlbWVudCA9
IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGFDb25zdW1lcihjb25zdW1l
ci5nZXQoKSwgcmVwbGFjZW1lbnRVVEkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMSwgbnVsbHB0
cikpOworCisgICAgLy8gV3JpdGUgdGhlIHNvdXJjZSBpbWFnZSB0byB0aGUgcmVwbGFjZW1lbnQg
aW1hZ2UuCisgICAgc2l6ZV90IGluZGV4ID0gQ0dJbWFnZVNvdXJjZUdldFByaW1hcnlJbWFnZUlu
ZGV4KHNvdXJjZS5nZXQoKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2VGcm9tU291
cmNlKHJlcGxhY2VtZW50LmdldCgpLCBzb3VyY2UuZ2V0KCksIGluZGV4LCBudWxscHRyKTsKKyAg
ICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShyZXBsYWNlbWVudC5nZXQoKSk7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcGxhY2VtZW50RmlsZUhhbmRsZSk7CisKKyAgICByZXR1cm4g
cmVwbGFjZW1lbnRQYXRoOworfQorCitWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVJbWFnZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1J
TUVUeXBlcykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFBhdGhzOworICAgIFN0
cmluZyBwcmVmZXJyZWRFbmNvZGluZ01JTUVUeXBlOworICAgIAorICAgIGZvciAoYXV0byBtaW1l
VHlwZSA6IGFsbG93ZWRNSU1FVHlwZXMpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSkg
eworICAgICAgICAgICAgcHJlZmVycmVkRW5jb2RpbmdNSU1FVHlwZSA9IG1pbWVUeXBlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAocHJlZmVycmVkRW5j
b2RpbmdNSU1FVHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aHM7
CisKKyAgICBmb3IgKGF1dG8mIHBhdGggOiBwYXRocykgeworICAgICAgICBhdXRvIG1pbWVUeXBl
ID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKHBhdGgpOwor
ICAgICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5jb250YWlucyhtaW1lVHlwZSkpCisgICAgICAg
ICAgICByZXBsYWNlbWVudFBhdGhzLmFwcGVuZChudWxsU3RyaW5nKCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXBsYWNlbWVudFBhdGhzLmFwcGVuZCh0cmFuc2NvZGVJbWFnZShwYXRo
LCBwcmVmZXJyZWRFbmNvZGluZ01JTUVUeXBlKSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBy
ZXBsYWNlbWVudFBhdGhzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaAppbmRleCA4NTFkMTgxYThmYzc1NzNjOTMwY2ZjNjAz
YjBmNDE0Mjg3NDdiMjJkLi45NWRhNmQ5Mzc3OThiMmNhMjkxN2E4NjBlNmYxNTBjZjIyMTVmYTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCkBAIC0yOSw2ICsyOSw4
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBwYWludEltYWdlKENHQ29udGV4dFJlZiwg
Q0dJbWFnZVJlZiwgQ0dGbG9hdCBzY2FsZUZhY3RvciwgQ0dQb2ludCBkZXN0aW5hdGlvbiwgQ0dS
ZWN0IHNvdXJjZSk7CitTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKK1ZlY3RvcjxTdHJpbmc+IHRyYW5zY29kZUltYWdlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2Vk
TUlNRVR5cGVzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uLmNwcAppbmRleCBmYzc0YjYwMTczYzU1MjU5MGI1NGUzNDBjNjZhZTFmYTM2
ODQ1NzBhLi45YTU2ZTM5YjkyNmI5NjYyNDVkNjliNTc5MjIzZDEwMWYwNTVmZGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJv
eEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lv
bjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKQotICAg
IDogQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgpCitCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgUmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikKKyAgICA6IEJsb2JEYXRh
RmlsZVJlZmVyZW5jZShwYXRoLCByZXBsYWNlbWVudFBhdGgpCiAgICAgLCBtX3NhbmRib3hFeHRl
bnNpb24oV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJv
eEV4dGVuc2lvbi5oCmluZGV4IDc1YTVkNGQwY2JiZWMwODVhZmRkYjM4ZmViYjUzM2U3MzY0MDYz
MjYuLjdiODMyOWYyMjlhNTVmZDRkYmMzYzQ0NjgzNzliYjMxYmYxMDM1OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uaApAQCAtMzQsMTMgKzM0LDEzIEBAIGNsYXNzIFNhbmRib3hF
eHRlbnNpb247CiAKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5z
aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24p
CisgICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoID0geyB9LCBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uKHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbikpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b24ocGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSk7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYpOwor
ICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiYmKTsKICAgICB2aXJ0dWFsIH5CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJv
eEV4dGVuc2lvbigpOwogCiAgICAgdm9pZCBwcmVwYXJlRm9yRmlsZUFjY2VzcygpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuY3BwCmluZGV4IDg1MWViZjVjMDM5ZTdiMjg5MTlhZjkxMGIwMmZlYTAwY2VlZWRm
NDcuLmQzNWE3NGE4N2FhMGI4NTJmNDA4NzQ2MWQ3Yzg1MjRkZDZiMGUzMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5j
cHAKQEAgLTU4LDEyICs1OCwxNSBAQCBSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVy
czo6YWNjZXB0RmlsZUV4dGVuc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBBUEk6OkFycmF5Ojpj
cmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKTsKIH0KIAot
I2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQotV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBPcGVu
UGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QKK1JlZjxBUEk6OkFycmF5
PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOworICAgIHJldHVybiBBUEk6OkFycmF5
OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRNSU1FVHlwZXMoKSk7Cit9CisK
K1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkRmlsZUV4dGVuc2lv
bnMoKSBjb25zdAoreworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheSht
X3NldHRpbmdzLmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsKIH0KLSNlbmRpZgogCiBSZWY8QVBJ
OjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJh
bWV0ZXJzLmgKaW5kZXggNzMwZTVkNWVlZmYyYmEwYmU0ODk0N2IwZDc5N2U2MzE1YzMyNmI5MS4u
YjJlMDhiZTlkNTAxOWM4ZWNmODc1MmZkN2E3MjkyNGYxMDIzNjVhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCkBAIC00
Miw5ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd011bHRpcGxlRmlsZXMoKSBjb25z
dCB7IHJldHVybiBtX3NldHRpbmdzLmFsbG93c011bHRpcGxlRmlsZXM7IH0KICAgICBSZWY8QVBJ
OjpBcnJheT4gYWNjZXB0TUlNRVR5cGVzKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IGFj
Y2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgUmVmPEFQSTo6QXJyYXk+IGFsbG93ZWRN
SU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4gYWxsb3dlZEZpbGVFeHRlbnNp
b25zKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IHNlbGVjdGVkRmlsZU5hbWVzKCkgY29u
c3Q7CisgICAgYm9vbCB0cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9zZXR0aW5ncy50cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzOyB9CisgICAgdm9pZCBzZXRUcmFu
c2NvZGVEaXNhbGxvd2VkSW1hZ2VzKGJvb2wgZmxhZykgeyBtX3NldHRpbmdzLnRyYW5zY29kZURp
c2FsbG93ZWRJbWFnZXMgPSBmbGFnOyB9CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAg
V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3Q7CisgICAg
V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzLm1tCmluZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIx
NDg4MjMuLjdiMjk5YzliYTJjZGRlOWQ2MWYwOWM5ZmM1YWNmNTRhYWNlZjA3NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRl
cnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5tbQpAQCAtMjUsNjAgKzI1LDExIEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiV0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvQ29yZVNlcnZpY2VzU1BJLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBv
cnQgIldLTlNBcnJheS5oIgogCi1zdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0
PE5TU3RyaW5nICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQotewotICAgIHN0YXRp
YyBhdXRvIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgYXV0byBhbGxVVElzID0gYWRv
cHRDRihfVVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSk7Ci0KLSAgICAgICAgYXV0byBh
ZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSA9IF4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1N0cmluZyAq
ZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5n
ZXQoKVttaW1lVHlwZV0pCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFw
LmdldCgpW21pbWVUeXBlXSA9IFtOU011dGFibGVTZXQgc2V0XTsKLSAgICAgICAgICAgIFtleHRl
bnNpb25zRm9yTUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVdIGFkZE9iamVjdDpleHRlbnNpb25d
OwotICAgICAgICB9OwotCi0gICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlID0g
XihOU1N0cmluZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpIHsK
LSAgICAgICAgICAgIGF1dG8gd2lsZGNhcmRNSU1FVHlwZSA9IFtbbWltZVR5cGUgY29tcG9uZW50
c1NlcGFyYXRlZEJ5U3RyaW5nOkAiLyJdWzBdIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiLyoi
XTsKLQotICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnMp
IHsKLSAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byB3aWxkY2FyZE1J
TUVUeXBlLCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlLyoiCi0gICAgICAgICAgICAg
ICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUod2lsZGNhcmRNSU1FVHlwZSwgZXh0ZW5zaW9uKTsK
LSAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGl0c21pbWVUeXBlLCBmb3IgZXhh
bXBsZSBhZGQgInBuZyIgdG8gImltYWdlL3BuZyIKLSAgICAgICAgICAgICAgICBhZGRFeHRlbnNp
b25Gb3JNSU1FVHlwZShtaW1lVHlwZSwgZXh0ZW5zaW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfTsKLQotICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGFsbFVUSXMuZ2V0KCkpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgYXV0byB1
dGkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhbGxV
VElzLmdldCgpLCBpKSk7Ci0gICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gYWRvcHRDRihVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwot
ICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRo
Q2xhc3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Ci0gICAgICAgICAgICBh
ZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKF9fYnJpZGdlIE5TU3RyaW5nICopbWltZVR5cGUuZ2V0
KCksIChfX2JyaWRnZSBOU0FycmF5PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9ucy5nZXQoKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBBZGQgYWRkaXRpb25hbCBtaW1lIHR5cGVzIHdoaWNoIF9V
VENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpIG1heSBub3QgcmV0dXJuLgotICAgICAgICBh
ZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShAImltYWdlL3dlYnAiLCBAIndlYnAiKTsKLQotICAgICAg
ICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOwotICAgIH0oKSk7Ci0KLSAgICByZXR1
cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpLmdldCgpOwotfQotCi1zdGF0aWMgTlNT
ZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUp
Ci17Ci0gICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBvYmplY3RGb3JLZXk6
bWltZXR5cGVdOwotfQotCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAK
IC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTExNCw1OCArNjUsMTcgQEAgc3Rh
dGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1p
bWV0eXBlKQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
cwogewotICAgIC8vIEFnZ3JlZ2F0ZSBleHRlbnNpb25zIGJhc2VkIG9uIHNwZWNpZmllZCBNSU1F
IHR5cGVzLgotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1F
VHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRl
ZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIGF1dG8gYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkTUlNRVR5
cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJ
bnRlZ2VyIGluZGV4LCBCT09MKiBzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29u
dGFpbnNTdHJpbmc6QCIvIl0pOwotICAgICAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIHVuaW9u
U2V0OmV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSldOwotICAgIH1dOwotCi0gICAgYXV0
byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVtZXJh
dGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24sIE5TVUludGVnZXIgaW5k
ZXgsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgQVNTRVJUKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSAnLicpOwotICAgICAgICBbYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9u
cyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOwotICAgIH1dOwot
ICAgIAotICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRp
dGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zLmdldCgpXTsKLSAgICByZXR1cm4gW2FsbG93ZWRG
aWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKKyAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVs
UGFyYW1ldGVycy0+YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkpOworfQorCistIChCT09MKV90cmFu
c2NvZGVEaXNhbGxvd2VkSW1hZ2VzCit7CisgICAgcmV0dXJuIF9vcGVuUGFuZWxQYXJhbWV0ZXJz
LT50cmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzKCk7CiB9CiAKLS0gKE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCistICh2b2lkKV9zZXRUcmFuc2NvZGVE
aXNhbGxvd2VkSW1hZ2VzOihCT09MKWZsYWcKIHsKLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVz
ID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVu
c2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBjb25zdGV4cHIg
YXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNvbnN0ZXhwciBhdXRvIEN1
c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAgaWYgKCFbYWNjZXB0
ZWRNSU1FVHlwZXMgY291bnRdICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0g
ICAgICAgIHJldHVybiBAW0FsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKCEoW2FjY2VwdGVkTUlN
RVR5cGVzIGNvdW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pKQot
ICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLQotICAg
IGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmplY3RdOwotICAgIGF1
dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAgICAKLSAgICBpZiAo
IXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmls
ZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFttaW1lVHlwZSBzdWJz
dHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0g
W21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOwotICAgIAot
ICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQotICAgICAgICBy
ZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW21pbWVU
eXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21pbWVUeXBl
UHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYg
KFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBwZXJjYXNlU3Ry
aW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIHJldHVybiBAW1tO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1lVHlwZVN1ZmZpeCwgbWltZVR5
cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICBfb3BlblBhbmVsUGFyYW1ldGVycy0+c2V0
VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyhmbGFnKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgxMjBlNGFmMWJhZWEyMmMwNjI0YWMyZTIzYjRl
MWJkNGFkNi4uYzZhOTUwYjcxMThkOGM2ZTlmYmFiNWRiOTI3Y2RkOWFlODkyOTU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1l
dGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FjY2Vw
dGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0
ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2Fs
bG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAq
X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIHNldHRlcj1fc2V0
VHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlczopIEJPT0wgX3RyYW5zY29kZURpc2FsbG93ZWRJbWFn
ZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggNDljNzE0Mjc4NWVj
MjliNDQ2ZmQ5NTY5NzgxOTVhMTk3ZDM5YjkzZi4uMGEwMWJkMWU3MTA0YjZmZmI4M2JmZmUzNWYz
NDRmMTc5YmZhOWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJ
RGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNpbXBvcnQgIkFQSUZyYW1lSW5m
by5oIgogI2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5oIgpAQCAtODI2LDcgKzgyNyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkq
IHdlYkZyCiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdp
dGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAg
ICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdp
dGhQYXJhbWV0ZXJzOndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJh
bWU6d3JhcHBlcihmcmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5TQXJy
YXkgKlVSTHMpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5t
X3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3BlblBhbmVsUGFy
YW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBvcGVuUGFuZWxQYXJh
bWV0ZXJzID0gbWFrZVJlZigqb3BlblBhbmVsUGFyYW1ldGVycyksIGxpc3RlbmVyID0gV1RGTW92
ZShsaXN0ZW5lcildIChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg0MCw3
ICs4NDEsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcgogICAgICAgICBmb3IgKE5TVVJMICp1
cmwgaW4gVVJMcykKICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQodXJsLnBhdGgpOwogCi0g
ICAgICAgIGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBsaXN0ZW5l
ci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzLCBvcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkTUlN
RVR5cGVzKCktPnRvU3RyaW5nVmVjdG9yKCkpOwogICAgIH0pLmdldCgpXTsKIAogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCA4NTc0NjUxNWRhNjdkMTQyYWY3ZGZh
ZDg4ZGU4YTQ4YTgzZjYxYzEwLi5kMTVmZWUyZmQ5MWIzN2UwNzMxOTQ1ZDU0ZTNhNDMzMzU3ZjEw
Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIHZvaWQgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYgZmlsCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQor
dm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1J
TUVUeXBlcykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
YWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlbmFtZXMpOworICAgIG1fcGFnZS0+
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVzLCBhbGxvd2VkTUlNRVR5cGVzKTsK
IH0KIAogdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5jZWwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eS5oCmluZGV4IDFlZWNkY2ExN2RjMzhkYWU5NWUyODljYWFmNzA4NjFjZDBiNzZj
NWYuLjNhOThhNDQ2MzRkNjlkNTU4ZTgyNmMwZWNhM2M3NjVkOWM4NTIyZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNvbkltYWdl
RGF0YSk7CiAjZW5kaWYKLSAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMpOworICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMgPSB7IH0p
OwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdhNzQ3MjU1MDlkZjJhNzYxYmUx
MTUwZWFhZTQ2ZDQ0NmRjNTljYjUuLmM5YzdiZTU1MzViNzRjMTUwMDlhY2RlNzkyMjI5Y2ExMzNm
OTk4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAx
LDYgKzIwMSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkNH
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNpbmNsdWRlICJS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJU
cmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCkBAIC02NjgzLDE3ICs2Njg0LDI4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3Ry
aW5nQW5kSWNvbihjb25zdCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5
cGVzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byByZXBsYWNlbWVudFVSTHMgPSB0cmFuc2Nv
ZGVJbWFnZXMoZmlsZVVSTHMsIGFsbG93ZWRNSU1FVHlwZXMpOworI2Vsc2UKKyAgICBWZWN0b3I8
U3RyaW5nPiByZXBsYWNlbWVudFVSTHM7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWRNSU1FVHlw
ZXMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgIGF1dG8g
c2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25s
eUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bCJfcywgZmlsZVVSTHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRlbnNpb25GaWxl
czsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUoKTsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFwcGVuZChpIDwgcmVwbGFj
ZW1lbnRVUkxzLnNpemUoKSAmJiAhcmVwbGFjZW1lbnRVUkxzW2ldLmlzTnVsbCgpID8gcmVwbGFj
ZW1lbnRVUkxzW2ldIDogZmlsZVVSTHNbaV0pOworCisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVz
KCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBzYW5kYm94RXh0
ZW5zaW9uRmlsZXMpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hG
b3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsK
ICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWwoZmlsZVVSTHMpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9v
c2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgcmVwbGFjZW1lbnRVUkxzKSk7CiAKICAgICBt
X29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGFlMTk1YmQ3ZTJmODI0MGQxZTdkODhjN2I3ZGUxNDIyYTRkYjkyOTYuLmJhNWFl
MGQ5MWM1YWQ3OGYwODUxNDFiNzZiNmZjNDBmZTNmMTAzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0
aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25EYXRhKTsKICNlbmRpZgotICAg
IHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
KyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMgPSB7IH0p
OwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CiAKICAgICBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmLCBEcmF3aW5n
QXJlYVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHAKaW5kZXggOGY0N2I4ZjA3MGUxZjI5ODMzNDUzOGRjYThjZjRkNGU0YTM5NGM0Yi4u
OTAzZjk0MWQ3NTgyN2U3MjU3MmVmYjgyMWI2ZDIzZWE5Y2ZiYWRlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApA
QCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZTsKIApAQCAtNDQsNyArNDQsOCBA
QCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZQogICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHko
KSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRs
ZSwgY29udGVudFR5cGUpLCAwKTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoID0gcGF0aCA9
PSBmaWxlLT5wYXRoKCkgPyBudWxsU3RyaW5nKCkgOiBmaWxlLT5wYXRoKCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckZpbGVCbG9iVVJMKHVybCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBleHRlbnNpb25IYW5k
bGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDQwOTg0ZGIyN2RhZGQ3ZDY1
ZTlhNTFhYzE3MmQwNTc3MTkyZDRhMzguLmU4MzdhNjk2NGUwNDdkM2E0NWIzMjBlZDAzNmI2YThh
NzMwM2Y2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJl
Z2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVS
TCYsIFJlZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggZDk4MzQz
YzQ1MTk3MDA1YWVhMzZhOTZkMTEyYjRkNWU2YmZkOTJhYy4uZDJhYWVmNTM5ZjM2NjU0MTJiNGNm
ZmJkZWQ1YmE5ZTYyYTQ5NTA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcApAQCAt
NDYsOSArNDYsOSBAQCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6fldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyKCkKIHsKIH0KIAotdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6
ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQordm9pZCBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRGaWxlcykKIHsKLSAgICBt
X2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9maWxlQ2hvb3Nlci0+Y2hv
b3NlRmlsZXMoZmlsZXMsIHJlcGxhY2VtZW50RmlsZXMpOwogfQogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCmluZGV4IGQwZDg1OWI4ZDMwNjNmNDdh
NjE2YzIwNDBlZjM3ZWI0ZmQxYmQwZjkuLjhkYzQ2ZWZiYTFjY2JhMjEyMjE2MjQzZTdhNGU0NDc3
MzI1MTBjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtNDQsNyArNDQsNyBAQCBw
dWJsaWM6CiAgICAgfldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCk7CiAKICAgICB2b2lkIGRp
c2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQotICAgIHZvaWQgZGlkQ2hvb3NlRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9yaWdpbmFsRmls
ZXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc1dp
dGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheVN0cmluZywgV2ViQ29yZTo6SWNvbiopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQyMjY0NmQ2MjExZTdiMzQ1
N2IyNzIzOTdmOGFiOGNjZjJlM2VhNmQuLjY3MDkyMjdlNzk4ZjkwNWY1YzQ3YTlkMDkxNTc1MzM2
NDBmZGRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC00MzAwLDEyICs0MzAwLDEyIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0CiB9CiAj
ZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZXMpCit2b2lkIFdlYlBhZ2U6OmRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHJlcGxhY2VtZW50RmlsZXMpCiB7CiAgICAgaWYgKCFtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLT5kaWRDaG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci0+ZGlkQ2hvb3NlRmlsZXMoZmlsZXMsIHJlcGxhY2VtZW50RmlsZXMpOwogICAg
IG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk0YWNhYWYxODU1Mzg3
ZjVlYzA4OGJmM2YzNzZiYjFlYTFjZWFlZC4uNTJiN2M4Mjc2YjEzN2M5NjA1MGI4NjEwM2JmZjQz
YjQ0OTM0ZWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTYwMyw3ICsxNjAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZhaWxlZFRvU2hvd1Bv
cHVwTWVudSgpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBy
ZXBsYWNlbWVudEZpbGVzKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDY4ODlkNjIzMmI5ZmU1NTdhMTlh
MzkwYTNhZmU0NGQ4NzNmNjllMDkuLmM1ZTM0MzFmNjE3NDhjMWQ0MTBkMGJkNDUyNWNmMjFlNGY2
NmM2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtMzQzLDcgKzM0Myw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihWZWN0b3I8U3RyaW5nPiBmaWxlVVJMcywgU3Ry
aW5nIGRpc3BsYXlTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBpY29uRGF0YSwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lv
biwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaWNvblNlcnZpY2VzU2FuZGJveEV4
dGVuc2lvbikKICNlbmRpZgotICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKFZlY3RvcjxT
dHJpbmc+IGZpbGVVUkxzKQorICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKFZlY3RvcjxT
dHJpbmc+IGZpbGVVUkxzLCBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHMpCiAgICAgRGlk
Q2FuY2VsRm9yT3BlblBhbmVsKCkKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAg
IEV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQppbmRleCAyYzgwMzBjYTg5NmViZGE2OWY1NTE3OTllY2ZlMTM3ZmYxMmRjOWE0Li5m
YWY5M2I3M2EyYjAxNDEwMzgwNWE1Y2M2YmNhN2I2NTNhNjUyN2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCkBAIC05Myw3ICs5Myw3IEBAIE1lZGlhU3RyYXRlZ3kqIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCiAKIGNsYXNzIFdlYkJsb2JSZWdp
c3RyeSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHJpdmF0ZToKLSAgICB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxv
YlJlZ2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNv
bnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0
ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4m
JiBwYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
KSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0K
ICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBy
ZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0
cnkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1v
dmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCA5YjI1N2Y0ZjI1NTJlZmYwMmVkNDdiY2U4NTM3ZGQ0NDcwYTQzMTdlLi40NzVi
MjFmMTczNzJmOGU4ODNkOTEzNjNjNDA5ZThhYTRmYTQ2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgTWVkaWFTdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkKIAogY2xhc3MgV2ViQmxvYlJlZ2lz
dHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBwcml2YXRlOgotICAgIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9i
UmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29u
dGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJs
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3Rl
ckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYm
IHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5
LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwp
IGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsgfQog
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJl
ZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92
ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzOWJiZWRhOTI0ZWVhY2U5MmE3OTUyMzczNzBhMmQx
Njg2NGQ5OTRjLi5mM2Y0ZjAyNzhiNzQxMmZiZTc2YzU4ZjVjYzIwM2I0NzY4NDFmNWMzIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2Ug
Zm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBp
dCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDpwYXJhbWV0ZXJzOl0pOgor
ICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3Ol0pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRo
T3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6
XSk6IERlbGV0ZWQuCisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXpl
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9EdW1wUmVuZGVyVHJlZS54Y3NjaGVtZSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL0R1bXBSZW5kZXJUcmVlLnhjc2NoZW1lCmluZGV4IGRjNjE3NjI4ZmU4MDI4YWJiNTM0
Zjc2MWQ2YzhjNGNiZDZlOTNkM2IuLjg3Mjg1ZTc3OWVhYzljZWI1MTk1ZDVkNzliZDI5YTc4ZTk3
MTY1YmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0R1bXBSZW5kZXJUcmVlLnhjc2NoZW1lCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai94Y3NoYXJl
ZGRhdGEveGNzY2hlbWVzL0R1bXBSZW5kZXJUcmVlLnhjc2NoZW1lCkBAIC01MCw2ICs1MCwxNiBA
QAogICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6RHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qIj4KICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgogICAgICAg
PC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudHM+
CisgICAgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAi
L1ZvbHVtZXMvRGF0YS9XZWJLaXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
bGUvcmVjb3Zlci1maWxlLWlucHV0LWluLXVucG9zdGVkLWZvcm0uaHRtbCIKKyAgICAgICAgICAg
IGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAg
ICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnQKKyAgICAgICAgICAgIGFyZ3VtZW50ID0gIi0tbm8t
dGltZW91dCIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9Db21t
YW5kTGluZUFyZ3VtZW50PgorICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4KICAgIDwvTGF1
bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9
ICJSZWxlYXNlIgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQppbmRleCA1NzBhYWE1NGRiOTcwZTQ3NDI0ODk0ZjdiZDg3MWE3M2YyYzdk
ZDBlLi5iNTViMmY3N2VjZmQ1Y2E1NDUzZWExMzBlYTM4M2I5YzI4MWI2YTZkIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAt
NzYsMzkgKzc2LDMwIEBAIC0gKHZvaWQpcGVyZm9ybUFjdGlvbjooTlNUZXh0RmluZGVyQWN0aW9u
KW9wCiBAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVjdCB7CiBA
cHJpdmF0ZQogICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOwotICAgIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
ICpfcGFyYW1ldGVyczsKIH0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEZpbGVFeHRlbnNpb25z
UG9wdXBUYXJnZXQKIAotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVu
UGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIHsKKy0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCop
b3BlblBhbmVsIHBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMg
ewogICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5QYW5lbCA9
IG9wZW5QYW5lbDsKLSAgICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmls
ZUV4dGVuc2lvbnMgY29weV07CisgICAgICAgIF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAg
ICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpcG9wdXBBY3Rpb246KGlkKXNlbmRl
ciB7Ci0gICAgLy8gTGFzdCBpdGVtLgotICAgIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0
ZW1dID09IFtzZW5kZXIgbnVtYmVyT2ZJdGVtc10gLSAxKQorLSAodm9pZClwb3B1cEFjdGlvbjoo
TlNCdXR0b24gKilzZW5kZXIgeworICAgIGlmIChzZW5kZXIuc3RhdGUgPT0gTlNDb250cm9sU3Rh
dGVWYWx1ZU9uKSB7CiAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6bmls
XTsKLSAgICBlbHNlIGlmICghW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSkgewotICAgICAg
ICAvLyBGaXJzdCBpdGVtLgotICAgICAgICBpZiAoIVtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNv
dW50XSkKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJd
XTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVU
eXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICAgICAgX3BhcmFtZXRlcnMuX3RyYW5z
Y29kZURpc2FsbG93ZWRJbWFnZXMgPSBOTzsKKyAgICB9IGVsc2UgeworICAgICAgICBbX29wZW5Q
YW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9wYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNdOworICAgICAgICBfcGFyYW1ldGVycy5fdHJhbnNjb2RlRGlzYWxsb3dlZEltYWdlcyA9IFlF
UzsKICAgICB9CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxsb3dlZEZpbGVFeHRl
bnNpb25zIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogQGVuZAogCiBAaW50
ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5kZXJCYXJDb250
YWluZXIsIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0ljb25Mb2FkaW5n
RGVsZWdhdGU+CkBAIC02MjksNTAgKzYyMCwyNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAog
ICAgIH1dOwogfQogCi0tIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0Fy
cmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Kilwb3B1
cFRhcmdldAorLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooRmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKIHsKLSAgICBOU1RleHRGaWVsZCogbGFiZWwg
PSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVs
ZWFzZV07Ci0gICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwotICAgIFtsYWJl
bCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwotICAgIFts
YWJlbCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xvcjpbTlND
b2xvciBjbGVhckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAgICBOU1BvcFVw
QnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRvbiBhZGRJdGVt
c1dpdGhUaXRsZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdldF07
Ci0gICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwotICAgIFti
dXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBdOwotICAg
IFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwotICAgIAorICAgIE5TQnV0dG9uICpj
aGVja2JveCA9IFtOU0J1dHRvbiBjaGVja2JveFdpdGhUaXRsZTpAIlNob3cgYWxsIEZpbGVzIiB0
YXJnZXQ6cG9wdXBUYXJnZXQgYWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKKyAgICBb
Y2hlY2tib3ggc2l6ZVRvRml0XTsKKyAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246Y2hlY2ti
b3hdOworICAgICAgICAKICAgICBOU1ZpZXcqIGZpbHRlclZpZXcgPSBbW1tOU1ZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwotICAgIFtmaWx0ZXJWaWV3
IGFkZFN1YnZpZXc6bGFiZWxdOwotICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZpZXc6YnV0dG9uXTsK
LQotICAgIGNvbnN0IENHRmxvYXQgbWFyZ2luID0gMjA7Ci0gICAgY29uc3QgQ0dGbG9hdCBzcGFj
aW5nID0gMjsKLSAgICBjb25zdCBDR0Zsb2F0IG1pbkJ1dHRvbldpZHRoID0gMjMwOworICAgIFtm
aWx0ZXJWaWV3IGFkZFN1YnZpZXc6Y2hlY2tib3hdOwogCi0gICAgTlNSZWN0IGxhYmVsRnJhbWUg
PSBbbGFiZWwgZnJhbWVdOwotICAgIE5TUmVjdCBidXR0b25GcmFtZSA9IFtidXR0b24gZnJhbWVd
OworICAgIGNvbnN0IENHRmxvYXQgbWFyZ2luID0gMTA7CisgICAgCisgICAgTlNSZWN0IGNoZWNr
Ym94RnJhbWUgPSBbY2hlY2tib3ggZnJhbWVdOwogICAgIE5TUmVjdCBmaWx0ZXJWaWV3RnJhbWUg
PSBbZmlsdGVyVmlldyBmcmFtZV07CiAKLSAgICAvLyBTZXQgYSBtaW5pbXVtIHdpZHRoIGZvciAn
YnV0dG9uJy4KLSAgICBidXR0b25GcmFtZS5zaXplID0gTlNNYWtlU2l6ZShNQVgoTlNXaWR0aChi
dXR0b25GcmFtZSksIG1pbkJ1dHRvbldpZHRoKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKTsKLSAg
ICAKLSAgICAvLyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91dCAnbGFiZWwnIGFuZCAnYnV0dG9uJyBo
b3Jpem9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgotICAgIGZpbHRlclZpZXdG
cmFtZS5zaXplID0gTlNNYWtlU2l6ZShOU1dpZHRoKGxhYmVsRnJhbWUpICsgTlNXaWR0aChidXR0
b25GcmFtZSkgKyBzcGFjaW5nLCBNQVgoTlNIZWlnaHQobGFiZWxGcmFtZSksIE5TSGVpZ2h0KGJ1
dHRvbkZyYW1lKSkgKyBtYXJnaW4gKiAyKTsKKyAgICAvLyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91
dCAnY2hlY2tib3gnaG9yaXpvbnRhbGx5IGFuZCBoYXZlIGEgdmVydGljYWwgbWFyZ2lucy4KKyAg
ICBmaWx0ZXJWaWV3RnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUoTlNXaWR0aChjaGVja2JveEZyYW1l
KSwgTlNIZWlnaHQoY2hlY2tib3hGcmFtZSkgKyBtYXJnaW4gKiAyKTsKICAgICBbZmlsdGVyVmll
dyBzZXRGcmFtZTpmaWx0ZXJWaWV3RnJhbWVdOwogCi0gICAgLy8gJ2xhYmVsJyB3aWxsIGJlIGxh
aWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5LgotICAgIGxhYmVsRnJhbWUub3JpZ2luID0gTlNNYWtl
UG9pbnQoTlNNaW5YKGxhYmVsRnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5T
SGVpZ2h0KGxhYmVsRnJhbWUpKSAvIDIpOwotICAgIFtsYWJlbCBzZXRGcmFtZTpsYWJlbEZyYW1l
XTsKLSAgICAKLSAgICAvLyAnYnV0dG9uJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNh
bGx5IGFuZCBpdCB3aWxsIGNvbWUgYWZ0ZXIgJ2xhYmVsJyBob3Jpem9udGFsbHkuCi0gICAgYnV0
dG9uRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNYXhYKGxhYmVsRnJhbWUpICsgc3BhY2lu
ZywgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChidXR0b25GcmFtZSkpIC8g
Mik7Ci0gICAgW2J1dHRvbiBzZXRGcmFtZTpidXR0b25GcmFtZV07CisgICAgLy8gJ2NoZWNrYm94
RnJhbWUnIHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCisgICAgY2hlY2tib3hG
cmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01pblgoY2hlY2tib3hGcmFtZSksIChOU0hlaWdo
dChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNIZWlnaHQoY2hlY2tib3hGcmFtZSkpIC8gMik7CisgICAg
W2NoZWNrYm94IHNldEZyYW1lOmNoZWNrYm94RnJhbWVdOwogCiAgICAgcmV0dXJuIGZpbHRlclZp
ZXc7CiB9CkBAIC02ODAsNyArNjQ4LDcgQEAgLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmls
dGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVuc2kKICNpZiBf
X2hhc19mZWF0dXJlKG9iamNfZ2VuZXJpY3MpCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVy
cyAqKXBhcmFtZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1VSTCAqPiAqIFVSTHMpKWNvbXBsZXRp
b25IYW5kbGVyCiAjZWxzZQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0
ZXJzIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TQXJyYXkgKlVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdL
T3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFt
ZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheSAqVVJMcywg
Qk9PTCB0cmFuc2NvZGVJbWFnZXMpKWNvbXBsZXRpb25IYW5kbGVyCiAjZW5kaWYKIHsKICAgICBO
U09wZW5QYW5lbCAqb3BlblBhbmVsID0gW05TT3BlblBhbmVsIG9wZW5QYW5lbF07CkBAIC02ODgs
MTAgKzY1Niw5IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVu
UGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAgICAgb3BlblBhbmVsLmFsbG93
c011bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsK
IAogICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAgICBfZmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10g
aW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFt
ZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBU
YXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBh
bmVsOiBvcGVuUGFuZWwgcGFyYW1ldGVyczogcGFyYW1ldGVyc107CiAKLSAgICBOU0FycmF5ICph
bGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXM7Ci0gICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVy
VmlldzphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXRdOworICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZp
bHRlclZpZXc6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOwogICAgIGlmIChmaWx0ZXJWaWV3
KQogICAgICAgICBbb3BlblBhbmVsIHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403135</attachid>
            <date>2020-06-29 16:38:00 -0700</date>
            <delta_ts>2020-06-29 19:29:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200629163758.patch</filename>
            <type>text/plain</type>
            <size>92468</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxOGFkMzgyZjlkNDg0ZDIzNmFjMGMy
ZmM3NTE1MTYwYWU2NGQzYTguLjIwNWE1ZWIzZTdiNzA4NWFlNzk2MGUxODNhNzhmZWM1OTJhNGI5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWZlYzIxNjc5Y2U3OTAzNTgwNWI4MmZkNjhhNTQzMzFiOWVlNWVlZS4uNzhjOGMwYmZm
NjEyZDJkMjBlN2I5NmFmMmU4ZDViNzNlN2RmNTkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDIwLTA2LTI5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZv
cm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQg
dG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwv
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZp
bGVMaXN0KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIHBsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVDaG9vc2VyRmlsZUluZm86OkZpbGVDaG9vc2VyRmlsZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxl
Q2hvb3NlclNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUZv
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRVbmlxdWVTdHJpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRBcHBlbmRBbGxJbWFnZXNFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmguCisgICAgICAgICogcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5
cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJs
b2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpz
dGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0
cnlQbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9NSU1FVHlw
ZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Omdl
dEV4dGVuc2lvbnNGb3JNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0veGRnL01JTUVUeXBl
UmVnaXN0cnlYZGcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0
RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKToKKwogMjAyMC0wNi0yOCAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRqdXN0IHRhYmxlIGNvbnRlbnQg
dmVydGljYWwgcG9zaXRpb24gdG8gbWF0Y2ggdmVydGljYWwtYWxpZ24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmYx
MzNmYzJjZTJkOGY5N2I0MDYyZDQ0MzI3OWQ4MWUxOGQxMDRmOS4uZjFjMWVlYzUwYjVkNTMxODMw
ODlkOGNjYTEzMGUzYWQ5ZTU4ZjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMC0w
Ni0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFttYWNPU106IFNlbGVjdGluZyBhIG5vbi1hY2NlcHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4g
PGlucHV0IHR5cGU9ImZpbGUiPiBlbGVtZW50IHNob3VsZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2Vw
dGVkIGZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1ODQ2ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1hZ2VzKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oOgorICAgICAgICAqIFNoYXJlZC9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgICogU2hhcmVkL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKEFQSTo6T3BlblBh
bmVsUGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9w
ZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb25zdCk6CisgICAgICAg
IChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oOgor
ICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjp0cmFuc2NvZGVEaXNhbGxvd2VkSW1h
Z2VzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6c2V0VHJhbnNj
b2RlRGlzYWxsb3dlZEltYWdlcyk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6
Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRl
cnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFt
ZXRlcnMgX3RyYW5zY29kZURpc2FsbG93ZWRJbWFnZXNdKToKKyAgICAgICAgKC1bV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzIF9zZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzOl0pOgorICAgICAgICAo
LVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZp
bGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojpj
aG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Qmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vc2VGaWxlcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKwogMjAyMC0wNi0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCB0aHJlYWQtc2FmZXR5IGlzc3VlIGluIHdlYlByb2Nlc3NQb29sSGlnaER5
bmFtaWNSYW5nZURpZENoYW5nZUNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCA3MDc3YWYxNjRjZDE3OGViYjUwYjNlZDQ4YWZlMWE0ZGFlMTI1MmQ3Li4zMTBlNTI3ZWRi
ODkyYjU2Y2YxOGJiOWZhMzViMzE4YTI0MzFmMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fi
b3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24t
YWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBz
aG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIw
MjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggMmI1NDM5NmFjYTJlZmI0MmVhZTJiOTE5YWVjYmE2NjBlYzczZjQ3Zi4u
OWQ1MWRiMzc5YWQ3ZjI3Yjc0ZjViMDFmMGQ3MTk4YWQxOGQzOGQxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA2LTI5ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0
aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+
IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAppbmRleCA2MGIzMmU0NmZjNDI5MDgyM2E2MjliZGEzZWQyNzJhODNiNmFiNGE2Li5i
ZmU4NDEyOTZkM2M2ZDUyYThhOGFmMTU1ZTZlOGVlOGY5MTIwMTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
CkBAIC0xNDUsNyArMTQ1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGlzSGFu
ZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRs
ZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRo
ZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1X
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRs
ZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUs
IEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBm
YWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNl
dCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3
aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1t
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGFjZWRmNWZk
ZDFiMmU3NjgyNGZmYTg5ZDRkY2RmNDBhYzFiMWI4N2QuLjNhY2I4NmFjNzc1Y2RhZGY3MjVjZDg4
MDg4ZDJiNWNkNGIxNGI1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2Eu
bW0KQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKICAgICByZXR1
cm4gTlNIb21lRGlyZWN0b3J5KCk7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUp
CitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKIHsK
ICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCkBA
IC0xMTMsOSArMTEzLDEzIEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVICiAgICAgQ1N0cmluZyBw
cmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQo
cHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7CisKKyAgICAvLyBBcHBlbmQgdGhlIGZpbGUgbmFt
ZSBzdWZmaXguCisgICAgQ1N0cmluZyBzdWZmaXhVdGY4ID0gc3VmZml4LnV0ZjgoKTsKKyAgICB0
ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoc3VmZml4VXRmOC5kYXRhKCksIHN1ZmZpeFV0ZjgubGVu
Z3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKIAotICAgIHBsYXRm
b3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKKyAgICBw
bGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wcyh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHN1
ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGU0YWIwMGZiZGFkOWZmYjcxYjUwMjJj
Y2VjNDFjMTBiNWNhMGY1ZGYuLmZhMGI1MzFmZTEwZmY3NGViYWI4NjVmM2NhMDkxNWRhMWQ5NTc1
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0zMjYsNyArMzI2
LDcgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCi1TdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgp
LmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3RtcF9k
aXIoKSwgZmlsZW5hbWUuZ2V0KCksIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IGM5ZjUwMTQzNmFiY2M4MDk0ZTg0MTQ4MGQyMWZlMzZhNDcx
ZTgxZmYuLmIzYzA0MDFiNTA2ZmRjZTMyMzJlZDZmZWZiYmJmMGU1MmQxMDAzYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIGJv
b2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVT
cGFjZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsK
ICAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDY1OWRmZDUyNzI3ZGM5ZWY2OTliN2Y5MjRkNWQyZTcy
ZDg0ZTBhZTcuLmI2MzE0OTU3M2E0ODQxZmU2MDAxZWVmYWZkZDAwOTJjZmM3NDFhYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMg
U3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyYpPiYgYWN0aW9uKQogICAgIHJldHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBoYW5kbGUgPSBJTlZBTElEX0hB
TkRMRV9WQUxVRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDgyNjg3MDQ3NTE2NzllNDBlNjI4
MTUwZDA3ODZhOWRmMzJkMDA1NC4uNTdhZTg3NDU0ZTkwYzFhYjRjMDgxODMwZDkxYzE1Yzk0OTkz
MWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC05NDUsNiArOTQ1LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL0RyYWdJdGVtLmgKICAgICBw
bGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9ucy5oCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIu
aAorICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaAogICAgIHBsYXRmb3JtL0ZpbGVI
YW5kbGUuaAogICAgIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmgKICAgICBwbGF0Zm9ybS9GaWxlU3Ry
ZWFtQ2xpZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTVjNzY5OGNhZTJlMDI5ZjUzYmNhZGM4YzA5
MzU4ZGFlMzMyZjg1Zi4uYWI3NDU0NDkwZTZmNGU3ZGE3OGIwZTJkNmRlMzg0NmNjNjM1OTM1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTE3OTcsNiArMTc5Nyw3IEBAIHBsYXRmb3JtL0RyYWdEYXRhLmNw
cAogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMu
Y3BwCiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKK3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGlu
Z3MuY3BwCiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3Bw
CiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMzE5MDhiZDBjZTU3Yzc0MGUyYjA1NmY4
NDdiOTdlNGJlNWI4YTkuLmY4NTgzNzc1ZDA5NWVkMWM0NWY5YjBjOTk0YjEyOWM3NmZkZGNkYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNDIsNiArMjE0Miw3IEBACiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0
eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIw
NEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjQ4REQ0QzI0QTVDM0VEMDBERTAyQjgg
LyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI0OERENDkyNEE1OTAwNjAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0
dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAw
RjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAw
QTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0
RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NzM0LDYgKzk3MzUsOCBA
QAogCQk3MjE0NDM0NTIyNDBDOEJBMDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25G
cmFtZVJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRnJhbWVSYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNDhERDQ5MjRBNTkwMDYwMERFMDJCOCAvKiBGaWxlQ2hv
b3NlclNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVDaG9vc2VyU2V0dGluZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0OERENEIyNEE1OTBDOTAwREUwMkI4IC8qIEZp
bGVDaG9vc2VyU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUNob29zZXJTZXR0
aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQw
MEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNEVEMzJBMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjRFRDMyQjFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5N
YXguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDQxLDYgKzI2NDQ0LDggQEAKIAkJCQkyNjJFQzQx
OTFEMDc4RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFja2luZ1JlZ2lvbnMuaCAqLywKIAkJCQk5MzRG
RTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3BwICovLAogCQkJCTA2NkM3NzJB
MEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAorCQkJCTcyNDhERDRCMjRBNTkw
QzkwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmNwcCAqLywKKwkJCQk3MjQ4REQ0OTI0
QTU5MDA2MDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5oICovLAogCQkJCTUzNTFENEFF
MURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmNwcCAqLywKIAkJCQk1MzUxRDRBRjFERjkx
NkFDMDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5
M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCkBAIC0zMDY3MCw2ICszMDY3NSw3IEBACiAJCQkJ
OTc2RDZDODExMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OEY4NkRBMUY1MDlFNzQwMEU4Q0ZDNSAvKiBGaWxlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTA2NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI0OERENEMyNEE1QzNFRDAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUzNTFENEIxMURGOTE2QjQwMDgwMTBDRCAvKiBGaWxlSGFu
ZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg4QTkwNTE3NTUzQ0Q3MDAwQzc0RjkgLyogRmls
ZUljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2
OSAvKiBGaWxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CmluZGV4IDhkNmUzODczODU1MTNkZGQ0MWUwMzcyNDA5OGI0MzJlYWNlY2ViYzAuLjM3MTAwN2I0
MDM4MzZlYjMxOTkyODhiZmExNmNkMjMyNGJkYTIyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNw
cApAQCAtNDYsMTYgKzQ2LDE3IEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2CiAgICAgcmV0dXJu
IGZpbGU7CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lT3ZlcnJpZGUpCiB7CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgU3RyaW5nIHR5cGU7Ci0g
ICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5
cGUpOworICAgIFN0cmluZyBlZmZlY3RpdmVQYXRoID0gIXJlcGxhY2VtZW50UGF0aC5pc051bGwo
KSA/IHJlcGxhY2VtZW50UGF0aCA6IHBhdGg7CisgICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShlZmZlY3RpdmVQYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUpOwogCiAgICAgYXV0byBp
bnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgdHlw
ZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRl
cm5hbFVSTCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmlu
ZyB7IHBhdGggfSwgV1RGTW92ZShuYW1lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZp
bGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IGVmZmVjdGl2
ZVBhdGggfSwgV1RGTW92ZShuYW1lKSkpOwogfQogCiBGaWxlOjpGaWxlKFVSTCYmIHVybCwgU3Ry
aW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmgKaW5kZXggZDJmOTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3NDFmODNlZmY3OC4uODc5NzRk
MDAzYzM5ZGNlNWQ4MzRmYzk3ZjA0NjhmYjMyZGVkMzI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxl
IHdpdGggYW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5h
bWUgYW5kIGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBv
bmUgcHJvdmlkZWQgaW4gdGhlIHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
aWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlk
ZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29u
c3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOwogCiAgICAgLy8gQ3JlYXRlIGEgRmlsZSB1
c2luZyB0aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KICAgICBzdGF0aWMgUmVmPEZpbGU+IGNy
ZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDVl
MWQ0YzAwYTljMDY4YzgwMzFjMjRjY2Q2MGFiMjBhNmFmYTA2MGIuLjExM2YyZTkwNmRiYjU3ZDMw
YmNhOWQ5NTUyZWNlYzM1NTZiM2IzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTUgKzY0LDE2IEBAIHN0YXRpYyBU
aHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4g
Km1hcDsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CisgICAgU3RyaW5nIGVm
ZmVjdGl2ZVBhdGggPSAhcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpID8gcmVwbGFjZW1lbnRQYXRo
IDogcGF0aDsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRl
KHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmls
ZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShlZmZlY3RpdmVQYXRo
KSwgcGF0aCwgY29udGVudFR5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2Fs
bE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29s
YXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGVmZmVjdGl2ZVBhdGggPSBlZmZlY3Rp
dmVQYXRoLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVu
dFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVh
dGUoZWZmZWN0aXZlUGF0aCksIHBhdGgsIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBh
OWM3OWZlMjI5MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi5lY2I3NGYxN2MwNmRiZWJj
NzM0OTgzZGIzOTIxZGM5ODk4NDE1OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiBi
bG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggMWFmOWViMjJjNGE2NDM1MjE0
MWU3MTk1NmU1MmE2Y2ZmNjJhMGY0Ny4uZjAwOTg5ZGQwM2ZjMTI5NTYzYTg4NTQ4NmQ1YTU3YWE3
YWQyMGQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlz
dENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGVG
aWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQogICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgYXBwZW5kRGlyZWN0
b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5mby5wYXRo
KSwgZmlsZU9iamVjdHMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5h
cHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkpOworICAgICAg
ICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZShpbmZvLnBhdGgsIHsgfSwgaW5m
by5kaXNwbGF5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZN
b3ZlKGZpbGVPYmplY3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApp
bmRleCBmM2M3MDk4Y2JmNWU0YjgyMGViNjgwZjdjYzQyNjU1ZjBiOWUyZDZkLi43ZDU0ZjU5ZTAy
YzYxYjNjZTkzNjIyYzZlYjViMTFkMDNhNmZlYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVz
Q2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0CiAK
ICAgICBpZiAoIWFsbG93c0RpcmVjdG9yaWVzKCkpIHsKICAgICAgICAgYXV0byBmaWxlcyA9IHBh
dGhzLm1hcChbXShhdXRvJiBmaWxlSW5mbykgewotICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNy
ZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxlSW5mby5kaXNwbGF5TmFtZSk7CisgICAgICAgICAgICBy
ZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJbmZvLnBhdGgsIGZpbGVJbmZvLnJlcGxhY2VtZW50UGF0
aCwgZmlsZUluZm8uZGlzcGxheU5hbWUpOwogICAgICAgICB9KTsKICAgICAgICAgZGlkQ3JlYXRl
RmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVzKSksIGljb24pOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3
ZjVkNDdiY2Y0NTM4ZmVkODBjNjJiOTljMjQ3MzUwNDc0ODg1Yi4uZDE0NGQxYWMzMmVjNWVhNmIx
N2Y4ODBjMWNhMmUxMjBhZmUzMzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgY2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsKIH0KIAot
dm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcykKK3ZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBsYWNlbWVudE5hbWVzKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWxlZ2FudC4gV2Ugc2hvdWxkIG5vdCBiZSBsb29raW5n
IGF0IHNldHRpbmdzIGhlcmUuCiAgICAgaWYgKG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyA9PSBm
aWxlbmFtZXMpCkBAIC02OCw4ICs2OCw4IEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlczsKLSAgICBmb3IgKGF1dG8mIGZpbGVu
YW1lIDogZmlsZW5hbWVzKQotICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5m
byhmaWxlbmFtZSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZmlsZW5hbWVzLnNp
emUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmls
ZUluZm8oZmlsZW5hbWVzW2ldLCBpIDwgcmVwbGFjZW1lbnROYW1lcy5zaXplKCkgPyByZXBsYWNl
bWVudE5hbWVzW2ldIDogbnVsbFN0cmluZygpKSk7CiAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2Vu
KGZpbGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUx
ZWI5ZTg0Mzg3OTVhNzZmZWM5YTNkYmY3YzZhMDg0ZWEwODg5NS4uODc3OTM0MjZkY2E0YTQxNjU4
NjI1ZDNlYzBhNjZmMmY3ZTUyNDA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oCkBAIC0yOSwyNSArMjksMTkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYv
RW51bVRyYWl0cy5oPgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyU2V0dGluZ3MuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWVudW0gTWVkaWFDYXB0dXJlVHlwZSB7Ci0gICAgTWVkaWFDYXB0dXJl
VHlwZU5vbmUsCi0gICAgTWVkaWFDYXB0dXJlVHlwZVVzZXIsCi0gICAgTWVkaWFDYXB0dXJlVHlw
ZUVudmlyb25tZW50Ci19OwotCiBjbGFzcyBGaWxlQ2hvb3NlcjsKIGNsYXNzIEljb247CiAKIHN0
cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKLSAgICBGaWxlQ2hvb3NlckZpbGVJbmZvKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSA9IFN0cmluZygpKQorICAg
IEZpbGVDaG9vc2VyRmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50UGF0aCA9IHsgfSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSA9IHsgfSkKICAg
ICAgICAgOiBwYXRoKHBhdGgpCisgICAgICAgICwgcmVwbGFjZW1lbnRQYXRoKHJlcGxhY2VtZW50
UGF0aCkKICAgICAgICAgLCBkaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKICAgICB7CiAgICAgfQpA
QCAtNTgsMjAgKzUyLDEwIEBAIHN0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKICAgICB9CiAK
ICAgICBjb25zdCBTdHJpbmcgcGF0aDsKKyAgICBjb25zdCBTdHJpbmcgcmVwbGFjZW1lbnRQYXRo
OwogICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZTsKIH07CiAKLXN0cnVjdCBGaWxlQ2hvb3Nl
clNldHRpbmdzIHsKLSAgICBib29sIGFsbG93c0RpcmVjdG9yaWVzIHsgZmFsc2UgfTsKLSAgICBi
b29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxTdHJpbmc+IGFj
Y2VwdE1JTUVUeXBlczsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9uczsK
LSAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOwotI2lmIEVOQUJMRShNRURJQV9DQVBU
VVJFKQotICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVy
ZVR5cGVOb25lIH07Ci0jZW5kaWYKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTg2
LDggKzcwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50TmFtZXMg
PSB7IH0pOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgZnVu
Y3Rpb24gaXMgYWxtb3N0IGlkZW50aWNhbCB0byBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKS4g
V2Ugc2hvdWxkIG1lcmdlIHRoaXMKICAgICAvLyBmdW5jdGlvbiB3aXRoIEZpbGVDaG9vc2VyOjpj
aG9vc2VGaWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1
YXJkLgpAQCAtMTA3LDE2ICs5MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlLAotICAgICAgICBXZWJDb3Jl
OjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlTm9uZSwKLSAgICAgICAgV2ViQ29y
ZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZVVzZXIsCi0gICAgICAgIFdlYkNv
cmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVudAotICAgID47
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXJTZXR0aW5ncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY4N2QzZGM3ZGRjYmM0ZDA3Mzkz
MTg5ODcxMzgwNzQ1NjJkNjI3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJGaWxlQ2hvb3NlclNldHRpbmdzLmgiCisKKyNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBtaW1l
VHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICByZXR1cm4g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uLnN0YXJ0
c1dpdGgoJy4nKSA/IGV4dGVuc2lvbi5yaWdodChleHRlbnNpb24ubGVuZ3RoKCkgLSAxKSA6IGV4
dGVuc2lvbik7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZFVuaXF1ZVN0cmluZ3MoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHN0cmluZ3MsIFZlY3RvcjxTdHJpbmc+JiBhbGxTdHJpbmdzKQoreworICAg
IGZvciAoYXV0byYgc3RyaW5nIDogc3RyaW5ncykKKyAgICAgICAgYWxsU3RyaW5ncy5hcHBlbmRJ
Zk5vdENvbnRhaW5zKHN0cmluZyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZE1JTUVUeXBlc0Zv
ckV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMsIFZlY3RvcjxTdHJp
bmc+JiBhbGxNSU1FVHlwZXMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNp
b25zKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRl
bnNpb24pOworICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIEFTU0VSVChtaW1lVHlwZS5jb250YWlucygnLycpKTsKKyAgICAgICAg
YWxsTUlNRVR5cGVzLmFwcGVuZElmTm90Q29udGFpbnMobWltZVR5cGUpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgYXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbWltZVR5cGVzLCBWZWN0b3I8U3RyaW5nPiYgYWxsRXh0ZW5zaW9ucykKK3sKKyAgICBm
b3IgKGF1dG8mIG1pbWVUeXBlIDogbWltZVR5cGVzKSB7CisgICAgICAgIEFTU0VSVChtaW1lVHlw
ZS5jb250YWlucygnLycpKTsKKyAgICAgICAgYXBwZW5kVW5pcXVlU3RyaW5ncyhNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpLCBhbGxFeHRlbnNpb25z
KTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHNob3VsZEFwcGVuZEFsbEltYWdlc0V4dGVuc2lv
bnMoVmVjdG9yPFN0cmluZz4mIGFsbEV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRl
bnNpb24gOiBhbGxFeHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBtaW1lVHlw
ZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5n
PiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkTUlNRVR5cGVzKCkgY29uc3QKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOworCisgICAgYXBwZW5kVW5pcXVlU3RyaW5n
cyh0aGlzLT5hY2NlcHRNSU1FVHlwZXMsIGFsbG93ZWRNSU1FVHlwZXMpOworICAgIGFwcGVuZE1J
TUVUeXBlc0ZvckV4dGVuc2lvbnModGhpcy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMsIGFsbG93ZWRN
SU1FVHlwZXMpOworCisgICAgaWYgKCF0aGlzLT5hbGxvd0ltYWdlVHJhbnNjb2RpbmcpIHsKKyAg
ICAgICAgYXV0byBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlKCJpbWFnZS8qIl9zKTsKKyAgICAgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5z
aW9ucyhleHRlbnNpb25zLCBhbGxvd2VkTUlNRVR5cGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4g
YWxsb3dlZE1JTUVUeXBlczsKK30KKworVmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5n
czo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBh
bGxvd2VkRmlsZUV4dGVuc2lvbnM7CisKKyAgICBhcHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVz
KHRoaXMtPmFjY2VwdE1JTUVUeXBlcywgYWxsb3dlZEZpbGVFeHRlbnNpb25zKTsKKyAgICBhcHBl
bmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2VwdEZpbGVFeHRlbnNpb25zLCBhbGxvd2VkRmlsZUV4
dGVuc2lvbnMpOworCisgICAgaWYgKHNob3VsZEFwcGVuZEFsbEltYWdlc0V4dGVuc2lvbnMoYWxs
b3dlZEZpbGVFeHRlbnNpb25zKSkgeworICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoImltYWdlLyoiX3MpOworICAgICAg
ICBhcHBlbmRVbmlxdWVTdHJpbmdzKGV4dGVuc2lvbnMsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk7
CisgICAgfQorCisgICAgcmV0dXJuIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI1ZDJjMTYyZjExNWFjNWViZTIxODQwZGJmMWYwNTRjNzg3OGQ1N2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIE1lZGlhQ2FwdHVyZVR5cGUgeworICAgIE1lZGlhQ2Fw
dHVyZVR5cGVOb25lLAorICAgIE1lZGlhQ2FwdHVyZVR5cGVVc2VyLAorICAgIE1lZGlhQ2FwdHVy
ZVR5cGVFbnZpcm9ubWVudAorfTsKKworc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgeworICAg
IGJvb2wgYWxsb3dzRGlyZWN0b3JpZXMgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTXVsdGlw
bGVGaWxlcyB7IGZhbHNlIH07CisgICAgYm9vbCBhbGxvd0ltYWdlVHJhbnNjb2RpbmcgeyBmYWxz
ZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdE1JTUVUeXBlczsKKyAgICBWZWN0b3I8U3Ry
aW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9uczsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZp
bGVzOworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVk
aWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07CisjZW5kaWYKKyAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29u
c3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNh
cHR1cmVUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1
cmVUeXBlTm9uZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0
dXJlVHlwZVVzZXIsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2Fw
dHVyZVR5cGVFbnZpcm9ubWVudAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVk
ZTJhZGIwMWExNTUwZTJmZTUwZDUwNjQzYjNmYTNmLi5kMzdmOWI5MWRmMmMwN2E1MzQ2YmZjZWNm
ZTY2OTBkYTQyOGI3MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIGdldE1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpb24pOwogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRNZWRpYU1JTUVUeXBlc0ZvckV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIGdl
dE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTdHJpbmcgZ2V0TUlNRVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxE
YXRhPiBjcmVhdGVNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgpOwogCkBAIC03NCw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBv
cnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBl
bmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29k
aW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxl
IGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04gcmVzb3VyY2UuCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KaW5kZXggMmIzZmUwNTU4NGY5NjRl
MDk5NzY4NDZhYTEyOTgwNzZlYTRiZTE1MC4uMjhjZGM1ZTgxMDkzMDk2YjNiOWM0OGU4ZmZhNTJk
ZGE1ZmQxMjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlN
RVR5cGVSZWdpc3RyeUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtMjcsMTEgKzI3LDcwIEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKIAorI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxG
aWxlVHlwZU1hcHBpbmdzU1BJLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8
U3RyaW5nPj4mIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpCit7CisgICAgc3RhdGljIGF1dG8g
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
TWFwOworCisgICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUgPSBbJl0oY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgeworICAgICAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAuZW5zdXJlKHR5cGUsIFtdKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiBIYXNoU2V0PFN0cmluZz4oKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hZGQoZXh0ZW5zaW9u
KTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSA9
IFsmXShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IENGQXJyYXlSZWYmIGV4dGVuc2lvbnMpIHsK
KyAgICAgICAgICAgIGF1dG8gd2lsZGNhcmRNSU1FVHlwZSA9IG1ha2VTdHJpbmcodHlwZS5zcGxp
dCgnLycpLmZpcnN0KCksICIvKiJfcyk7CisKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0g
MCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoZXh0ZW5zaW9ucyk7IGkgPCBjb3VudDsgaSsrKSB7
CisKKyAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBleHRlbnNpb24gPSByZWludGVycHJldF9j
YXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGV4dGVuc2lvbnMsIGkpKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIHdpbGRjYXJkTUlN
RVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvKiIKKyAgICAgICAgICAgICAg
ICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSh3aWxkY2FyZE1JTUVUeXBlLCBleHRlbnNpb24pOwor
ICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8gaXRzbWltZVR5cGUsIGZvciBleGFt
cGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvcG5nIgorICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lv
bkZvck1JTUVUeXBlKHR5cGUsIGV4dGVuc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGFsbFVUSXMgPSBhZG9wdENGKF9VVENv
cHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpKTsKKworICAgICAgICBmb3IgKENGSW5kZXggaSA9
IDAsIGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGFsbFVUSXMuZ2V0KCkpOyBpIDwgY291bnQ7ICsr
aSkgeworICAgICAgICAgICAgYXV0byB1dGkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChhbGxVVElzLmdldCgpLCBpKSk7CisgICAgICAgICAgICBhdXRv
IHR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLCBrVVRU
YWdDbGFzc01JTUVUeXBlKSk7CisgICAgICAgICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdENGKFVUVHlw
ZUNvcHlBbGxUYWdzV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikp
OworICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zIHx8ICFDRkFycmF5R2V0Q291bnQoZXh0ZW5z
aW9ucy5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhZGRF
eHRlbnNpb25zRm9yTUlNRVR5cGUodHlwZS5nZXQoKSwgZXh0ZW5zaW9ucy5nZXQoKSk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOworICAgIH0o
KSk7CisKKyAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOworfQorCitzdGF0aWMg
VmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7CisKKyAgICBhdXRvIGl0
ZXIgPSBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKS5maW5kKHR5cGUpOworICAgIGlmIChpdGVy
ICE9IGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpLmVuZCgpKQorICAgICAgICBleHRlbnNpb25z
LmFwcGVuZFJhbmdlKGl0ZXItPnZhbHVlLmJlZ2luKCksIGl0ZXItPnZhbHVlLmVuZCgpKTsKKwor
ICAgIHJldHVybiBleHRlbnNpb25zOworfQorCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiB7CiAgICAgcmV0
dXJuIFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBpbmdzXSBNSU1FVHlwZUZvckV4
dGVuc2lvbjooTlNTdHJpbmcgKilleHRlbnNpb25dOwpAQCAtMzksNiArOTgsOCBAQCBTdHJpbmcg
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pCiAKIFZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lv
bnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CisgICAgaWYgKHR5cGUuZW5kc1dp
dGgoJyonKSkKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKHR5
cGUpOwogICAgIHJldHVybiBtYWtlVmVjdG9yPFN0cmluZz4oW1tOU1VSTEZpbGVUeXBlTWFwcGlu
Z3Mgc2hhcmVkTWFwcGluZ3NdIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTp0eXBlXSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmNwcAppbmRleCA1YWJmZDc1Y2I0OTQ1NmU0MmQzOWQ0NGQzYmMyMjU5YWFmZmE1
MjI2Li5lYmFiNjE4MmUzZWE0ODljY2Q4MjI0NjZhNjNhYjRlMjRlZDBlODU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZl
cmVuY2UuY3BwCkBAIC0zMiwxNyArMzIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1C
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcm
IHBhdGgpCitCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoKQogICAgIDogbV9w
YXRoKHBhdGgpCisgICAgLCBtX3JlcGxhY2VtZW50UGF0aChyZXBsYWNlbWVudFBhdGgpCiB7CiB9
CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7Ci0j
aWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5p
c051bGwoKSkKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0
aCk7Ci0jZW5kaWYKIH0KIAogY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBh
dGgoKQpAQCAtNTAsMTAgKzQ5LDkgQEAgY29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OnBhdGgoKQogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGlmIChtX3JlcGxh
Y2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQpCiAgICAgICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxl
KCk7Ci0KKyNlbmRpZgogICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBtX3JlcGxhY2VtZW50UGF0aDsKLSNlbmRpZgogCiAgICAgcmV0dXJuIG1fcGF0
aDsKIH0KQEAgLTEwMSw2ICs5OSwxMiBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3Rh
cnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAorICAg
IGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgbWV0YWRhdGEgPSBG
aWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0
aCk7CisgICAgICAgIGlmICghbWV0YWRhdGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAogICAgIG1fc2l6ZSA9IG1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuaAppbmRleCA2NTg4MjlkMDdmY2ZiZDZiMDJhMjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li44ZmNi
ZThjMTFmMjEzNDhjZWZlNDhlZDAyNjY1YzU1ZDYzNjk2NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAg
LTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBCbG9iRGF0YUZpbGVSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFBhdGggPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCwgcmVwbGFjZW1lbnRQYXRoKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCk7CkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAg
QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFBhdGgpOwogCiBwcml2YXRlOgogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5U
KQpAQCAtNjAsOCArNjAsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRo
OwotI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50
UGF0aDsKKyNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKICAgICBib29sIG1fcmVwbGFjZW1l
bnRTaG91bGRCZUdlbmVyYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5LmgKaW5kZXggZmU5MWU4MWFhZDQzMDJlMDNkYjk2N2E0NmEzMDZhYzZkNDJj
Y2U1NS4uNGIxNWNkZGJlMGU0Yzc2ZThmOTJiMDAyZDYyYTlhYjAyYjdhNmJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAKICAg
ICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBmaWxl
LgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpID0gMDsKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmlu
ZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0
YXRpb24vTUlNRVR5cGVSZWdpc3RyeVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0cnlQbGF5U3RhdGlvbi5jcHAKaW5kZXgg
ZjM3MmNlMzAwNWY2N2Y4N2UzODQ5MDUxYjE2NTMyZDNkMGE0NmE1NC4uYTM4MDZjNDViMzg1NmJi
NzUwYzNlZDU1NzIwMjlkNTRlMjExMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcGxheXN0YXRpb24vTUlNRVR5cGVSZWdpc3RyeVBsYXlTdGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5UGxheVN0
YXRpb24uY3BwCkBAIC04MCw0ICs4MCw5IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQ
cmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlCiAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0
cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVy
biB7IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAppbmRleCBhMDQ0OTgyYTA4
ZTkwZDgwMTlmZjE0Y2YyYjAzM2JiZDU1MmUyMTEyLi4xNTBhZTc1OTM1ZTM4Y2FmMjM4NWIyODg2
NDgyMjgyZTdhNTVmZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC0xMTQsNCArMTE0LDkgQEAgYm9vbCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6Omdl
dEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiB7IH07
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hkZy9NSU1FVHlw
ZVJlZ2lzdHJ5WGRnLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hkZy9NSU1FVHlwZVJl
Z2lzdHJ5WGRnLmNwcAppbmRleCBmYzkxMTkwYmU2OGRmNWQ1ZTM0ZTBmN2E1YTM4NTQzM2U4Mzg4
MGYzLi5mNzdhMzI1NjA4ZmE1ODc5OWU3ZjRiMjk1MWJlMDhmMmMwMGNkOTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ZGcvTUlNRVR5cGVSZWdpc3RyeVhkZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veGRnL01JTUVUeXBlUmVnaXN0cnlYZGcuY3BwCkBA
IC02Niw0ICs2Niw5IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRl
bnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlCiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCitWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNp
b25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4geyB9OworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDZmMGNlNjQ5ZDhiMTdmZWY4ZDY2ZWYx
M2Q2M2JjNWZkZTY4YzUyNGMuLjg5MzE4OWNmYTA3ODlkNTFjNzdhNWUzMmI0NWQzZDViM2IyZjRl
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03MzcsNyArNzM3LDcgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWxsQ29va2llc0RlbGV0ZWQoKQogCiAj
ZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgTkVUV09SS19QUk9DRVNTX01FU1NBR0Vf
Q0hFQ0soIXVybC5pc0VtcHR5KCkpOwogCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3QKICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHNl
c3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOwor
ICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIHJlcGxh
Y2VtZW50UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFu
ZGxlKSkpLCBjb250ZW50VHlwZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKQEAgLTc3NCw3ICs3NzQsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBVUgogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgsIG51bGxwdHIpLCBjb250ZW50VHlw
ZSk7CisgICAgc2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgpLCBjb250ZW50VHlwZSk7CiB9CiAKIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRf
dCBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZTgyMzAwMDllYzk2YmZlZWYyMDk4
YTFhZWVlN2EyN2FjMzk4YzNkYS4uMThjY2VkOTdjNjUzMmEzNmE3MGEzMWRkNzFkNmFmYmFmOGQ2
NmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRSYXdDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7CiAgICAg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsK
IAotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDIyMDBkNGM0YWQyMGNm
NmMyZjFhNWI3YTQwMzZiMDY3NDgwMTQzZWUuLjdiODIyNTIzMjcwMGFhNjg4YzlkODRhYWMwNDIw
YzQ5N2I2ZTVjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtNDYsNyArNDYsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucyhIYXNoU2V0PFN0cmluZz4gaG9zdHMpCiAjZW5kaWYKIAotICAgIFJlZ2lzdGVy
RmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lz
dGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFN0cmluZyByZXBsYWNlbWVudFBh
dGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3Ry
aW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2Vi
Q29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lz
dGVyQmxvYlVSTEZyb21VUkwoVVJMIHVybCwgVVJMIHNyY1VSTCkKICAgICBSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJh
Y2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggZjY5NjAxY2VmMGVmYzkzZGJlZDNlMDUzZDUzNDA4MTQ3YmUzZWQ5Ny4uY2Zm
Yzk5ZjgyYjA0NGM0OWIwNTAyYmU5NWRjYzhjYjg5OTFjMjIwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgQmxvYlJlZ2lzdHJ5KiBOZXR3b3Jr
UHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBjbGFzcyBFbXB0eUJsb2JSZWdpc3RyeSA6IHB1
YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewotICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAg
ICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWwgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0NHVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRp
ZXMuY3BwCmluZGV4IGFmMDhmNmQ1ZWZiNGFhYTg2YjEwNGE0OWM5ODU1ZjIwNzI1YjY4MDguLjJl
NjhhMGM5MTNiMTBjMDgxMDRhYTNiOTRlM2I0MDU4NzkyNGZlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAKKyNpbmNsdWRlIDxJbWFnZUlP
L0ltYWdlSU8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1VUSVV0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBwYWludEltYWdlKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0ltYWdlUmVmIGltYWdlLCBD
R0Zsb2F0IHNjYWxlRmFjdG9yLCBDR1BvaW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKQpA
QCAtNDYsNCArNTIsODIgQEAgdm9pZCBwYWludEltYWdlKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R0ltYWdlUmVmIGltYWdlLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBDR1AKICAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCitTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIEFTU0VSVChtaW1l
VHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iX3MpKTsKKworICAgIC8vIENyZWF0ZSB0aGUgaW1hZ2Ug
c291cmNlLgorICAgIGF1dG8gc291cmNlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIGF1dG8gc291cmNlID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChzb3VyY2VVUkwuZ2V0KCksIG51bGxwdHIp
KTsKKyAgICBpZiAoIXNvdXJjZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9N
RVNTQUdFKCJTb3VyY2UgcGF0aCBpcyBub3QgYSB2YWxpZCBpbWFnZS4iKTsKKyAgICAgICAgcmV0
dXJuIHBhdGg7CisgICAgfQorCisgICAgYXV0byBzb3VyY2VVVEkgPSBTdHJpbmcoQ0dJbWFnZVNv
dXJjZUdldFR5cGUoc291cmNlLmdldCgpKSk7CisgICAgYXV0byByZXBsYWNlbWVudFVUSSA9IFdl
YkNvcmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CisgICAgaWYgKHNvdXJjZVVUSSA9PSBy
ZXBsYWNlbWVudFVUSSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdF
KCJTb3VyY2UgaW1hZ2UgYWxyZWFkeSBoYXMgdGhlIHJlcGxhY2VtZW50IE1JTUUgdHlwZS4iKTsK
KyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorCisgICAgLy8gQ29tcHV0ZSB0aGUgdGVtcG9y
YXJ5IGZpbGUgbmFtZSBwcmVmaXggYW5kIGZpbGUgZXh0ZW5zaW9uLgorICAgIGF1dG8gY29tcG9u
ZW50cyA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5zcGxpdCgnLicpOworICAg
IGF1dG8gZXh0ZW5zaW9uID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVk
RXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAgIGF1dG8gcHJlZml4ID0gbWFrZVN0
cmluZyhjb21wb25lbnRzLmZpcnN0KCksICJfIl9zKTsKKyAgICBhdXRvIHN1ZmZpeCA9IG1ha2VT
dHJpbmcoIi4iX3MsIGV4dGVuc2lvbik7CisKKyAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmls
ZS4KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgcmVwbGFjZW1lbnRGaWxlSGFu
ZGxlOworICAgIFN0cmluZyByZXBsYWNlbWVudFBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZShwcmVmaXgsIHJlcGxhY2VtZW50RmlsZUhhbmRsZSwgc3VmZml4KTsKKyAgICBpZiAo
cmVwbGFjZW1lbnRGaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiUmVwbGFj
ZW1lbnQgaW1hZ2UgY2FuJ3QgYmUgY3JlYXRlZC4iKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7Cisg
ICAgfQorCisgICAgLy8gQ3JlYXRlIHRoZSBkYXRhIGNvbnN1bWVyLgorICAgIENHRGF0YUNvbnN1
bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgW10odm9pZCAqaW5mbywgY29uc3Qgdm9pZCogYnVm
ZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7CisgICAgICAgIGF1dG8gcGxhdGZvcm1GaWxl
SGFuZGxlID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGlu
Zm8pOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUocGxhdGZvcm1GaWxl
SGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgIH0s
IG51bGxwdHIgfTsKKworICAgIC8vIENyZWF0ZSB0aGUgaW1hZ2UgcmVwbGFjZW1lbnQuCisgICAg
YXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGUoJnJlcGxhY2VtZW50
RmlsZUhhbmRsZSwgJmNhbGxiYWNrcykpOworICAgIGF1dG8gcmVwbGFjZW1lbnQgPSBhZG9wdENG
KENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhQ29uc3VtZXIoY29uc3VtZXIuZ2V0KCks
IHJlcGxhY2VtZW50VVRJLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDEsIG51bGxwdHIpKTsKKwor
ICAgIC8vIFdyaXRlIHRoZSBzb3VyY2UgaW1hZ2UgdG8gdGhlIHJlcGxhY2VtZW50IGltYWdlLgor
ICAgIHNpemVfdCBpbmRleCA9IENHSW1hZ2VTb3VyY2VHZXRQcmltYXJ5SW1hZ2VJbmRleChzb3Vy
Y2UuZ2V0KCkpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlRnJvbVNvdXJjZShyZXBs
YWNlbWVudC5nZXQoKSwgc291cmNlLmdldCgpLCBpbmRleCwgbnVsbHB0cik7CisgICAgQ0dJbWFn
ZURlc3RpbmF0aW9uRmluYWxpemUocmVwbGFjZW1lbnQuZ2V0KCkpOworICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShyZXBsYWNlbWVudEZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIHJlcGxhY2Vt
ZW50UGF0aDsKK30KKworVmVjdG9yPFN0cmluZz4gdHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMp
Cit7CisgICAgVmVjdG9yPFN0cmluZz4gcmVwbGFjZW1lbnRQYXRoczsKKyAgICBTdHJpbmcgcHJl
ZmVycmVkRW5jb2RpbmdNSU1FVHlwZTsKKyAgICAKKyAgICBmb3IgKGF1dG8gbWltZVR5cGUgOiBh
bGxvd2VkTUlNRVR5cGVzKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpIHsKKyAgICAg
ICAgICAgIHByZWZlcnJlZEVuY29kaW5nTUlNRVR5cGUgPSBtaW1lVHlwZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHByZWZlcnJlZEVuY29kaW5nTUlN
RVR5cGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiByZXBsYWNlbWVudFBhdGhzOworCisgICAg
Zm9yIChhdXRvJiBwYXRoIDogcGF0aHMpIHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChwYXRoKTsKKyAgICAgICAg
aWYgKGFsbG93ZWRNSU1FVHlwZXMuY29udGFpbnMobWltZVR5cGUpKQorICAgICAgICAgICAgcmVw
bGFjZW1lbnRQYXRocy5hcHBlbmQobnVsbFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVwbGFjZW1lbnRQYXRocy5hcHBlbmQodHJhbnNjb2RlSW1hZ2UocGF0aCwgcHJlZmVy
cmVkRW5jb2RpbmdNSU1FVHlwZSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVwbGFjZW1l
bnRQYXRoczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0NHVXRpbGl0aWVzLmgKaW5kZXggODUxZDE4MWE4ZmM3NTczYzkzMGNmYzYwM2IwZjQxNDI4
NzQ3YjIyZC4uOTVkYTZkOTM3Nzk4YjJjYTI5MTdhODYwZTZmMTUwY2YyMjE1ZmEyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaApAQCAtMjksNiArMjksOCBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgcGFpbnRJbWFnZShDR0NvbnRleHRSZWYsIENHSW1hZ2VS
ZWYsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24sIENHUmVjdCBzb3Vy
Y2UpOworU3RyaW5nIHRyYW5zY29kZUltYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CitWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVJbWFnZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBl
cyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVu
c2lvbi5jcHAKaW5kZXggZmM3NGI2MDE3M2M1NTI1OTBiNTRlMzQwYzY2YWUxZmEzNjg0NTcwYS4u
OWE1NmUzOWI5MjZiOTY2MjQ1ZDY5YjU3OTIyM2QxMDFmMDU1ZmRiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uLmNwcApAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikKLSAgICA6IEJsb2JE
YXRhRmlsZVJlZmVyZW5jZShwYXRoKQorQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hF
eHRlbnNpb246OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24pCisgICAgOiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UocGF0aCwgcmVwbGFjZW1lbnRQYXRoKQogICAgICwgbV9zYW5kYm94RXh0ZW5zaW9uKFdU
Rk1vdmUoc2FuZGJveEV4dGVuc2lvbikpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b24uaAppbmRleCA3NWE1ZDRkMGNiYmVjMDg1YWZkZGIzOGZlYmI1MzNlNzM2NDA2MzI2Li43Yjgz
MjlmMjI5YTU1ZmQ0ZGJjM2M0NDY4Mzc5YmIzMWJmMTAzNTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uLmgKQEAgLTM0LDEzICszNCwxMyBAQCBjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
OwogCiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbiBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKQorICAgIHN0
YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lv
bihwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKHBhdGgs
IHJlcGxhY2VtZW50UGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSkpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmKTsKKyAgICBCbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4m
Jik7CiAgICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b24oKTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJz
LmNwcAppbmRleCA4NTFlYmY1YzAzOWU3YjI4OTE5YWY5MTBiMDJmZWEwMGNlZWVkZjQ3Li5kMzVh
NzRhODdhYTBiODUyZjQwODc0NjFkN2M4NTI0ZGQ2YjBlMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCkBAIC01
OCwxMiArNTgsMTUgQEAgUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjY2Vw
dEZpbGVFeHRlbnNpb25zKCkgY29uc3QKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3Ry
aW5nQXJyYXkobV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9ucyk7CiB9CiAKLSNpZiBFTkFC
TEUoTUVESUFfQ0FQVFVSRSkKLVdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgT3BlblBhbmVsUGFy
YW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSgpIGNvbnN0CitSZWY8QVBJOjpBcnJheT4gT3BlblBh
bmVsUGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
c2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRl
U3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hbGxvd2VkTUlNRVR5cGVzKCkpOworfQorCitSZWY8QVBJ
OjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5n
cy5hbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSk7CiB9Ci0jZW5kaWYKIAogUmVmPEFQSTo6QXJyYXk+
IE9wZW5QYW5lbFBhcmFtZXRlcnM6OnNlbGVjdGVkRmlsZU5hbWVzKCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5o
CmluZGV4IDczMGU1ZDVlZWZmMmJhMGJlNDg5NDdiMGQ3OTdlNjMxNWMzMjZiOTEuLjJhNjhhOWE5
MjkyMWRkYmFiMDllYzVmYTY1ZWI4Yzg2ZTczY2I3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaApAQCAtNDIsOSArNDIs
MTMgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dNdWx0aXBsZUZpbGVzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOyB9CiAgICAgUmVmPEFQSTo6QXJyYXk+
IGFjY2VwdE1JTUVUeXBlcygpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRGaWxl
RXh0ZW5zaW9ucygpIGNvbnN0OworICAgIFJlZjxBUEk6OkFycmF5PiBhbGxvd2VkTUlNRVR5cGVz
KCkgY29uc3Q7CisgICAgUmVmPEFQSTo6QXJyYXk+IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNv
bnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBzZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0OworICAg
IGJvb2wgYWxsb3dJbWFnZVRyYW5zY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5h
bGxvd0ltYWdlVHJhbnNjb2Rpbmc7IH0KKyAgICB2b2lkIHNldEFsbG93SW1hZ2VUcmFuc2NvZGlu
Zyhib29sIGZsYWcpIHsgbV9zZXR0aW5ncy5hbGxvd0ltYWdlVHJhbnNjb2RpbmcgPSBmbGFnOyB9
CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlw
ZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlw
ZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1
cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmluZGV4IGQ5
MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIxNDg4MjMuLmNhYWRjMzUwM2MxN2FkOTU2
YzcwZWM3ZWYwOTZiZjIxYmFmODRkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAtMjUsNjAg
KzI1LDExIEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVNlcnZpY2VzU1BJ
Lmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogCi1zdGF0
aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3RyaW5nICo+ICo+ICpleHRlbnNp
b25zRm9yTUlNRVR5cGVNYXAoKQotewotICAgIHN0YXRpYyBhdXRvIGV4dGVuc2lvbnNGb3JNSU1F
VHlwZU1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdKTsKLSAgICAgICAgYXV0byBhbGxVVElzID0gYWRvcHRDRihfVVRDb3B5RGVjbGFyZWRUeXBl
SWRlbnRpZmllcnMoKSk7Ci0KLSAgICAgICAgYXV0byBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSA9
IF4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1N0cmluZyAqZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAg
ICBpZiAoIWV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKVttaW1lVHlwZV0pCi0gICAgICAg
ICAgICAgICAgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSA9IFtOU011
dGFibGVTZXQgc2V0XTsKLSAgICAgICAgICAgIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAuZ2V0
KClbbWltZVR5cGVdIGFkZE9iamVjdDpleHRlbnNpb25dOwotICAgICAgICB9OwotCi0gICAgICAg
IGF1dG8gYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlID0gXihOU1N0cmluZyAqbWltZVR5cGUsIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpIHsKLSAgICAgICAgICAgIGF1dG8gd2lsZGNh
cmRNSU1FVHlwZSA9IFtbbWltZVR5cGUgY29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiLyJd
WzBdIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiLyoiXTsKLQotICAgICAgICAgICAgZm9yIChO
U1N0cmluZyAqZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IWV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgLy8gQWRkIGV4dGVuc2lvbiB0byB3aWxkY2FyZE1JTUVUeXBlLCBmb3IgZXhhbXBsZSBhZGQg
InBuZyIgdG8gImltYWdlLyoiCi0gICAgICAgICAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUod2lsZGNhcmRNSU1FVHlwZSwgZXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICAvLyBBZGQg
ZXh0ZW5zaW9uIHRvIGl0c21pbWVUeXBlLCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdl
L3BuZyIKLSAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSwg
ZXh0ZW5zaW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKENG
SW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGFsbFVUSXMuZ2V0KCkpOyBpIDwg
Y291bnQ7ICsraSkgewotICAgICAgICAgICAgYXV0byB1dGkgPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhbGxVVElzLmdldCgpLCBpKSk7Ci0gICAgICAg
ICAgICBhdXRvIG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENs
YXNzKHV0aSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgICAgICAgICAgaWYgKCFtaW1lVHlw
ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9u
cyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc0Zp
bGVuYW1lRXh0ZW5zaW9uKSk7Ci0gICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUo
KF9fYnJpZGdlIE5TU3RyaW5nICopbWltZVR5cGUuZ2V0KCksIChfX2JyaWRnZSBOU0FycmF5PE5T
U3RyaW5nICo+ICopZXh0ZW5zaW9ucy5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBB
ZGQgYWRkaXRpb25hbCBtaW1lIHR5cGVzIHdoaWNoIF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlm
aWVycygpIG1heSBub3QgcmV0dXJuLgotICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShA
ImltYWdlL3dlYnAiLCBAIndlYnAiKTsKLQotICAgICAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1J
TUVUeXBlTWFwOwotICAgIH0oKSk7Ci0KLSAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
TWFwLmdldCgpLmdldCgpOwotfQotCi1zdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lv
bnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCi17Ci0gICAgcmV0dXJuIFtleHRlbnNp
b25zRm9yTUlNRVR5cGVNYXAoKSBvYmplY3RGb3JLZXk6bWltZXR5cGVdOwotfQotCiBAaW1wbGVt
ZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb24KQEAgLTExNCw1OCArNjUsMTcgQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpl
eHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQogCiAtIChOU0FycmF5PE5T
U3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucwogewotICAgIC8vIEFnZ3JlZ2F0ZSBl
eHRlbnNpb25zIGJhc2VkIG9uIHNwZWNpZmllZCBNSU1FIHR5cGVzLgotICAgIGF1dG8gYWNjZXB0
ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0
ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKLQotICAg
IGF1dG8gYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxv
Y10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkTUlNRVR5cGVzIGVudW1lcmF0ZU9iamVjdHNVc2lu
Z0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MKiBzdG9w
KSB7Ci0gICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29udGFpbnNTdHJpbmc6QCIvIl0pOwotICAg
ICAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIHVuaW9uU2V0OmV4dGVuc2lvbnNGb3JNSU1FVHlw
ZShtaW1lVHlwZSldOwotICAgIH1dOwotCi0gICAgYXV0byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVF
eHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAg
ICBbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5T
U3RyaW5nICpleHRlbnNpb24sIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKLSAgICAg
ICAgQVNTRVJUKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpOwotICAgICAg
ICBbYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBz
dWJzdHJpbmdGcm9tSW5kZXg6MV1dOwotICAgIH1dOwotICAgIAotICAgIFthbGxvd2VkRmlsZUV4
dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNp
b25zLmdldCgpXTsKLSAgICByZXR1cm4gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3Rz
XTsKKyAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWxsb3dlZEZpbGVF
eHRlbnNpb25zKCkpOworfQorCistIChCT09MKV9hbGxvd0ltYWdlVHJhbnNjb2RpbmcKK3sKKyAg
ICByZXR1cm4gX29wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93SW1hZ2VUcmFuc2NvZGluZygpOwog
fQogCi0tIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
cworLSAodm9pZClfc2V0QWxsb3dJbWFnZVRyYW5zY29kaW5nOihCT09MKWZsYWcKIHsKLSAgICBh
dXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBh
dXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
c107Ci0KLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwot
ICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Ci0g
ICAgCi0gICAgaWYgKCFbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdICYmICFbYWNjZXB0ZWRGaWxl
RXh0ZW5zaW9ucyBjb3VudF0pCi0gICAgICAgIHJldHVybiBAW0FsbEZpbGVzVGl0bGVdOwotCi0g
ICAgaWYgKCEoW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxl
RXh0ZW5zaW9ucyBjb3VudF0pKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBB
bGxGaWxlc1RpdGxlXTsKLQotICAgIGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMg
Zmlyc3RPYmplY3RdOwotICAgIGF1dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpA
Ii8iXTsKLSAgICAKLSAgICBpZiAoIXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3Vz
dG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVBy
ZWZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBh
dXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5s
b2NhdGlvbiArIDFdOwotICAgIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3Ry
aW5nOkAiKiJdKQotICAgICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVAJUAgRmlsZXMiLCBbW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJj
YXNlU3RyaW5nXSwgW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZp
bGVzVGl0bGVdOwotCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAg
ICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5
cGVTdWZmaXggdXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxl
XTsKLQotICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBt
aW1lVHlwZVN1ZmZpeCwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICBfb3Bl
blBhbmVsUGFyYW1ldGVycy0+c2V0QWxsb3dJbWFnZVRyYW5zY29kaW5nKGZsYWcpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAppbmRleCAyOWVlODEyMGU0YWYxYmFl
YTIyYzA2MjRhYzJlMjNiNGUxYmQ0YWQ2Li5iZmJlNDdjMTY5MDBlYjI3YzkzNzY1YzAxM2QwYzcx
YmFlM2E0YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKQEAgLTMxLDggKzMx
LDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5T
U3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
My40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5
PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3
cml0ZSwgc2V0dGVyPV9zZXRBbGxvd0ltYWdlVHJhbnNjb2Rpbmc6KSBCT09MIF9hbGxvd0ltYWdl
VHJhbnNjb2RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBlbmQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggNDlj
NzE0Mjc4NWVjMjliNDQ2ZmQ5NTY5NzgxOTVhMTk3ZDM5YjkzZi4uMGEwMWJkMWU3MTA0YjZmZmI4
M2JmZmUzNWYzNDRmMTc5YmZhOWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIlVJRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNpbXBvcnQgIkFQ
SUZyYW1lSW5mby5oIgogI2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgpAQCAtODI2LDcgKzgyNyw3IEBAIGJvb2wgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkqIHdlYkZyCiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9w
ZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
KSk7CiAKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9w
ZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRp
YXRlZEJ5RnJhbWU6d3JhcHBlcihmcmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVy
KV0gKE5TQXJyYXkgKlVSTHMpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3Bl
blBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBvcGVu
UGFuZWxQYXJhbWV0ZXJzID0gbWFrZVJlZigqb3BlblBhbmVsUGFyYW1ldGVycyksIGxpc3RlbmVy
ID0gV1RGTW92ZShsaXN0ZW5lcildIChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTg0MCw3ICs4NDEsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcgogICAgICAgICBmb3Ig
KE5TVVJMICp1cmwgaW4gVVJMcykKICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQodXJsLnBh
dGgpOwogCi0gICAgICAgIGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMpOworICAgICAg
ICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzLCBvcGVuUGFuZWxQYXJhbWV0ZXJzLT5h
bGxvd2VkTUlNRVR5cGVzKCktPnRvU3RyaW5nVmVjdG9yKCkpOwogICAgIH0pLmdldCgpXTsKIAog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCA4NTc0NjUxNWRhNjdk
MTQyYWY3ZGZhZDg4ZGU4YTQ4YTgzZjYxYzEwLi5kMTVmZWUyZmQ5MWIzN2UwNzMxOTQ1ZDU0ZTNh
NDMzMzU3ZjEwYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtNTQsMTIgKzU0LDEyIEBA
IHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYgZmlsCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzKQordm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlbmFtZXMpOworICAg
IG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVzLCBhbGxvd2VkTUlN
RVR5cGVzKTsKIH0KIAogdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5j
ZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oCmluZGV4IDFlZWNkY2ExN2RjMzhkYWU5NWUyODljYWFmNzA4
NjFjZDBiNzZjNWYuLjNhOThhNDQ2MzRkNjlkNTU4ZTgyNmMwZWNhM2M3NjVkOWM4NTIyZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSog
aWNvbkltYWdlRGF0YSk7CiAjZW5kaWYKLSAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMpOworICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlw
ZXMgPSB7IH0pOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdhNzQ3MjU1MDlk
ZjJhNzYxYmUxMTUwZWFhZTQ2ZDQ0NmRjNTljYjUuLmM5YzdiZTU1MzViNzRjMTUwMDlhY2RlNzky
MjI5Y2ExMzNmOTk4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMjAxLDYgKzIwMSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNp
bmNsdWRlICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCkBAIC02NjgzLDE3ICs2Njg0
LDI4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhE
aXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlVVJMcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxv
d2VkTUlNRVR5cGVzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byByZXBsYWNlbWVudFVSTHMg
PSB0cmFuc2NvZGVJbWFnZXMoZmlsZVVSTHMsIGFsbG93ZWRNSU1FVHlwZXMpOworI2Vsc2UKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHM7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93
ZWRNSU1FVHlwZXMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQot
ICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbCJfcywgZmlsZVVSTHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRl
bnNpb25GaWxlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFwcGVuZChp
IDwgcmVwbGFjZW1lbnRVUkxzLnNpemUoKSAmJiAhcmVwbGFjZW1lbnRVUkxzW2ldLmlzTnVsbCgp
ID8gcmVwbGFjZW1lbnRVUkxzW2ldIDogZmlsZVVSTHNbaV0pOworCisgICAgYXV0byBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxl
c0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBz
YW5kYm94RXh0ZW5zaW9uRmlsZXMpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVu
ZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlcykpKTsKICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgcmVwbGFjZW1lbnRVUkxzKSk7
CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9v
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGFlMTk1YmQ3ZTJmODI0MGQxZTdkODhjN2I3ZGUxNDIyYTRkYjky
OTYuLmJhNWFlMGQ5MWM1YWQ3OGYwODUxNDFiNzZiNmZjNDBmZTNmMTAzZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25EYXRhKTsKICNl
bmRpZgotICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0
cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlw
ZXMgPSB7IH0pOwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CiAKICAgICBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkm
LCBEcmF3aW5nQXJlYVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHAKaW5kZXggOGY0N2I4ZjA3MGUxZjI5ODMzNDUzOGRjYThjZjRkNGU0
YTM5NGM0Yi4uOTAzZjk0MWQ3NTgyN2U3MjU3MmVmYjgyMWI2ZDIzZWE5Y2ZiYWRlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiBmaWxlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZTsKIApAQCAtNDQs
NyArNDQsOCBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZQogICAgIGlmICghZmlsZS0+cGF0aCgp
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUt
PnBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRs
ZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVu
c2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRo
ID0gcGF0aCA9PSBmaWxlLT5wYXRoKCkgPyBudWxsU3RyaW5nKCkgOiBmaWxlLT5wYXRoKCk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBleHRl
bnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJs
b2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDQwOTg0ZGIy
N2RhZGQ3ZDY1ZTlhNTFhYzE3MmQwNTc3MTkyZDRhMzguLmU4MzdhNjk2NGUwNDdkM2E0NWIzMjBl
ZDAzNmI2YThhNzMwM2Y2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIFJlZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWw7CiAgICAgdm9pZCByZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5k
ZXggZDk4MzQzYzQ1MTk3MDA1YWVhMzZhOTZkMTEyYjRkNWU2YmZkOTJhYy4uZDJhYWVmNTM5ZjM2
NjU0MTJiNGNmZmJkZWQ1YmE5ZTYyYTQ5NTA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmNwcApAQCAtNDYsOSArNDYsOSBAQCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6fldlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyKCkKIHsKIH0KIAotdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQordm9p
ZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRGaWxlcykK
IHsKLSAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9maWxlQ2hv
b3Nlci0+Y2hvb3NlRmlsZXMoZmlsZXMsIHJlcGxhY2VtZW50RmlsZXMpOwogfQogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCmluZGV4IGQwZDg1OWI4
ZDMwNjNmNDdhNjE2YzIwNDBlZjM3ZWI0ZmQxYmQwZjkuLjhkYzQ2ZWZiYTFjY2JhMjEyMjE2MjQz
ZTdhNGU0NDc3MzI1MTBjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgfldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCk7CiAKICAg
ICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQotICAgIHZvaWQgZGlk
Q2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9y
aWdpbmFsRmlsZXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9v
c2VGaWxlc1dpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgV2ViQ29yZTo6SWNvbiopOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQyMjY0NmQ2
MjExZTdiMzQ1N2IyNzIzOTdmOGFiOGNjZjJlM2VhNmQuLjY3MDkyMjdlNzk4ZjkwNWY1YzQ3YTlk
MDkxNTc1MzM2NDBmZGRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC00MzAwLDEyICs0MzAwLDEyIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9y
PFN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCit2b2lkIFdlYlBhZ2U6OmRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHJlcGxhY2VtZW50RmlsZXMpCiB7CiAgICAgaWYgKCFtX2FjdGl2ZU9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2FjdGl2ZU9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLT5kaWRDaG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9hY3RpdmVPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci0+ZGlkQ2hvb3NlRmlsZXMoZmlsZXMsIHJlcGxhY2VtZW50Rmls
ZXMpOwogICAgIG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk0YWNh
YWYxODU1Mzg3ZjVlYzA4OGJmM2YzNzZiYjFlYTFjZWFlZC4uNTJiN2M4Mjc2YjEzN2M5NjA1MGI4
NjEwM2JmZjQzYjQ0OTM0ZWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTYwMyw3ICsxNjAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZhaWxl
ZFRvU2hvd1BvcHVwTWVudSgpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiByZXBsYWNlbWVudEZpbGVzKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5l
bCgpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDY4ODlkNjIzMmI5
ZmU1NTdhMTlhMzkwYTNhZmU0NGQ4NzNmNjllMDkuLmM1ZTM0MzFmNjE3NDhjMWQ0MTBkMGJkNDUy
NWNmMjFlNGY2NmM2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzQzLDcgKzM0Myw3IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihWZWN0b3I8U3RyaW5nPiBmaWxl
VVJMcywgU3RyaW5nIGRpc3BsYXlTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBpY29uRGF0YSwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJv
eEV4dGVuc2lvbiwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaWNvblNlcnZpY2Vz
U2FuZGJveEV4dGVuc2lvbikKICNlbmRpZgotICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KFZlY3RvcjxTdHJpbmc+IGZpbGVVUkxzKQorICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KFZlY3RvcjxTdHJpbmc+IGZpbGVVUkxzLCBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHMp
CiAgICAgRGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogICAgIEV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQppbmRleCAyYzgwMzBjYTg5NmViZGE2OWY1NTE3OTllY2ZlMTM3ZmYx
MmRjOWE0Li5mYWY5M2I3M2EyYjAxNDEwMzgwNWE1Y2M2YmNhN2I2NTNhNjUyN2I3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC05Myw3ICs5Myw3IEBAIE1lZGlhU3RyYXRlZ3kq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCiAKIGNsYXNzIFdl
YkJsb2JSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHJpdmF0ZToKLSAg
ICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5h
bCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVy
ZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0
cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5
cGUpOyB9CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxC
bG9iUGFydD4mJiBwYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Js
b2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5
cGUpOyB9CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVS
TCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNy
Y1VSTCk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9i
bG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNV
UkwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAppbmRleCA5YjI1N2Y0ZjI1NTJlZmYwMmVkNDdiY2U4NTM3ZGQ0NDcwYTQz
MTdlLi40NzViMjFmMTczNzJmOGU4ODNkOTEzNjNjNDA5ZThhYTRmYTQ2NDBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgTWVkaWFTdHJhdGVneSog
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkKIAogY2xhc3MgV2Vi
QmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBwcml2YXRlOgotICAg
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFs
IHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJl
bmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlw
ZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJs
b2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxv
YlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlw
ZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3Jj
VVJMKTsgfQogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Js
b2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VS
TCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzOWJiZWRhOTI0ZWVhY2U5MmE3OTUy
MzczNzBhMmQxNjg2NGQ5OTRjLi5mM2Y0ZjAyNzhiNzQxMmZiZTc2YzU4ZjVjYzIwM2I0NzY4NDFm
NWMzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNjZXB0
ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91bGQg
Y29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAg
ICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDpwYXJhbWV0
ZXJzOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9u
Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJW
aWV3Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6d2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0
IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFsbG9jXSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9w
dXBUYXJnZXQ6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBp
bml0aWFsaXplCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCmluZGV4IDU3MGFhYTU0ZGI5NzBlNDc0MjQ4OTRmN2JkODcxYTczZjJjN2Rk
MGUuLjY5NjBjZTY3NDE3ODUxYzgxMjdjODJkZWQyYzM3NWUwNTQ0MmU4NjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC03
NiwzOSArNzYsMzAgQEAgLSAodm9pZClwZXJmb3JtQWN0aW9uOihOU1RleHRGaW5kZXJBY3Rpb24p
b3AKIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2JqZWN0IHsKIEBw
cml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7Ci0gICAgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBXS09wZW5QYW5lbFBhcmFtZXRlcnMg
Kl9wYXJhbWV0ZXJzOwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRmlsZUV4dGVuc2lvbnNQ
b3B1cFRhcmdldAogCi0tIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5Q
YW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgeworLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilv
cGVuUGFuZWwgcGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyB7
CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewogICAgICAgICBfb3BlblBhbmVsID0g
b3BlblBhbmVsOwotICAgICAgICBfYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxl
RXh0ZW5zaW9ucyBjb3B5XTsKKyAgICAgICAgX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwogICAg
IH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVy
IHsKLSAgICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRl
bV0gPT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCistICh2b2lkKXBvcHVwQWN0aW9uOihO
U0J1dHRvbiAqKXNlbmRlciB7CisgICAgaWYgKHNlbmRlci5zdGF0ZSA9PSBOU0NvbnRyb2xTdGF0
ZVZhbHVlT24pIHsKICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpuaWxd
OwotICAgIGVsc2UgaWYgKCFbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dKSB7Ci0gICAgICAg
IC8vIEZpcnN0IGl0ZW0uCi0gICAgICAgIGlmICghW19hbGxvd2VkRmlsZUV4dGVuc2lvbnMgY291
bnRdKQotICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1d
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5
cGVzOl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgICAgICBfcGFyYW1ldGVycy5fYWxsb3dJ
bWFnZVRyYW5zY29kaW5nID0gTk87CisgICAgfSBlbHNlIHsKKyAgICAgICAgW19vcGVuUGFuZWwg
c2V0QWxsb3dlZEZpbGVUeXBlczpfcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsK
KyAgICAgICAgX3BhcmFtZXRlcnMuX2FsbG93SW1hZ2VUcmFuc2NvZGluZyA9IFlFUzsKICAgICB9
CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIHJl
bGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogQGVuZAogCiBAaW50ZXJmYWNlIFdL
MkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5kZXJCYXJDb250YWluZXIsIFdL
TmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+
CkBAIC02MjksNTAgKzYyMCwyNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIH1dOwog
fQogCi0tIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0
bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Kilwb3B1cFRhcmdldAor
LSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCopcG9wdXBUYXJnZXQKIHsKLSAgICBOU1RleHRGaWVsZCogbGFiZWwgPSBbW1tOU1Rl
eHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07Ci0g
ICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwotICAgIFtsYWJlbCBzZXRFZGl0
YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwotICAgIFtsYWJlbCBzZXRC
b3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVh
ckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAgICBOU1BvcFVwQnV0dG9uICpi
dXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Qg
cHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRvbiBhZGRJdGVtc1dpdGhUaXRs
ZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdldF07Ci0gICAgW2J1
dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwotICAgIFtidXR0b24gc2l6
ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBdOwotICAgIFtwb3B1cFRh
cmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwotICAgIAorICAgIE5TQnV0dG9uICpjaGVja2JveCA9
IFtOU0J1dHRvbiBjaGVja2JveFdpdGhUaXRsZTpAIlNob3cgYWxsIEZpbGVzIiB0YXJnZXQ6cG9w
dXBUYXJnZXQgYWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKKyAgICBbY2hlY2tib3gg
c2l6ZVRvRml0XTsKKyAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246Y2hlY2tib3hdOworICAg
ICAgICAKICAgICBOU1ZpZXcqIGZpbHRlclZpZXcgPSBbW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwotICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZp
ZXc6bGFiZWxdOwotICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZpZXc6YnV0dG9uXTsKLQotICAgIGNv
bnN0IENHRmxvYXQgbWFyZ2luID0gMjA7Ci0gICAgY29uc3QgQ0dGbG9hdCBzcGFjaW5nID0gMjsK
LSAgICBjb25zdCBDR0Zsb2F0IG1pbkJ1dHRvbldpZHRoID0gMjMwOworICAgIFtmaWx0ZXJWaWV3
IGFkZFN1YnZpZXc6Y2hlY2tib3hdOwogCi0gICAgTlNSZWN0IGxhYmVsRnJhbWUgPSBbbGFiZWwg
ZnJhbWVdOwotICAgIE5TUmVjdCBidXR0b25GcmFtZSA9IFtidXR0b24gZnJhbWVdOworICAgIGNv
bnN0IENHRmxvYXQgbWFyZ2luID0gMTA7CisgICAgCisgICAgTlNSZWN0IGNoZWNrYm94RnJhbWUg
PSBbY2hlY2tib3ggZnJhbWVdOwogICAgIE5TUmVjdCBmaWx0ZXJWaWV3RnJhbWUgPSBbZmlsdGVy
VmlldyBmcmFtZV07CiAKLSAgICAvLyBTZXQgYSBtaW5pbXVtIHdpZHRoIGZvciAnYnV0dG9uJy4K
LSAgICBidXR0b25GcmFtZS5zaXplID0gTlNNYWtlU2l6ZShNQVgoTlNXaWR0aChidXR0b25GcmFt
ZSksIG1pbkJ1dHRvbldpZHRoKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKTsKLSAgICAKLSAgICAv
LyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91dCAnbGFiZWwnIGFuZCAnYnV0dG9uJyBob3Jpem9udGFs
bHkgYW5kIGhhdmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgotICAgIGZpbHRlclZpZXdGcmFtZS5zaXpl
ID0gTlNNYWtlU2l6ZShOU1dpZHRoKGxhYmVsRnJhbWUpICsgTlNXaWR0aChidXR0b25GcmFtZSkg
KyBzcGFjaW5nLCBNQVgoTlNIZWlnaHQobGFiZWxGcmFtZSksIE5TSGVpZ2h0KGJ1dHRvbkZyYW1l
KSkgKyBtYXJnaW4gKiAyKTsKKyAgICAvLyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91dCAnY2hlY2ti
b3gnaG9yaXpvbnRhbGx5IGFuZCBoYXZlIGEgdmVydGljYWwgbWFyZ2lucy4KKyAgICBmaWx0ZXJW
aWV3RnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUoTlNXaWR0aChjaGVja2JveEZyYW1lKSwgTlNIZWln
aHQoY2hlY2tib3hGcmFtZSkgKyBtYXJnaW4gKiAyKTsKICAgICBbZmlsdGVyVmlldyBzZXRGcmFt
ZTpmaWx0ZXJWaWV3RnJhbWVdOwogCi0gICAgLy8gJ2xhYmVsJyB3aWxsIGJlIGxhaWQgb3V0IGNl
bnRlciB2ZXJ0aWNhbGx5LgotICAgIGxhYmVsRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNN
aW5YKGxhYmVsRnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGxh
YmVsRnJhbWUpKSAvIDIpOwotICAgIFtsYWJlbCBzZXRGcmFtZTpsYWJlbEZyYW1lXTsKLSAgICAK
LSAgICAvLyAnYnV0dG9uJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5IGFuZCBp
dCB3aWxsIGNvbWUgYWZ0ZXIgJ2xhYmVsJyBob3Jpem9udGFsbHkuCi0gICAgYnV0dG9uRnJhbWUu
b3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNYXhYKGxhYmVsRnJhbWUpICsgc3BhY2luZywgKE5TSGVp
Z2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChidXR0b25GcmFtZSkpIC8gMik7Ci0gICAg
W2J1dHRvbiBzZXRGcmFtZTpidXR0b25GcmFtZV07CisgICAgLy8gJ2NoZWNrYm94RnJhbWUnIHdp
bGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCisgICAgY2hlY2tib3hGcmFtZS5vcmln
aW4gPSBOU01ha2VQb2ludChOU01pblgoY2hlY2tib3hGcmFtZSksIChOU0hlaWdodChmaWx0ZXJW
aWV3RnJhbWUpIC0gTlNIZWlnaHQoY2hlY2tib3hGcmFtZSkpIC8gMik7CisgICAgW2NoZWNrYm94
IHNldEZyYW1lOmNoZWNrYm94RnJhbWVdOwogCiAgICAgcmV0dXJuIGZpbHRlclZpZXc7CiB9CkBA
IC02ODAsNyArNjQ4LDcgQEAgLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzoo
TlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVuc2kKICNpZiBfX2hhc19mZWF0
dXJlKG9iamNfZ2VuZXJpY3MpCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFt
ZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1VSTCAqPiAqIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVy
CiAjZWxzZQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRp
YXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TQXJyYXkgKlVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVs
UGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilm
cmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheSAqVVJMcywgQk9PTCB0cmFu
c2NvZGVJbWFnZXMpKWNvbXBsZXRpb25IYW5kbGVyCiAjZW5kaWYKIHsKICAgICBOU09wZW5QYW5l
bCAqb3BlblBhbmVsID0gW05TT3BlblBhbmVsIG9wZW5QYW5lbF07CkBAIC02ODgsMTAgKzY1Niw5
IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRo
UGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAgICAgb3BlblBhbmVsLmFsbG93c011bHRpcGxl
U2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKIAogICAgIFtf
ZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQ
b3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhP
cGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2Fs
bG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBb
W0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVu
UGFuZWwgcGFyYW1ldGVyczogcGFyYW1ldGVyc107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmls
ZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRs
ZXM7Ci0gICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxv
d2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBU
YXJnZXRdOworICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6
X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOwogICAgIGlmIChmaWx0ZXJWaWV3KQogICAgICAg
ICBbb3BlblBhbmVsIHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9yZWNvdmVyLWZpbGUtaW5wdXQtaW4tdW5wb3N0
ZWQtZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3JlY292ZXItZmlsZS1p
bnB1dC1pbi11bnBvc3RlZC1mb3JtLmh0bWwKaW5kZXggOTY3N2UyNTYxYTI4MDRmMGUzYjZlYTZh
YTViMjU2ZWM1NmM3MzEwOC4uNzVkNzVmNGNlODU4ZTExNGI2YjEyNzMzNmRmOTE0MjYzYTQzOWY3
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3JlY292ZXItZmlsZS1p
bnB1dC1pbi11bnBvc3RlZC1mb3JtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWxlL3JlY292ZXItZmlsZS1pbnB1dC1pbi11bnBvc3RlZC1mb3JtLmh0bWwKQEAgLTcxLDggKzcx
LDggQEAgZnVuY3Rpb24gbmF2aWdhdGVCYWNrKCkgewogdmFyIGZpbGVzUmVhZCA9IDA7CiAKIGZ1
bmN0aW9uIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkLCBldnQpIHsKLSAgICBkb2N1bWVudC5y
ZWFkRmlsZUNvbnRlbnRzID0gZXZ0LnRhcmdldC5yZXN1bHQ7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb2N1bWVudC5yZWFkRmlsZUNvbnRlbnRzIiwgZXhwZWN0ZWQpOworICAgIC8vIGRv
Y3VtZW50LnJlYWRGaWxlQ29udGVudHMgPSBldnQudGFyZ2V0LnJlc3VsdDsKKyAgICAvLyBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LnJlYWRGaWxlQ29udGVudHMiLCBleHBlY3RlZCk7
CiAgICAgKytmaWxlc1JlYWQ7CiAgICAgaWYgKGZpbGVzUmVhZCA9PSAzKSB7CiAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403161</attachid>
            <date>2020-06-29 19:29:22 -0700</date>
            <delta_ts>2020-07-06 02:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200629192921.patch</filename>
            <type>text/plain</type>
            <size>93226</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxOGFkMzgyZjlkNDg0ZDIzNmFjMGMy
ZmM3NTE1MTYwYWU2NGQzYTguLjIwNWE1ZWIzZTdiNzA4NWFlNzk2MGUxODNhNzhmZWM1OTJhNGI5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgYW4gb3B0aW9uYWwgc3VmZml4IGluIHRoZSBuYW1lIG9mIHRoZSB0
ZW1wb3JhcnkgZmlsZSBuYW1lLiBUaGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byB2ZXJp
ZnkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGltYWdlIHRvIGEgZGlmZmVyZW50IHR5cGUKKyAgICAg
ICAgYnkgc2V0dGluZyB0aGUgc3VmZml4IHRvIGJlIHRoZSBleHRlbnNpb24gb2YgdGhlIGRlc3Rp
bmF0aW9uIHR5cGUuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2Nv
YS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWZlYzIxNjc5Y2U3OTAzNTgwNWI4MmZkNjhhNTQzMzFiOWVlNWVlZS4uNzhjOGMwYmZm
NjEyZDJkMjBlN2I5NmFmMmU4ZDViNzNlN2RmNTkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDIwLTA2LTI5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZv
cm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQg
dG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6Cisg
ICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwv
RGlyZWN0b3J5RmlsZUxpc3RDcmVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZp
bGVMaXN0KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIHBsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVDaG9vc2VyRmlsZUluZm86OkZpbGVDaG9vc2VyRmlsZUluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxl
Q2hvb3NlclNldHRpbmdzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUZv
ckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRVbmlxdWVTdHJpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwZW5kRXh0ZW5zaW9uc0Zvck1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRBcHBlbmRBbGxJbWFnZXNFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmguCisgICAgICAgICogcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVn
aXN0cnlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5
cGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJs
b2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpz
dGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0
cnlQbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9NSU1FVHlw
ZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Omdl
dEV4dGVuc2lvbnNGb3JNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0veGRnL01JTUVUeXBl
UmVnaXN0cnlYZGcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0
RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKToKKwogMjAyMC0wNi0yOCAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRqdXN0IHRhYmxlIGNvbnRlbnQg
dmVydGljYWwgcG9zaXRpb24gdG8gbWF0Y2ggdmVydGljYWwtYWxpZ24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmYx
MzNmYzJjZTJkOGY5N2I0MDYyZDQ0MzI3OWQ4MWUxOGQxMDRmOS4uZjFjMWVlYzUwYjVkNTMxODMw
ODlkOGNjYTEzMGUzYWQ5ZTU4ZjJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMC0w
Ni0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFttYWNPU106IFNlbGVjdGluZyBhIG5vbi1hY2NlcHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4g
PGlucHV0IHR5cGU9ImZpbGUiPiBlbGVtZW50IHNob3VsZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2Vw
dGVkIGZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1ODQ2ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1hZ2VzKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oOgorICAgICAgICAqIFNoYXJlZC9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgICogU2hhcmVkL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKEFQSTo6T3BlblBh
bmVsUGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9w
ZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb25zdCk6CisgICAgICAg
IChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oOgor
ICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjp0cmFuc2NvZGVEaXNhbGxvd2VkSW1h
Z2VzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6c2V0VHJhbnNj
b2RlRGlzYWxsb3dlZEltYWdlcyk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6
Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRl
cnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFt
ZXRlcnMgX3RyYW5zY29kZURpc2FsbG93ZWRJbWFnZXNdKToKKyAgICAgICAgKC1bV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzIF9zZXRUcmFuc2NvZGVEaXNhbGxvd2VkSW1hZ2VzOl0pOgorICAgICAgICAo
LVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZp
bGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojpj
aG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Qmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vc2VGaWxlcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKwogMjAyMC0wNi0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCB0aHJlYWQtc2FmZXR5IGlzc3VlIGluIHdlYlByb2Nlc3NQb29sSGlnaER5
bmFtaWNSYW5nZURpZENoYW5nZUNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCA3MDc3YWYxNjRjZDE3OGViYjUwYjNlZDQ4YWZlMWE0ZGFlMTI1MmQ3Li4zMTBlNTI3ZWRi
ODkyYjU2Y2YxOGJiOWZhMzViMzE4YTI0MzFmMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fi
b3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24t
YWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBz
aG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIw
MjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggMmI1NDM5NmFjYTJlZmI0MmVhZTJiOTE5YWVjYmE2NjBlYzczZjQ3Zi4u
OWQ1MWRiMzc5YWQ3ZjI3Yjc0ZjViMDFmMGQ3MTk4YWQxOGQzOGQxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA2LTI5ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0
aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+
IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKwogMjAyMC0wNi0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbmFtZSBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGluaXRpYWxpemUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAppbmRleCA2MGIzMmU0NmZjNDI5MDgyM2E2MjliZGEzZWQyNzJhODNiNmFiNGE2Li5i
ZmU4NDEyOTZkM2M2ZDUyYThhOGFmMTU1ZTZlOGVlOGY5MTIwMTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
CkBAIC0xNDUsNyArMTQ1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGlzSGFu
ZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRs
ZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRo
ZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1X
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRs
ZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUs
IEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBm
YWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNl
dCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3
aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1t
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGFjZWRmNWZk
ZDFiMmU3NjgyNGZmYTg5ZDRkY2RmNDBhYzFiMWI4N2QuLjNhY2I4NmFjNzc1Y2RhZGY3MjVjZDg4
MDg4ZDJiNWNkNGIxNGI1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2Eu
bW0KQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKICAgICByZXR1
cm4gTlNIb21lRGlyZWN0b3J5KCk7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUp
CitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKIHsK
ICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCkBA
IC0xMTMsOSArMTEzLDEzIEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVICiAgICAgQ1N0cmluZyBw
cmVmaXhVdGY4ID0gcHJlZml4LnV0ZjgoKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQo
cHJlZml4VXRmOC5kYXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZCgiWFhYWFhYIiwgNik7CisKKyAgICAvLyBBcHBlbmQgdGhlIGZpbGUgbmFt
ZSBzdWZmaXguCisgICAgQ1N0cmluZyBzdWZmaXhVdGY4ID0gc3VmZml4LnV0ZjgoKTsKKyAgICB0
ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoc3VmZml4VXRmOC5kYXRhKCksIHN1ZmZpeFV0ZjgubGVu
Z3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnXDAnKTsKIAotICAgIHBsYXRm
b3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAodGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKKyAgICBw
bGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0ZW1wcyh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHN1
ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGU0YWIwMGZiZGFkOWZmYjcxYjUwMjJj
Y2VjNDFjMTBiNWNhMGY1ZGYuLmZhMGI1MzFmZTEwZmY3NGViYWI4NjVmM2NhMDkxNWRhMWQ5NTc1
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0zMjYsNyArMzI2
LDcgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCi1TdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgp
LmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3RtcF9k
aXIoKSwgZmlsZW5hbWUuZ2V0KCksIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IGM5ZjUwMTQzNmFiY2M4MDk0ZTg0MTQ4MGQyMWZlMzZhNDcx
ZTgxZmYuLmIzYzA0MDFiNTA2ZmRjZTMyMzJlZDZmZWZiYmJmMGU1MmQxMDAzYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIGJv
b2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVT
cGFjZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsK
ICAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDY1OWRmZDUyNzI3ZGM5ZWY2OTliN2Y5MjRkNWQyZTcy
ZDg0ZTBhZTcuLmI2MzE0OTU3M2E0ODQxZmU2MDAxZWVmYWZkZDAwOTJjZmM3NDFhYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMg
U3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyYpPiYgYWN0aW9uKQogICAgIHJldHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBoYW5kbGUgPSBJTlZBTElEX0hB
TkRMRV9WQUxVRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMDgyNjg3MDQ3NTE2NzllNDBlNjI4
MTUwZDA3ODZhOWRmMzJkMDA1NC4uNTdhZTg3NDU0ZTkwYzFhYjRjMDgxODMwZDkxYzE1Yzk0OTkz
MWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC05NDUsNiArOTQ1LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL0RyYWdJdGVtLmgKICAgICBw
bGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9ucy5oCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIu
aAorICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaAogICAgIHBsYXRmb3JtL0ZpbGVI
YW5kbGUuaAogICAgIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmgKICAgICBwbGF0Zm9ybS9GaWxlU3Ry
ZWFtQ2xpZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTVjNzY5OGNhZTJlMDI5ZjUzYmNhZGM4YzA5
MzU4ZGFlMzMyZjg1Zi4uYWI3NDU0NDkwZTZmNGU3ZGE3OGIwZTJkNmRlMzg0NmNjNjM1OTM1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTE3OTcsNiArMTc5Nyw3IEBAIHBsYXRmb3JtL0RyYWdEYXRhLmNw
cAogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMu
Y3BwCiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKK3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGlu
Z3MuY3BwCiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3Bw
CiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZhMzE5MDhiZDBjZTU3Yzc0MGUyYjA1NmY4
NDdiOTdlNGJlNWI4YTkuLmY4NTgzNzc1ZDA5NWVkMWM0NWY5YjBjOTk0YjEyOWM3NmZkZGNkYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNDIsNiArMjE0Miw3IEBACiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0
eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIw
NEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjQ4REQ0QzI0QTVDM0VEMDBERTAyQjgg
LyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI0OERENDkyNEE1OTAwNjAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0
dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAw
RjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAw
QTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0
RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NzM0LDYgKzk3MzUsOCBA
QAogCQk3MjE0NDM0NTIyNDBDOEJBMDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25G
cmFtZVJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRnJhbWVSYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNDhERDQ5MjRBNTkwMDYwMERFMDJCOCAvKiBGaWxlQ2hv
b3NlclNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVDaG9vc2VyU2V0dGluZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0OERENEIyNEE1OTBDOTAwREUwMkI4IC8qIEZp
bGVDaG9vc2VyU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUNob29zZXJTZXR0
aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzI5MUEzQTdFNTQw
MEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNEVEMzJBMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjRFRDMyQjFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5N
YXguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDQxLDYgKzI2NDQ0LDggQEAKIAkJCQkyNjJFQzQx
OTFEMDc4RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFja2luZ1JlZ2lvbnMuaCAqLywKIAkJCQk5MzRG
RTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3BwICovLAogCQkJCTA2NkM3NzJB
MEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAorCQkJCTcyNDhERDRCMjRBNTkw
QzkwMERFMDJCOCAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmNwcCAqLywKKwkJCQk3MjQ4REQ0OTI0
QTU5MDA2MDBERTAyQjggLyogRmlsZUNob29zZXJTZXR0aW5ncy5oICovLAogCQkJCTUzNTFENEFF
MURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmNwcCAqLywKIAkJCQk1MzUxRDRBRjFERjkx
NkFDMDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oICovLAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5
M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCkBAIC0zMDY3MCw2ICszMDY3NSw3IEBACiAJCQkJ
OTc2RDZDODExMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OEY4NkRBMUY1MDlFNzQwMEU4Q0ZDNSAvKiBGaWxlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTA2NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI0OERENEMyNEE1QzNFRDAwREUwMkI4IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUzNTFENEIxMURGOTE2QjQwMDgwMTBDRCAvKiBGaWxlSGFu
ZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg4QTkwNTE3NTUzQ0Q3MDAwQzc0RjkgLyogRmls
ZUljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2
OSAvKiBGaWxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CmluZGV4IDhkNmUzODczODU1MTNkZGQ0MWUwMzcyNDA5OGI0MzJlYWNlY2ViYzAuLjM3MTAwN2I0
MDM4MzZlYjMxOTkyODhiZmExNmNkMjMyNGJkYTIyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNw
cApAQCAtNDYsMTYgKzQ2LDE3IEBAIFJlZjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2CiAgICAgcmV0dXJu
IGZpbGU7CiB9CiAKLVJlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxlPiBGaWxlOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lT3ZlcnJpZGUpCiB7CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgU3RyaW5nIHR5cGU7Ci0g
ICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5
cGUpOworICAgIFN0cmluZyBlZmZlY3RpdmVQYXRoID0gIXJlcGxhY2VtZW50UGF0aC5pc051bGwo
KSA/IHJlcGxhY2VtZW50UGF0aCA6IHBhdGg7CisgICAgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShlZmZlY3RpdmVQYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUpOwogCiAgICAgYXV0byBp
bnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRlcm5hbFVSTCwgcGF0aCwgdHlw
ZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChpbnRl
cm5hbFVSTCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZpbGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmlu
ZyB7IHBhdGggfSwgV1RGTW92ZShuYW1lKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZp
bGUoV1RGTW92ZShpbnRlcm5hbFVSTCksIFdURk1vdmUodHlwZSksIFN0cmluZyB7IGVmZmVjdGl2
ZVBhdGggfSwgV1RGTW92ZShuYW1lKSkpOwogfQogCiBGaWxlOjpGaWxlKFVSTCYmIHVybCwgU3Ry
aW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmgKaW5kZXggZDJmOTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3NDFmODNlZmY3OC4uODc5NzRk
MDAzYzM5ZGNlNWQ4MzRmYzk3ZjA0NjhmYjMyZGVkMzI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBmaWxl
IHdpdGggYW4gb3B0aW9uYWwgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5h
bWUgYW5kIGFzc29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBv
bmUgcHJvdmlkZWQgaW4gdGhlIHBhdGguCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
aWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlk
ZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29u
c3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUgPSB7IH0pOwogCiAgICAgLy8gQ3JlYXRlIGEgRmlsZSB1
c2luZyB0aGUgJ25ldyBGaWxlJyBjb25zdHJ1Y3Rvci4KICAgICBzdGF0aWMgUmVmPEZpbGU+IGNy
ZWF0ZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDVl
MWQ0YzAwYTljMDY4YzgwMzFjMjRjY2Q2MGFiMjBhNmFmYTA2MGIuLjExM2YyZTkwNmRiYjU3ZDMw
YmNhOWQ5NTUyZWNlYzM1NTZiM2IzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsMTUgKzY0LDE2IEBAIHN0YXRpYyBU
aHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4g
Km1hcDsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CisgICAgU3RyaW5nIGVm
ZmVjdGl2ZVBhdGggPSAhcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpID8gcmVwbGFjZW1lbnRQYXRo
IDogcGF0aDsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRl
KHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmls
ZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShlZmZlY3RpdmVQYXRo
KSwgcGF0aCwgY29udGVudFR5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2Fs
bE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29s
YXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGVmZmVjdGl2ZVBhdGggPSBlZmZlY3Rp
dmVQYXRoLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVu
dFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVh
dGUoZWZmZWN0aXZlUGF0aCksIHBhdGgsIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBh
OWM3OWZlMjI5MmY4OTViMzFjNjBmNzU2N2ZmZDA0OTNmZWRjODMyLi5lY2I3NGYxN2MwNmRiZWJj
NzM0OTgzZGIzOTIxZGM5ODk4NDE1OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiBi
bG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RpcmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXggMWFmOWViMjJjNGE2NDM1MjE0
MWU3MTk1NmU1MmE2Y2ZmNjJhMGY0Ny4uZjAwOTg5ZGQwM2ZjMTI5NTYzYTg4NTQ4NmQ1YTU3YWE3
YWQyMGQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EaXJlY3RvcnlGaWxlTGlz
dENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGlyZWN0b3J5RmlsZUxpc3RD
cmVhdG9yLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGVG
aWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQogICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgYXBwZW5kRGlyZWN0
b3J5RmlsZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5mby5wYXRo
KSwgZmlsZU9iamVjdHMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5h
cHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkpOworICAgICAg
ICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZShpbmZvLnBhdGgsIHsgfSwgaW5m
by5kaXNwbGF5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZN
b3ZlKGZpbGVPYmplY3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApp
bmRleCBmM2M3MDk4Y2JmNWU0YjgyMGViNjgwZjdjYzQyNjU1ZjBiOWUyZDZkLi5kMTI3YTU4ZDYz
YTViYjYyODYxZTZkYmJiNTlkOWRjMDg2NTc1NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4gRmlsZUlucHV0VHlwZTo6ZmlsZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQwog
ICAgIGZpbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSAvIDIpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAyKSB7CiAgICAgICAgIGlmICghc3RhdGVbaSArIDFd
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbGVzLnVuY2hlY2tlZEFwcGVuZCh7IHN0YXRlW2ld
LCBzdGF0ZVtpICsgMV0gfSk7CisgICAgICAgICAgICBmaWxlcy51bmNoZWNrZWRBcHBlbmQoeyBz
dGF0ZVtpXSwgeyB9LCBzdGF0ZVtpICsgMV0gfSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGZpbGVzLnVuY2hlY2tlZEFwcGVuZCh7IHN0YXRlW2ldIH0pOwogICAgIH0KQEAgLTQxNCw3ICs0
MTQsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxl
Q2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0CiAKICAgICBpZiAoIWFsbG93c0RpcmVjdG9y
aWVzKCkpIHsKICAgICAgICAgYXV0byBmaWxlcyA9IHBhdGhzLm1hcChbXShhdXRvJiBmaWxlSW5m
bykgewotICAgICAgICAgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShmaWxlSW5mby5wYXRoLCBmaWxl
SW5mby5kaXNwbGF5TmFtZSk7CisgICAgICAgICAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKGZpbGVJ
bmZvLnBhdGgsIGZpbGVJbmZvLnJlcGxhY2VtZW50UGF0aCwgZmlsZUluZm8uZGlzcGxheU5hbWUp
OwogICAgICAgICB9KTsKICAgICAgICAgZGlkQ3JlYXRlRmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVzKSksIGljb24pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggYWM3ZjVkNDdiY2Y0NTM4ZmVkODBjNjJiOTlj
MjQ3MzUwNDc0ODg1Yi4uZDE0NGQxYWMzMmVjNWVhNmIxN2Y4ODBjMWNhMmUxMjBhZmUzMzk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtNTgsNyArNTgsNyBA
QCB2b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAg
ICAgY2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsKIH0KIAotdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3Nl
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK3ZvaWQgRmlsZUNob29zZXI6
OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiByZXBsYWNlbWVudE5hbWVzKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGlu
ZWxlZ2FudC4gV2Ugc2hvdWxkIG5vdCBiZSBsb29raW5nIGF0IHNldHRpbmdzIGhlcmUuCiAgICAg
aWYgKG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyA9PSBmaWxlbmFtZXMpCkBAIC02OCw4ICs2OCw4
IEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJ
bmZvPiBmaWxlczsKLSAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogZmlsZW5hbWVzKQotICAgICAg
ICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZSkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gZmlsZW5hbWVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAg
ICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWVzW2ldLCBpIDwg
cmVwbGFjZW1lbnROYW1lcy5zaXplKCkgPyByZXBsYWNlbWVudE5hbWVzW2ldIDogbnVsbFN0cmlu
ZygpKSk7CiAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKaW5kZXggZTUxZWI5ZTg0Mzg3OTVhNzZmZWM5YTNkYmY3
YzZhMDg0ZWEwODg5NS4uODc3OTM0MjZkY2E0YTQxNjU4NjI1ZDNlYzBhNjZmMmY3ZTUyNDA2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCkBAIC0yOSwyNSArMjksMTkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUg
IkZpbGVDaG9vc2VyU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gTWVk
aWFDYXB0dXJlVHlwZSB7Ci0gICAgTWVkaWFDYXB0dXJlVHlwZU5vbmUsCi0gICAgTWVkaWFDYXB0
dXJlVHlwZVVzZXIsCi0gICAgTWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50Ci19OwotCiBjbGFz
cyBGaWxlQ2hvb3NlcjsKIGNsYXNzIEljb247CiAKIHN0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZv
IHsKLSAgICBGaWxlQ2hvb3NlckZpbGVJbmZvKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSA9IFN0cmluZygpKQorICAgIEZpbGVDaG9vc2VyRmlsZUluZm8oY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCA9IHsgfSwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSA9IHsgfSkKICAgICAgICAgOiBwYXRoKHBhdGgpCisgICAg
ICAgICwgcmVwbGFjZW1lbnRQYXRoKHJlcGxhY2VtZW50UGF0aCkKICAgICAgICAgLCBkaXNwbGF5
TmFtZShkaXNwbGF5TmFtZSkKICAgICB7CiAgICAgfQpAQCAtNTgsMjAgKzUyLDEwIEBAIHN0cnVj
dCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcgcGF0aDsK
KyAgICBjb25zdCBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoOwogICAgIGNvbnN0IFN0cmluZyBkaXNw
bGF5TmFtZTsKIH07CiAKLXN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzIHsKLSAgICBib29sIGFs
bG93c0RpcmVjdG9yaWVzIHsgZmFsc2UgfTsKLSAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMg
eyBmYWxzZSB9OwotICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdE1JTUVUeXBlczsKLSAgICBWZWN0
b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9uczsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWxl
Y3RlZEZpbGVzOwotI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQotICAgIE1lZGlhQ2FwdHVyZVR5
cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07Ci0jZW5kaWYKLX07
Ci0KIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxl
Q2hvb3NlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTg2LDggKzcwLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNob29zZUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjaG9vc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50TmFtZXMgPSB7IH0pOwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0IGlkZW50aWNh
bCB0byBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKS4gV2Ugc2hvdWxkIG1lcmdlIHRoaXMKICAg
ICAvLyBmdW5jdGlvbiB3aXRoIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpIGFuZCBoZW5jZSBy
ZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgpAQCAtMTA3LDE2ICs5MSwzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYg
ewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5
cGU+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpN
ZWRpYUNhcHR1cmVUeXBlLAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRp
YUNhcHR1cmVUeXBlTm9uZSwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVk
aWFDYXB0dXJlVHlwZVVzZXIsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1l
ZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVudAotICAgID47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTY4N2QzZGM3ZGRjYmM0ZDA3MzkzMTg5ODcxMzgwNzQ1NjJkNjI3NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGlu
Z3MuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3Nl
clNldHRpbmdzLmgiCisKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBtaW1lVHlwZUZvckV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uLnN0YXJ0c1dpdGgoJy4nKSA/IGV4dGVuc2lvbi5y
aWdodChleHRlbnNpb24ubGVuZ3RoKCkgLSAxKSA6IGV4dGVuc2lvbik7Cit9CisKK3N0YXRpYyB2
b2lkIGFwcGVuZFVuaXF1ZVN0cmluZ3MoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MsIFZl
Y3RvcjxTdHJpbmc+JiBhbGxTdHJpbmdzKQoreworICAgIGZvciAoYXV0byYgc3RyaW5nIDogc3Ry
aW5ncykKKyAgICAgICAgYWxsU3RyaW5ncy5hcHBlbmRJZk5vdENvbnRhaW5zKHN0cmluZyk7Cit9
CisKK3N0YXRpYyB2b2lkIGFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGV4dGVuc2lvbnMsIFZlY3RvcjxTdHJpbmc+JiBhbGxNSU1FVHlwZXMpCit7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKSB7CisgICAgICAgIGF1dG8gbWlt
ZVR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICBpZiAobWlt
ZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCht
aW1lVHlwZS5jb250YWlucygnLycpKTsKKyAgICAgICAgYWxsTUlNRVR5cGVzLmFwcGVuZElmTm90
Q29udGFpbnMobWltZVR5cGUpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kRXh0ZW5z
aW9uc0Zvck1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWltZVR5cGVzLCBWZWN0b3I8
U3RyaW5nPiYgYWxsRXh0ZW5zaW9ucykKK3sKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogbWlt
ZVR5cGVzKSB7CisgICAgICAgIEFTU0VSVChtaW1lVHlwZS5jb250YWlucygnLycpKTsKKyAgICAg
ICAgYXBwZW5kVW5pcXVlU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9y
TUlNRVR5cGUobWltZVR5cGUpLCBhbGxFeHRlbnNpb25zKTsKKyAgICB9Cit9CisKK3N0YXRpYyBi
b29sIHNob3VsZEFwcGVuZEFsbEltYWdlc0V4dGVuc2lvbnMoVmVjdG9yPFN0cmluZz4mIGFsbEV4
dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBhbGxFeHRlbnNpb25zKSB7
CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24p
OworICAgICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjph
bGxvd2VkTUlNRVR5cGVzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlN
RVR5cGVzOworCisgICAgYXBwZW5kVW5pcXVlU3RyaW5ncyh0aGlzLT5hY2NlcHRNSU1FVHlwZXMs
IGFsbG93ZWRNSU1FVHlwZXMpOworICAgIGFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnModGhp
cy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMsIGFsbG93ZWRNSU1FVHlwZXMpOworCisgICAgaWYgKCF0
aGlzLT5hbGxvd0ltYWdlVHJhbnNjb2RpbmcpIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCJpbWFnZS8qIl9zKTsK
KyAgICAgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhleHRlbnNpb25zLCBhbGxvd2Vk
TUlNRVR5cGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlczsKK30KKwor
VmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25z
KCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisK
KyAgICBhcHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKHRoaXMtPmFjY2VwdE1JTUVUeXBlcywg
YWxsb3dlZEZpbGVFeHRlbnNpb25zKTsKKyAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFj
Y2VwdEZpbGVFeHRlbnNpb25zLCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpOworCisgICAgaWYgKHNo
b3VsZEFwcGVuZEFsbEltYWdlc0V4dGVuc2lvbnMoYWxsb3dlZEZpbGVFeHRlbnNpb25zKSkgewor
ICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25z
Rm9yTUlNRVR5cGUoImltYWdlLyoiX3MpOworICAgICAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKGV4
dGVuc2lvbnMsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk7CisgICAgfQorCisgICAgcmV0dXJuIGFs
bG93ZWRGaWxlRXh0ZW5zaW9uczsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXJTZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ZDJjMTYyZjExNWFjNWViZTIxODQw
ZGJmMWYwNTRjNzg3OGQ1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IE1lZGlhQ2FwdHVyZVR5cGUgeworICAgIE1lZGlhQ2FwdHVyZVR5cGVOb25lLAorICAgIE1lZGlh
Q2FwdHVyZVR5cGVVc2VyLAorICAgIE1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVudAorfTsKKwor
c3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgeworICAgIGJvb2wgYWxsb3dzRGlyZWN0b3JpZXMg
eyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcyB7IGZhbHNlIH07CisgICAg
Ym9vbCBhbGxvd0ltYWdlVHJhbnNjb2RpbmcgeyBmYWxzZSB9OworICAgIFZlY3RvcjxTdHJpbmc+
IGFjY2VwdE1JTUVUeXBlczsKKyAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9u
czsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOworI2lmIEVOQUJMRShNRURJQV9D
QVBUVVJFKQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2Fw
dHVyZVR5cGVOb25lIH07CisjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5n
PiBhbGxvd2VkTUlNRVR5cGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0
cmluZz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlLAorICAgICAgICBXZWJD
b3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlTm9uZSwKKyAgICAgICAgV2Vi
Q29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZVVzZXIsCisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVudAorICAg
ID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4NGVkZTJhZGIwMWExNTUwZTJmZTUwZDUwNjQz
YjNmYTNmLi5kMzdmOWI5MWRmMmMwN2E1MzQ2YmZjZWNmZTY2OTBkYTQyOGI3MzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdldE1lZGlhTUlNRVR5
cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwogICAgIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBnZXRNZWRpYU1JTUVUeXBlc0ZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2V0TUlNRVR5
cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhPiBjcmVhdGVNSU1FVHlwZVJlZ2lz
dHJ5VGhyZWFkR2xvYmFsRGF0YSgpOwogCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEg
TUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29s
IGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sg
dG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBK
YXZhU2NyaXB0IG9yIEpTT04gcmVzb3VyY2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lz
dHJ5Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lz
dHJ5Q29jb2EubW0KaW5kZXggMmIzZmUwNTU4NGY5NjRlMDk5NzY4NDZhYTEyOTgwNzZlYTRiZTE1
MC4uMjhjZGM1ZTgxMDkzMDk2YjNiOWM0OGU4ZmZhNTJkZGE1ZmQxMjcyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5t
bQpAQCAtMjcsMTEgKzI3LDcwIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKIAorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJLmg+CiAj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4mIGV4dGVuc2lvbnNGb3JN
SU1FVHlwZU1hcCgpCit7CisgICAgc3RhdGljIGF1dG8gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFw
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hT
ZXQ8U3RyaW5nPj4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOworCisgICAgICAgIGF1dG8gYWRk
RXh0ZW5zaW9uRm9yTUlNRVR5cGUgPSBbJl0oY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbikgeworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBleHRlbnNpb25z
Rm9yTUlNRVR5cGVNYXAuZW5zdXJlKHR5cGUsIFtdKCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBIYXNoU2V0PFN0cmluZz4oKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5hZGQoZXh0ZW5zaW9uKTsKKyAgICAgICAgfTsKKworICAgICAg
ICBhdXRvIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSA9IFsmXShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IENGQXJyYXlSZWYmIGV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIGF1dG8gd2lsZGNh
cmRNSU1FVHlwZSA9IG1ha2VTdHJpbmcodHlwZS5zcGxpdCgnLycpLmZpcnN0KCksICIvKiJfcyk7
CisKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291
bnQoZXh0ZW5zaW9ucyk7IGkgPCBjb3VudDsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBDRlN0
cmluZ1JlZiBleHRlbnNpb24gPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGV4dGVuc2lvbnMsIGkpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4
dGVuc2lvbikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAg
ICAvLyBBZGQgZXh0ZW5zaW9uIHRvIHdpbGRjYXJkTUlNRVR5cGUsIGZvciBleGFtcGxlIGFkZCAi
cG5nIiB0byAiaW1hZ2UvKiIKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlw
ZSh3aWxkY2FyZE1JTUVUeXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgICAgIC8vIEFkZCBl
eHRlbnNpb24gdG8gaXRzbWltZVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2Uv
cG5nIgorICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKHR5cGUsIGV4dGVu
c2lvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IGFsbFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVy
cygpKTsKKworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGFsbFVUSXMuZ2V0KCkpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgYXV0byB1
dGkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhbGxV
VElzLmdldCgpLCBpKSk7CisgICAgICAgICAgICBhdXRvIHR5cGUgPSBhZG9wdENGKFVUVHlwZUNv
cHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7CisgICAg
ICAgICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdENGKFVUVHlwZUNvcHlBbGxUYWdzV2l0aENsYXNzKHV0
aSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOworICAgICAgICAgICAgaWYgKCFleHRl
bnNpb25zIHx8ICFDRkFycmF5R2V0Q291bnQoZXh0ZW5zaW9ucy5nZXQoKSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUodHlw
ZS5nZXQoKSwgZXh0ZW5zaW9ucy5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOworICAgIH0oKSk7CisKKyAgICByZXR1cm4gZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlTWFwOworfQorCitzdGF0aWMgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9u
c0ZvcldpbGRjYXJkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIFZlY3RvcjxT
dHJpbmc+IGV4dGVuc2lvbnM7CisKKyAgICBhdXRvIGl0ZXIgPSBleHRlbnNpb25zRm9yTUlNRVR5
cGVNYXAoKS5maW5kKHR5cGUpOworICAgIGlmIChpdGVyICE9IGV4dGVuc2lvbnNGb3JNSU1FVHlw
ZU1hcCgpLmVuZCgpKQorICAgICAgICBleHRlbnNpb25zLmFwcGVuZFJhbmdlKGl0ZXItPnZhbHVl
LmJlZ2luKCksIGl0ZXItPnZhbHVlLmVuZCgpKTsKKworICAgIHJldHVybiBleHRlbnNpb25zOwor
fQorCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pCiB7CiAgICAgcmV0dXJuIFtbTlNVUkxGaWxlVHlwZU1hcHBp
bmdzIHNoYXJlZE1hcHBpbmdzXSBNSU1FVHlwZUZvckV4dGVuc2lvbjooTlNTdHJpbmcgKilleHRl
bnNpb25dOwpAQCAtMzksNiArOTgsOCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIFZlY3RvcjxTdHJp
bmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CisgICAgaWYgKHR5cGUuZW5kc1dpdGgoJyonKSkKKyAgICAgICAgcmV0dXJu
IGV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKHR5cGUpOwogICAgIHJldHVybiBtYWtlVmVj
dG9yPFN0cmluZz4oW1tOU1VSTEZpbGVUeXBlTWFwcGluZ3Mgc2hhcmVkTWFwcGluZ3NdIGV4dGVu
c2lvbnNGb3JNSU1FVHlwZTp0eXBlXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCA1YWJm
ZDc1Y2I0OTQ1NmU0MmQzOWQ0NGQzYmMyMjU5YWFmZmE1MjI2Li5lYmFiNjE4MmUzZWE0ODljY2Q4
MjI0NjZhNjNhYjRlMjRlZDBlODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zMiwxNyArMzIs
MTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCitCbG9iRGF0YUZpbGVSZWZl
cmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRQYXRoKQogICAgIDogbV9wYXRoKHBhdGgpCisgICAgLCBtX3JlcGxh
Y2VtZW50UGF0aChyZXBsYWNlbWVudFBhdGgpCiB7CiB9CiAKIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7Ci0jaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1F
TlQpCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKICAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0aCk7Ci0jZW5kaWYKIH0KIAogY29uc3Qg
U3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQpAQCAtNTAsMTAgKzQ5LDkgQEAg
Y29uc3QgU3RyaW5nJiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnBhdGgoKQogI2lmIEVOQUJMRShG
SUxFX1JFUExBQ0VNRU5UKQogICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQp
CiAgICAgICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCk7Ci0KKyNlbmRpZgogICAgIGlmICgh
bV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBtX3JlcGxhY2VtZW50
UGF0aDsKLSNlbmRpZgogCiAgICAgcmV0dXJuIG1fcGF0aDsKIH0KQEAgLTEwMSw2ICs5OSwxMiBA
QCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMo
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAorICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGgu
aXNOdWxsKCkpIHsKKyAgICAgICAgbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIGlmICghbWV0YWRh
dGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIG1fc2l6ZSA9IG1ldGFk
YXRhLnZhbHVlKCkubGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAppbmRleCA2NTg4MjlkMDdmY2Zi
ZDZiMDJhMjBlMWNiMDFmZGM5ZDZkY2MwN2M5Li44ZmNiZThjMTFmMjEzNDhjZWZlNDhlZDAyNjY1
YzU1ZDYzNjk2NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBCbG9iRGF0YUZpbGVSZWZlcmVuY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
cGF0aCkKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGggPSB7IH0pCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0
aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2Uo
cGF0aCwgcmVwbGFjZW1lbnRQYXRoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QmxvYkRhdGFG
aWxlUmVmZXJlbmNlKCk7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmV2b2tlRmlsZUFjY2VzcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFBhdGgpOwogCiBwcml2
YXRlOgogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpAQCAtNjAsOCArNjAsOCBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOwotI2lmIEVOQUJMRShGSUxFX1JFUExB
Q0VNRU5UKQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKKyNpZiBFTkFCTEUoRklMRV9S
RVBMQUNFTUVOVCkKICAgICBib29sIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB7IGZh
bHNlIH07CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9zaXplIHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggZmU5
MWU4MWFhZDQzMDJlMDNkYjk2N2E0NmEzMDZhYzZkNDJjY2U1NS4uNGIxNWNkZGJlMGU0Yzc2ZThm
OTJiMDAyZDYyYTlhYjAyYjdhNmJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVS
TCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAg
IC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2Ig
ZGF0YS4KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3Rv
cjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vTUlNRVR5cGVSZWdpc3RyeVBs
YXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL01JTUVU
eXBlUmVnaXN0cnlQbGF5U3RhdGlvbi5jcHAKaW5kZXggZjM3MmNlMzAwNWY2N2Y4N2UzODQ5MDUx
YjE2NTMyZDNkMGE0NmE1NC4uYTM4MDZjNDViMzg1NmJiNzUwYzNlZDU1NzIwMjlkNTRlMjExMTUz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vTUlNRVR5
cGVSZWdpc3RyeVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
bGF5c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5UGxheVN0YXRpb24uY3BwCkBAIC04MCw0ICs4MCw5
IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9
CiAKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiB7IH07Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1F
VHlwZVJlZ2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlw
ZVJlZ2lzdHJ5V2luLmNwcAppbmRleCBhMDQ0OTgyYTA4ZTkwZDgwMTlmZjE0Y2YyYjAzM2JiZDU1
MmUyMTEyLi4xNTBhZTc1OTM1ZTM4Y2FmMjM4NWIyODg2NDgyMjgyZTdhNTVmZmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CkBAIC0xMTQsNCArMTE0LDkgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9u
UGx1Z2luTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1Zl
Y3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShj
b25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiB7IH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hkZy9NSU1FVHlwZVJlZ2lzdHJ5WGRnLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hkZy9NSU1FVHlwZVJlZ2lzdHJ5WGRnLmNwcAppbmRleCBmYzkx
MTkwYmU2OGRmNWQ1ZTM0ZTBmN2E1YTM4NTQzM2U4Mzg4MGYzLi5mNzdhMzI1NjA4ZmE1ODc5OWU3
ZjRiMjk1MWJlMDhmMmMwMGNkOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ZGcvTUlNRVR5cGVSZWdpc3RyeVhkZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veGRnL01JTUVUeXBlUmVnaXN0cnlYZGcuY3BwCkBAIC02Niw0ICs2Niw5IEBAIFN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCitWZWN0b3I8U3Ry
aW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJikKK3sKKyAgICByZXR1cm4geyB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDZmMGNlNjQ5ZDhiMTdmZWY4ZDY2ZWYxM2Q2M2JjNWZkZTY4YzUyNGMuLjg5MzE4
OWNmYTA3ODlkNTFjNzdhNWUzMmI0NWQzZDViM2IyZjRlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC03MzcsNyArNzM3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6YWxsQ29va2llc0RlbGV0ZWQoKQogCiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25I
YW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7CiAgICAgTkVUV09SS19QUk9DRVNTX01FU1NBR0VfQ0hFQ0soIXVybC5pc0VtcHR5KCkpOwog
CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3QKICAgICBpZiAoIXNl
c3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlc3Npb24tPmJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGV4
dGVuc2lvbkhhbmRsZSkpKSwgY29udGVudFR5cGUpOworICAgIHNlc3Npb24tPmJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIHJlcGxhY2VtZW50UGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSkpLCBjb250ZW50VHlwZSk7CiB9
CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKQEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBV
UgogICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Vzc2lvbi0+Ymxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNV
UkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZmls
ZUJhY2tlZFBhdGgsIG51bGxwdHIpLCBjb250ZW50VHlwZSk7CisgICAgc2Vzc2lvbi0+YmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkws
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoZmlsZUJh
Y2tlZFBhdGgpLCBjb250ZW50VHlwZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKaW5kZXggZTgyMzAwMDllYzk2YmZlZWYyMDk4YTFhZWVlN2EyN2FjMzk4YzNkYS4uMThj
Y2VkOTdjNjUzMmEzNmE3MGEzMWRkNzFkNmFmYmFmOGQ2NmU5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaApAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSYXdDb29r
aWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGaWxl
QmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVy
RmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwogICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMKTsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDIyMDBkNGM0YWQyMGNmNmMyZjFhNWI3YTQwMzZiMDY3NDgwMTQz
ZWUuLjdiODIyNTIzMjcwMGFhNjg4YzlkODRhYWMwNDIwYzQ5N2I2ZTVjZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDYsNyArNDYsNyBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgVW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhIYXNoU2V0PFN0cmlu
Zz4gaG9zdHMpCiAjZW5kaWYKIAotICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3Ry
aW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRs
ZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwg
U3RyaW5nIHBhdGgsIFN0cmluZyByZXBsYWNlbWVudFBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJl
Z2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0
cywgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoVVJMIHVy
bCwgVVJMIHNyY1VSTCkKICAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChV
UkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50
VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjY5NjAxY2VmMGVm
YzkzZGJlZDNlMDUzZDUzNDA4MTQ3YmUzZWQ5Ny4uY2ZmYzk5ZjgyYjA0NGM0OWIwNTAyYmU5NWRj
YzhjYjg5OTFjMjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgQmxvYlJlZ2lzdHJ5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ICAgICBjbGFzcyBFbXB0eUJsb2JSZWdpc3RyeSA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0
cnkgewotICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3Rv
cjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAg
ICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCmluZGV4IGFmMDhmNmQ1ZWZi
NGFhYTg2YjEwNGE0OWM5ODU1ZjIwNzI1YjY4MDguLjJlNjhhMGM5MTNiMTBjMDgxMDRhYTNiOTRl
M2I0MDU4NzkyNGZlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMu
Y3BwCkBAIC0yNiw2ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNH
VXRpbGl0aWVzLmgiCiAKKyNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VUSVV0aWxpdGll
cy5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBwYWludEltYWdlKENHQ29udGV4
dFJlZiBjb250ZXh0LCBDR0ltYWdlUmVmIGltYWdlLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBDR1Bv
aW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKQpAQCAtNDYsNCArNTIsODIgQEAgdm9pZCBw
YWludEltYWdlKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0ltYWdlUmVmIGltYWdlLCBDR0Zsb2F0
IHNjYWxlRmFjdG9yLCBDR1AKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwog
fQogCitTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQoreworICAgIEFTU0VSVChtaW1lVHlwZS5zdGFydHNXaXRoKCJpbWFnZS8i
X3MpKTsKKworICAgIC8vIENyZWF0ZSB0aGUgaW1hZ2Ugc291cmNlLgorICAgIGF1dG8gc291cmNl
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxl
LCBmYWxzZSkpOworICAgIGF1dG8gc291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRl
V2l0aFVSTChzb3VyY2VVUkwuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBpZiAoIXNvdXJjZSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJTb3VyY2UgcGF0aCBpcyBu
b3QgYSB2YWxpZCBpbWFnZS4iKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorCisgICAg
YXV0byBzb3VyY2VVVEkgPSBTdHJpbmcoQ0dJbWFnZVNvdXJjZUdldFR5cGUoc291cmNlLmdldCgp
KSk7CisgICAgYXV0byByZXBsYWNlbWVudFVUSSA9IFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSht
aW1lVHlwZSk7CisgICAgaWYgKHNvdXJjZVVUSSA9PSByZXBsYWNlbWVudFVUSSkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJTb3VyY2UgaW1hZ2UgYWxyZWFkeSBo
YXMgdGhlIHJlcGxhY2VtZW50IE1JTUUgdHlwZS4iKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7Cisg
ICAgfQorCisgICAgLy8gQ29tcHV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgbmFtZSBwcmVmaXggYW5k
IGZpbGUgZXh0ZW5zaW9uLgorICAgIGF1dG8gY29tcG9uZW50cyA9IEZpbGVTeXN0ZW06OnBhdGhH
ZXRGaWxlTmFtZShwYXRoKS5zcGxpdCgnLicpOworICAgIGF1dG8gZXh0ZW5zaW9uID0gV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWlt
ZVR5cGUpOworICAgIGF1dG8gcHJlZml4ID0gbWFrZVN0cmluZyhjb21wb25lbnRzLmZpcnN0KCks
ICJfIl9zKTsKKyAgICBhdXRvIHN1ZmZpeCA9IG1ha2VTdHJpbmcoIi4iX3MsIGV4dGVuc2lvbik7
CisKKyAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KKyAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgcmVwbGFjZW1lbnRGaWxlSGFuZGxlOworICAgIFN0cmluZyByZXBsYWNl
bWVudFBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShwcmVmaXgsIHJlcGxhY2Vt
ZW50RmlsZUhhbmRsZSwgc3VmZml4KTsKKyAgICBpZiAocmVwbGFjZW1lbnRGaWxlSGFuZGxlID09
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiUmVwbGFjZW1lbnQgaW1hZ2UgY2FuJ3QgYmUgY3Jl
YXRlZC4iKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIHRo
ZSBkYXRhIGNvbnN1bWVyLgorICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9
IHsgW10odm9pZCAqaW5mbywgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3QgY291bnQpIC0+IHNp
emVfdCB7CisgICAgICAgIGF1dG8gcGxhdGZvcm1GaWxlSGFuZGxlID0gKnN0YXRpY19jYXN0PEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAgICAgICByZXR1cm4gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUocGxhdGZvcm1GaWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgIH0sIG51bGxwdHIgfTsKKworICAgIC8vIENy
ZWF0ZSB0aGUgaW1hZ2UgcmVwbGFjZW1lbnQuCisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0Yo
Q0dEYXRhQ29uc3VtZXJDcmVhdGUoJnJlcGxhY2VtZW50RmlsZUhhbmRsZSwgJmNhbGxiYWNrcykp
OworICAgIGF1dG8gcmVwbGFjZW1lbnQgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhQ29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHJlcGxhY2VtZW50VVRJLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIDEsIG51bGxwdHIpKTsKKworICAgIC8vIFdyaXRlIHRoZSBzb3VyY2Ug
aW1hZ2UgdG8gdGhlIHJlcGxhY2VtZW50IGltYWdlLgorICAgIHNpemVfdCBpbmRleCA9IENHSW1h
Z2VTb3VyY2VHZXRQcmltYXJ5SW1hZ2VJbmRleChzb3VyY2UuZ2V0KCkpOworICAgIENHSW1hZ2VE
ZXN0aW5hdGlvbkFkZEltYWdlRnJvbVNvdXJjZShyZXBsYWNlbWVudC5nZXQoKSwgc291cmNlLmdl
dCgpLCBpbmRleCwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUocmVw
bGFjZW1lbnQuZ2V0KCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXBsYWNlbWVudEZp
bGVIYW5kbGUpOworCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aDsKK30KKworVmVjdG9yPFN0
cmluZz4gdHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCit7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVwbGFjZW1lbnRQYXRoczsKKyAgICBTdHJpbmcgcHJlZmVycmVkRW5jb2RpbmdNSU1FVHlwZTsK
KyAgICAKKyAgICBmb3IgKGF1dG8gbWltZVR5cGUgOiBhbGxvd2VkTUlNRVR5cGVzKSB7CisgICAg
ICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5
cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpIHsKKyAgICAgICAgICAgIHByZWZlcnJlZEVuY29kaW5n
TUlNRVR5cGUgPSBtaW1lVHlwZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKHByZWZlcnJlZEVuY29kaW5nTUlNRVR5cGUuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiByZXBsYWNlbWVudFBhdGhzOworCisgICAgZm9yIChhdXRvJiBwYXRoIDogcGF0aHMp
IHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Omdl
dE1JTUVUeXBlRm9yUGF0aChwYXRoKTsKKyAgICAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuY29u
dGFpbnMobWltZVR5cGUpKQorICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy5hcHBlbmQobnVs
bFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy5h
cHBlbmQodHJhbnNjb2RlSW1hZ2UocGF0aCwgcHJlZmVycmVkRW5jb2RpbmdNSU1FVHlwZSkpOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoczsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgKaW5kZXgg
ODUxZDE4MWE4ZmM3NTczYzkzMGNmYzYwM2IwZjQxNDI4NzQ3YjIyZC4uOTVkYTZkOTM3Nzk4YjJj
YTI5MTdhODYwZTZmMTUwY2YyMjE1ZmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jZy9DR1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dV
dGlsaXRpZXMuaApAQCAtMjksNiArMjksOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQg
cGFpbnRJbWFnZShDR0NvbnRleHRSZWYsIENHSW1hZ2VSZWYsIENHRmxvYXQgc2NhbGVGYWN0b3Is
IENHUG9pbnQgZGVzdGluYXRpb24sIENHUmVjdCBzb3VyY2UpOworU3RyaW5nIHRyYW5zY29kZUlt
YWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CitWZWN0b3I8
U3RyaW5nPiB0cmFuc2NvZGVJbWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAKaW5kZXggZmM3NGI2MDE3
M2M1NTI1OTBiNTRlMzQwYzY2YWUxZmEzNjg0NTcwYS4uOWE1NmUzOWI5MjZiOTY2MjQ1ZDY5YjU3
OTIyM2QxMDFmMDU1ZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcApA
QCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+
JiYgc2FuZGJveEV4dGVuc2lvbikKLSAgICA6IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKQor
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRhRmlsZVJl
ZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hF
eHRlbnNpb24pCisgICAgOiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UocGF0aCwgcmVwbGFjZW1lbnRQ
YXRoKQogICAgICwgbV9zYW5kYm94RXh0ZW5zaW9uKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbikp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaAppbmRleCA3NWE1ZDRkMGNiYmVj
MDg1YWZkZGIzOGZlYmI1MzNlNzM2NDA2MzI2Li43YjgzMjlmMjI5YTU1ZmQ0ZGJjM2M0NDY4Mzc5
YmIzMWJmMTAzNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTM0LDEz
ICszNCwxMyBAQCBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uOwogCiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50UGF0aCA9IHsgfSwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lv
biA9IG51bGxwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCBXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb24pKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKHBhdGgsIHJlcGxhY2VtZW50UGF0aCwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uKSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBCbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiYmKTsKKyAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2Fu
ZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRQYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CiAgICAgdmlydHVhbCB+QmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAgIHZvaWQgcHJlcGFy
ZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAppbmRleCA4NTFlYmY1YzAzOWU3
YjI4OTE5YWY5MTBiMDJmZWEwMGNlZWVkZjQ3Li5kMzVhNzRhODdhYTBiODUyZjQwODc0NjFkN2M4
NTI0ZGQ2YjBlMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
T3BlblBhbmVsUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCkBAIC01OCwxMiArNTgsMTUgQEAgUmVmPEFQSTo6
QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3QK
ICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hY2Nl
cHRGaWxlRXh0ZW5zaW9ucyk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLVdlYkNv
cmU6Ok1lZGlhQ2FwdHVyZVR5cGUgT3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlw
ZSgpIGNvbnN0CitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZE1J
TUVUeXBlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlw
ZTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5h
bGxvd2VkTUlNRVR5cGVzKCkpOworfQorCitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1l
dGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQVBJOjpB
cnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hbGxvd2VkRmlsZUV4dGVuc2lvbnMo
KSk7CiB9Ci0jZW5kaWYKIAogUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OnNl
bGVjdGVkRmlsZU5hbWVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCmluZGV4IDczMGU1ZDVlZWZmMmJhMGJl
NDg5NDdiMGQ3OTdlNjMxNWMzMjZiOTEuLjJhNjhhOWE5MjkyMWRkYmFiMDllYzVmYTY1ZWI4Yzg2
ZTczY2I3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVu
UGFuZWxQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9w
ZW5QYW5lbFBhcmFtZXRlcnMuaApAQCAtNDIsOSArNDIsMTMgQEAgcHVibGljOgogICAgIGJvb2wg
YWxsb3dNdWx0aXBsZUZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0
aXBsZUZpbGVzOyB9CiAgICAgUmVmPEFQSTo6QXJyYXk+IGFjY2VwdE1JTUVUeXBlcygpIGNvbnN0
OwogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0OworICAg
IFJlZjxBUEk6OkFycmF5PiBhbGxvd2VkTUlNRVR5cGVzKCkgY29uc3Q7CisgICAgUmVmPEFQSTo6
QXJyYXk+IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5
PiBzZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJbWFnZVRyYW5zY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd0ltYWdlVHJhbnNjb2Rpbmc7IH0K
KyAgICB2b2lkIHNldEFsbG93SW1hZ2VUcmFuc2NvZGluZyhib29sIGZsYWcpIHsgbV9zZXR0aW5n
cy5hbGxvd0ltYWdlVHJhbnNjb2RpbmcgPSBmbGFnOyB9CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRV
UkUpCi0gICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29u
c3Q7CisgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09w
ZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmluZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0Mjhh
MWU5YjAwOGIxNDg4MjMuLmNhYWRjMzUwM2MxN2FkOTU2YzcwZWM3ZWYwOTZiZjIxYmFmODRkMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAtMjUsNjAgKzI1LDExIEBACiAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiV0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaCIKLSNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvQ29yZVNlcnZpY2VzU1BJLmg+CiAKICNpZiBQTEFURk9STShNQUMp
CiAKICNpbXBvcnQgIldLTlNBcnJheS5oIgogCi1zdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIE5TU2V0PE5TU3RyaW5nICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQotewot
ICAgIHN0YXRpYyBhdXRvIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgYXV0byBhbGxV
VElzID0gYWRvcHRDRihfVVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSk7Ci0KLSAgICAg
ICAgYXV0byBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSA9IF4oTlNTdHJpbmcgKm1pbWVUeXBlLCBO
U1N0cmluZyAqZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnNGb3JNSU1F
VHlwZU1hcC5nZXQoKVttaW1lVHlwZV0pCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uc0Zvck1J
TUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSA9IFtOU011dGFibGVTZXQgc2V0XTsKLSAgICAgICAg
ICAgIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVdIGFkZE9iamVjdDpl
eHRlbnNpb25dOwotICAgICAgICB9OwotCi0gICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uc0Zvck1J
TUVUeXBlID0gXihOU1N0cmluZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVu
c2lvbnMpIHsKLSAgICAgICAgICAgIGF1dG8gd2lsZGNhcmRNSU1FVHlwZSA9IFtbbWltZVR5cGUg
Y29tcG9uZW50c1NlcGFyYXRlZEJ5U3RyaW5nOkAiLyJdWzBdIHN0cmluZ0J5QXBwZW5kaW5nU3Ry
aW5nOkAiLyoiXTsKLQotICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIGV4
dGVuc2lvbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byB3
aWxkY2FyZE1JTUVUeXBlLCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlLyoiCi0gICAg
ICAgICAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUod2lsZGNhcmRNSU1FVHlwZSwgZXh0
ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGl0c21pbWVUeXBl
LCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlL3BuZyIKLSAgICAgICAgICAgICAgICBh
ZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSwgZXh0ZW5zaW9uKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGFsbFVUSXMuZ2V0KCkpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAg
ICAgYXV0byB1dGkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChhbGxVVElzLmdldCgpLCBpKSk7Ci0gICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gYWRv
cHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NNSU1F
VHlwZSkpOwotICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFs
bFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Ci0gICAg
ICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKF9fYnJpZGdlIE5TU3RyaW5nICopbWlt
ZVR5cGUuZ2V0KCksIChfX2JyaWRnZSBOU0FycmF5PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9ucy5n
ZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGQgYWRkaXRpb25hbCBtaW1lIHR5cGVz
IHdoaWNoIF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpIG1heSBub3QgcmV0dXJuLgot
ICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZShAImltYWdlL3dlYnAiLCBAIndlYnAiKTsK
LQotICAgICAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOwotICAgIH0oKSk7Ci0K
LSAgICByZXR1cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpLmdldCgpOwotfQotCi1z
dGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAq
bWltZXR5cGUpCi17Ci0gICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBvYmpl
Y3RGb3JLZXk6bWltZXR5cGVdOwotfQotCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTExNCw1OCArNjUs
MTcgQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNT
dHJpbmcgKm1pbWV0eXBlKQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxl
RXh0ZW5zaW9ucwogewotICAgIC8vIEFnZ3JlZ2F0ZSBleHRlbnNpb25zIGJhc2VkIG9uIHNwZWNp
ZmllZCBNSU1FIHR5cGVzLgotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNj
ZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxm
IF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIGF1dG8gYWxsb3dlZEZpbGVFeHRlbnNp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwotCi0gICAgW2FjY2Vw
dGVkTUlNRVR5cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVU
eXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MKiBzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChbbWlt
ZVR5cGUgY29udGFpbnNTdHJpbmc6QCIvIl0pOwotICAgICAgICBbYWxsb3dlZEZpbGVFeHRlbnNp
b25zIHVuaW9uU2V0OmV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSldOwotICAgIH1dOwot
Ci0gICAgYXV0byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
cyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24sIE5TVUlu
dGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgQVNTRVJUKFtleHRlbnNpb24gY2hh
cmFjdGVyQXRJbmRleDowXSA9PSAnLicpOwotICAgICAgICBbYWRkaXRpb25hbEFsbG93ZWRGaWxl
RXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOwot
ICAgIH1dOwotICAgIAotICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21B
cnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zLmdldCgpXTsKLSAgICByZXR1cm4g
W2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKKyAgICByZXR1cm4gd3JhcHBlcihf
b3BlblBhbmVsUGFyYW1ldGVycy0+YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkpOworfQorCistIChC
T09MKV9hbGxvd0ltYWdlVHJhbnNjb2RpbmcKK3sKKyAgICByZXR1cm4gX29wZW5QYW5lbFBhcmFt
ZXRlcnMtPmFsbG93SW1hZ2VUcmFuc2NvZGluZygpOwogfQogCi0tIChOU0FycmF5PE5TU3RyaW5n
ICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcworLSAodm9pZClfc2V0QWxsb3dJbWFn
ZVRyYW5zY29kaW5nOihCT09MKWZsYWcKIHsKLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0g
W3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lv
bnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBjb25zdGV4cHIgYXV0
byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNvbnN0ZXhwciBhdXRvIEN1c3Rv
bUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAgaWYgKCFbYWNjZXB0ZWRN
SU1FVHlwZXMgY291bnRdICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0gICAg
ICAgIHJldHVybiBAW0FsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKCEoW2FjY2VwdGVkTUlNRVR5
cGVzIGNvdW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pKQotICAg
ICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIGF1
dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmplY3RdOwotICAgIGF1dG8g
cmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAgICAKLSAgICBpZiAoIXJh
bmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNU
aXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFttaW1lVHlwZSBzdWJzdHJp
bmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21p
bWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOwotICAgIAotICAg
IGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQotICAgICAgICByZXR1
cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW21pbWVUeXBl
UHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21pbWVUeXBlUHJl
Zml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKFtt
aW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBwZXJjYXNlU3RyaW5n
XSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIHJldHVybiBAW1tOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1lVHlwZVN1ZmZpeCwgbWltZVR5cGVQ
cmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICBfb3BlblBhbmVsUGFyYW1ldGVycy0+c2V0QWxs
b3dJbWFnZVRyYW5zY29kaW5nKGZsYWcpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
c1ByaXZhdGUuaAppbmRleCAyOWVlODEyMGU0YWYxYmFlYTIyYzA2MjRhYzJlMjNiNGUxYmQ0YWQ2
Li5iZmJlNDdjMTY5MDBlYjI3YzkzNzY1YzAxM2QwYzcxYmFlM2E0YTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnNQcml2YXRlLmgKQEAgLTMxLDggKzMxLDggQEAKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1F
VHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVF
eHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZp
bGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+
ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgc2V0dGVyPV9zZXRBbGxvd0lt
YWdlVHJhbnNjb2Rpbmc6KSBCT09MIF9hbGxvd0ltYWdlVHJhbnNjb2RpbmcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggNDljNzE0Mjc4NWVjMjliNDQ2ZmQ5NTY5Nzgx
OTVhMTk3ZDM5YjkzZi4uMGEwMWJkMWU3MTA0YjZmZmI4M2JmZmUzNWYzNDRmMTc5YmZhOWMyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKIAor
I2ltcG9ydCAiQVBJQXJyYXkuaCIKICNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgogI2ltcG9ydCAi
QVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
ci5oIgpAQCAtODI2LDcgKzgyNyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9w
ZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyCiAKICAgICBh
dXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdh
dGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmlu
aXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAgICBbZGVsZWdhdGUgd2Vi
VmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOndy
YXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihmcmFt
ZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RGTW92ZShjaGVj
a2VyKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5TQXJyYXkgKlVSTHMpIG11dGFi
bGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3Bl
blBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5pdGlh
dGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBvcGVuUGFuZWxQYXJhbWV0ZXJzID0gbWFrZVJl
Zigqb3BlblBhbmVsUGFyYW1ldGVycyksIGxpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcildIChO
U0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVj
a2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg0MCw3ICs4NDEsNyBAQCBib29s
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiBwYWdlLCBX
ZWJGcmFtZVByb3h5KiB3ZWJGcgogICAgICAgICBmb3IgKE5TVVJMICp1cmwgaW4gVVJMcykKICAg
ICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQodXJsLnBhdGgpOwogCi0gICAgICAgIGxpc3RlbmVy
LT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMo
ZmlsZW5hbWVzLCBvcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkTUlNRVR5cGVzKCktPnRvU3Ry
aW5nVmVjdG9yKCkpOwogICAgIH0pLmdldCgpXTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmNwcAppbmRleCA4NTc0NjUxNWRhNjdkMTQyYWY3ZGZhZDg4ZGU4YTQ4YTgzZjYx
YzEwLi5kMTVmZWUyZmQ5MWIzN2UwNzMxOTQ1ZDU0ZTNhNDMzMzU3ZjEwYjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgZmls
CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9v
c2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQordm9pZCBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5kaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbChmaWxlbmFtZXMpOworICAgIG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoZmlsZW5hbWVzLCBhbGxvd2VkTUlNRVR5cGVzKTsKIH0KIAogdm9pZCBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5jZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCmlu
ZGV4IDFlZWNkY2ExN2RjMzhkYWU5NWUyODljYWFmNzA4NjFjZDBiNzZjNWYuLjNhOThhNDQ2MzRk
NjlkNTU4ZTgyNmMwZWNhM2M3NjVkOWM4NTIyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBj
aG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNvbkltYWdlRGF0YSk7CiAjZW5kaWYK
LSAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwor
ICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMgPSB7IH0pOwogICAgIHZvaWQgY2Fu
Y2VsKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDdhNzQ3MjU1MDlkZjJhNzYxYmUxMTUwZWFhZTQ2ZDQ0NmRj
NTljYjUuLmM5YzdiZTU1MzViNzRjMTUwMDlhY2RlNzkyMjI5Y2ExMzNmOTk4YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBACiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhLmgiCkBAIC02NjgzLDE3ICs2Njg0LDI4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25z
dCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgYXV0byByZXBsYWNlbWVudFVSTHMgPSB0cmFuc2NvZGVJbWFnZXMoZmlsZVVS
THMsIGFsbG93ZWRNSU1FVHlwZXMpOworI2Vsc2UKKyAgICBWZWN0b3I8U3RyaW5nPiByZXBsYWNl
bWVudFVSTHM7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWRNSU1FVHlwZXMpOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgIGF1dG8gc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxl
cygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgZmlsZVVSTHMp
OworICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRlbnNpb25GaWxlczsKKyAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFwcGVuZChpIDwgcmVwbGFjZW1lbnRVUkxzLnNpemUo
KSAmJiAhcmVwbGFjZW1lbnRVUkxzW2ldLmlzTnVsbCgpID8gcmVwbGFjZW1lbnRVUkxzW2ldIDog
ZmlsZVVSTHNbaV0pOworCisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6
OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBzYW5kYm94RXh0ZW5zaW9uRmlsZXMpOwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVu
UGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsKICNlbmRpZgogCi0gICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVS
THMpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChmaWxlVVJMcywgcmVwbGFjZW1lbnRVUkxzKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFlMTk1
YmQ3ZTJmODI0MGQxZTdkODhjN2I3ZGUxNDIyYTRkYjkyOTYuLmJhNWFlMGQ5MWM1YWQ3OGYwODUx
NDFiNzZiNmZjNDBmZTNmMTAzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdB
bmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5n
LCBjb25zdCBBUEk6OkRhdGEqIGljb25EYXRhKTsKICNlbmRpZgotICAgIHZvaWQgZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMgPSB7IH0pOwogICAgIHZvaWQgZGlk
Q2FuY2VsRm9yT3BlblBhbmVsKCk7CiAKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNy
ZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmLCBEcmF3aW5nQXJlYVByb3h5JiwgUmVm
UHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXgg
OGY0N2I4ZjA3MGUxZjI5ODMzNDUzOGRjYThjZjRkNGU0YTM5NGM0Yi4uOTAzZjk0MWQ3NTgyN2U3
MjU3MmVmYjgyMWI2ZDIzZWE5Y2ZiYWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVm
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGV4dGVuc2lvbkhhbmRsZTsKIApAQCAtNDQsNyArNDQsOCBAQCB2b2lkIEJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRh
dGFGaWxlUmVmZQogICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmls
ZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUp
LCAwKTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoID0gcGF0aCA9PSBmaWxlLT5wYXRoKCkg
PyBudWxsU3RyaW5nKCkgOiBmaWxlLT5wYXRoKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgcGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBl
KSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJ
L0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IDQwOTg0ZGIyN2RhZGQ3ZDY1ZTlhNTFhYzE3MmQwNTc3
MTkyZDRhMzguLmU4MzdhNjk2NGUwNDdkM2E0NWIzMjBlZDAzNmI2YThhNzMwM2Y2MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJl
Z2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1Ymxp
YzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmlu
YWw7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggZDk4MzQzYzQ1MTk3MDA1YWVhMzZh
OTZkMTEyYjRkNWU2YmZkOTJhYy4uZDJhYWVmNTM5ZjM2NjU0MTJiNGNmZmJkZWQ1YmE5ZTYyYTQ5
NTA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcApAQCAtNDYsOSArNDYsOSBAQCBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6fldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCkK
IHsKIH0KIAotdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQordm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lcjo6ZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcmVwbGFjZW1lbnRGaWxlcykKIHsKLSAgICBtX2ZpbGVDaG9vc2VyLT5j
aG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlRmlsZXMoZmlsZXMs
IHJlcGxhY2VtZW50RmlsZXMpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5oCmluZGV4IGQwZDg1OWI4ZDMwNjNmNDdhNjE2YzIwNDBlZjM3ZWI0
ZmQxYmQwZjkuLjhkYzQ2ZWZiYTFjY2JhMjEyMjE2MjQzZTdhNGU0NDc3MzI1MTBjNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgfldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCk7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFn
ZSgpIHsgbV9wYWdlID0gMDsgfQotICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9yaWdpbmFsRmlsZXMpOwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc1dpdGhEaXNwbGF5U3RyaW5n
QW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmlu
ZywgV2ViQ29yZTo6SWNvbiopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQyMjY0NmQ2MjExZTdiMzQ1N2IyNzIzOTdmOGFiOGNj
ZjJlM2VhNmQuLjY3MDkyMjdlNzk4ZjkwNWY1YzQ3YTlkMDkxNTc1MzM2NDBmZGRmNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MzAwLDEy
ICs0MzAwLDEyIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRo
RGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0CiB9CiAjZW5kaWYKIAotdm9pZCBX
ZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZXMpCit2b2lkIFdlYlBhZ2U6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcGxhY2VtZW50Rmls
ZXMpCiB7CiAgICAgaWYgKCFtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaWRDaG9v
c2VGaWxlcyhmaWxlcyk7CisgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+ZGlk
Q2hvb3NlRmlsZXMoZmlsZXMsIHJlcGxhY2VtZW50RmlsZXMpOwogICAgIG1fYWN0aXZlT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk0YWNhYWYxODU1Mzg3ZjVlYzA4OGJmM2YzNzZi
YjFlYTFjZWFlZC4uNTJiN2M4Mjc2YjEzN2M5NjA1MGI4NjEwM2JmZjQzYjQ0OTM0ZWIwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTYwMyw3ICsx
NjAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxT
dHJpbmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBsYWNlbWVudEZpbGVz
KTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDY4ODlkNjIzMmI5ZmU1NTdhMTlhMzkwYTNhZmU0NGQ4NzNm
NjllMDkuLmM1ZTM0MzFmNjE3NDhjMWQ0MTBkMGJkNDUyNWNmMjFlNGY2NmM2YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtMzQzLDcgKzM0Myw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5
U3RyaW5nQW5kSWNvbihWZWN0b3I8U3RyaW5nPiBmaWxlVVJMcywgU3RyaW5nIGRpc3BsYXlTdHJp
bmcsIElQQzo6RGF0YVJlZmVyZW5jZSBpY29uRGF0YSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbikKICNlbmRp
ZgotICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKFZlY3RvcjxTdHJpbmc+IGZpbGVVUkxz
KQorICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKFZlY3RvcjxTdHJpbmc+IGZpbGVVUkxz
LCBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHMpCiAgICAgRGlkQ2FuY2VsRm9yT3BlblBh
bmVsKCkKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIEV4dGVuZFNhbmRib3hG
b3JGaWxlc0Zyb21PcGVuUGFuZWwoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSBzYW5kYm94RXh0ZW5zaW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAy
YzgwMzBjYTg5NmViZGE2OWY1NTE3OTllY2ZlMTM3ZmYxMmRjOWE0Li5mYWY5M2I3M2EyYjAxNDEw
MzgwNWE1Y2M2YmNhN2I2NTNhNjUyN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CkBAIC05Myw3ICs5Myw3IEBAIE1lZGlhU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y3JlYXRlTWVkaWFTdHJhdGVneSgpCiAKIGNsYXNzIFdlYkJsb2JSZWdpc3RyeSBmaW5hbCA6IHB1
YmxpYyBCbG9iUmVnaXN0cnkgewogcHJpdmF0ZToKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lz
dGVyRmlsZUJsb2JVUkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQor
ICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1
cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CiAgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBwYXJ0cywgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JV
UkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9CiAgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxv
YlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0KICAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwm
IHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9i
VVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1vdmUocmVmZXJlbmNlKSwg
Y29udGVudFR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA5YjI1
N2Y0ZjI1NTJlZmYwMmVkNDdiY2U4NTM3ZGQ0NDcwYTQzMTdlLi40NzViMjFmMTczNzJmOGU4ODNk
OTEzNjNjNDA5ZThhYTRmYTQ2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTgwLDcgKzgwLDcgQEAgTWVkaWFTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
cmVhdGVNZWRpYVN0cmF0ZWd5KCkKIAogY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5IGZpbmFsIDogcHVi
bGljIEJsb2JSZWdpc3RyeSB7CiBwcml2YXRlOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVS
TChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2Us
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0
ZXJGaWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9Cisg
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVy
bCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVS
TCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KICAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9i
UmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsgfQogICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
c3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBj
b250ZW50VHlwZSk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAzOWJiZWRhOTI0ZWVhY2U5MmE3OTUyMzczNzBhMmQxNjg2NGQ5OTRjLi5mM2Y0
ZjAyNzhiNzQxMmZiZTc2YzU4ZjVjYzIwM2I0NzY4NDFmNWMzIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDYt
MjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxp
bnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRl
ZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDpwYXJhbWV0ZXJzOl0pOgorICAgICAgICAoLVtGaWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3Ol0pOgorICAgICAgICAoLVtXSzJC
cm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmlldzpydW5PcGVuUGFuZWxX
aXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93
ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQ
b3B1cFRhcmdldCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6IERlbGV0ZWQuCisK
IDIwMjAtMDYtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgaW5pdGlhbGl6ZVRocmVhZGluZyB0byBpbml0aWFsaXplCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2oveGNzaGFyZWRkYXRh
L3hjc2NoZW1lcy9EdW1wUmVuZGVyVHJlZS54Y3NjaGVtZSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0R1bXBSZW5k
ZXJUcmVlLnhjc2NoZW1lCmluZGV4IGRjNjE3NjI4ZmU4MDI4YWJiNTM0Zjc2MWQ2YzhjNGNiZDZl
OTNkM2IuLjg3Mjg1ZTc3OWVhYzljZWI1MTk1ZDVkNzliZDI5YTc4ZTk3MTY1YmMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai94Y3NoYXJl
ZGRhdGEveGNzY2hlbWVzL0R1bXBSZW5kZXJUcmVlLnhjc2NoZW1lCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L0R1bXBSZW5kZXJUcmVlLnhjc2NoZW1lCkBAIC01MCw2ICs1MCwxNiBAQAogICAgICAgICAgICAg
UmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6RHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
Ij4KICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgogICAgICAgPC9CdWlsZGFibGVQcm9k
dWN0UnVubmFibGU+CisgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudHM+CisgICAgICAgICA8Q29t
bWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAiL1ZvbHVtZXMvRGF0YS9X
ZWJLaXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvcmVjb3Zlci1maWxl
LWlucHV0LWluLXVucG9zdGVkLWZvcm0uaHRtbCIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZ
RVMiPgorICAgICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAgICAgICAgPENvbW1hbmRM
aW5lQXJndW1lbnQKKyAgICAgICAgICAgIGFyZ3VtZW50ID0gIi0tbm8tdGltZW91dCIKKyAgICAg
ICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50
PgorICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAg
PFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpp
bmRleCA1NzBhYWE1NGRiOTcwZTQ3NDI0ODk0ZjdiZDg3MWE3M2YyYzdkZDBlLi42OTYwY2U2NzQx
Nzg1MWM4MTI3YzgyZGVkMmMzNzVlMDU0NDJlODY2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNzYsMzkgKzc2LDMwIEBA
IC0gKHZvaWQpcGVyZm9ybUFjdGlvbjooTlNUZXh0RmluZGVyQWN0aW9uKW9wCiBAaW50ZXJmYWNl
IEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVjdCB7CiBAcHJpdmF0ZQogICAgIE5T
T3BlblBhbmVsICpfb3BlblBhbmVsOwotICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2Vk
RmlsZUV4dGVuc2lvbnM7CisgICAgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICpfcGFyYW1ldGVyczsK
IH0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKIAot
LSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZp
bGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25z
IHsKKy0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIHBhcmFt
ZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgewogICAgIGlmICgoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5QYW5lbCA9IG9wZW5QYW5lbDsKLSAg
ICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29w
eV07CisgICAgICAgIF9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICB9CiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKLS0gKHZvaWQpcG9wdXBBY3Rpb246KGlkKXNlbmRlciB7Ci0gICAgLy8gTGFz
dCBpdGVtLgotICAgIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dID09IFtzZW5kZXIg
bnVtYmVyT2ZJdGVtc10gLSAxKQorLSAodm9pZClwb3B1cEFjdGlvbjooTlNCdXR0b24gKilzZW5k
ZXIgeworICAgIGlmIChzZW5kZXIuc3RhdGUgPT0gTlNDb250cm9sU3RhdGVWYWx1ZU9uKSB7CiAg
ICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlm
ICghW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSkgewotICAgICAgICAvLyBGaXJzdCBpdGVt
LgotICAgICAgICBpZiAoIVtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAg
ICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZp
bGVFeHRlbnNpb25zXTsKKyAgICAgICAgX3BhcmFtZXRlcnMuX2FsbG93SW1hZ2VUcmFuc2NvZGlu
ZyA9IE5POworICAgIH0gZWxzZSB7CisgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxl
VHlwZXM6X3BhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgICAgIF9wYXJh
bWV0ZXJzLl9hbGxvd0ltYWdlVHJhbnNjb2RpbmcgPSBZRVM7CiAgICAgfQogfQogCi0tICh2b2lk
KWRlYWxsb2MKLXsKLSAgICBbX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyByZWxlYXNlXTsKLSAgICBb
c3VwZXIgZGVhbGxvY107Ci19Ci0KIEBlbmQKIAogQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93
Q29udHJvbGxlciAoKSA8TlNUZXh0RmluZGVyQmFyQ29udGFpbmVyLCBXS05hdmlnYXRpb25EZWxl
Z2F0ZSwgV0tVSURlbGVnYXRlLCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlPgpAQCAtNjI5LDUwICs2
MjAsMjcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3Jp
cHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3QKICAgICB9XTsKIH0KIAotLSAobnVsbGFi
bGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdl
dDooRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKKy0gKG51bGxhYmxlIE5T
VmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQqKXBvcHVw
VGFyZ2V0CiB7Ci0gICAgTlNUZXh0RmllbGQqIGxhYmVsID0gW1tbTlNUZXh0RmllbGQgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwotICAgIFtsYWJlbCBzZXRT
dHJpbmdWYWx1ZTpAIkZvcm1hdDoiXTsKLSAgICBbbGFiZWwgc2V0RWRpdGFibGU6Tk9dOwotICAg
IFtsYWJlbCBzZXRTZWxlY3RhYmxlOk5PXTsKLSAgICBbbGFiZWwgc2V0Qm9yZGVyZWQ6Tk9dOwot
ICAgIFtsYWJlbCBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwotICAg
IFtsYWJlbCBzaXplVG9GaXRdOwotCi0gICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gW1tbTlNQ
b3BVcEJ1dHRvbiBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IHB1bGxzRG93bjpOT10g
YXV0b3JlbGVhc2VdOwotICAgIFtidXR0b24gYWRkSXRlbXNXaXRoVGl0bGVzOnRpdGxlc107Ci0g
ICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwotICAgIFtidXR0b24gc2V0QWN0aW9u
OkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKLSAgICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0gICAg
W2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsKLSAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rp
b246YnV0dG9uXTsKLSAgICAKKyAgICBOU0J1dHRvbiAqY2hlY2tib3ggPSBbTlNCdXR0b24gY2hl
Y2tib3hXaXRoVGl0bGU6QCJTaG93IGFsbCBGaWxlcyIgdGFyZ2V0OnBvcHVwVGFyZ2V0IGFjdGlv
bjpAc2VsZWN0b3IocG9wdXBBY3Rpb246KV07CisgICAgW2NoZWNrYm94IHNpemVUb0ZpdF07Cisg
ICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmNoZWNrYm94XTsKKyAgICAgICAgCiAgICAgTlNW
aWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3RdIGF1dG9yZWxlYXNlXTsKLSAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmxhYmVsXTsKLSAg
ICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmJ1dHRvbl07Ci0KLSAgICBjb25zdCBDR0Zsb2F0IG1h
cmdpbiA9IDIwOwotICAgIGNvbnN0IENHRmxvYXQgc3BhY2luZyA9IDI7Ci0gICAgY29uc3QgQ0dG
bG9hdCBtaW5CdXR0b25XaWR0aCA9IDIzMDsKKyAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmNo
ZWNrYm94XTsKIAotICAgIE5TUmVjdCBsYWJlbEZyYW1lID0gW2xhYmVsIGZyYW1lXTsKLSAgICBO
U1JlY3QgYnV0dG9uRnJhbWUgPSBbYnV0dG9uIGZyYW1lXTsKKyAgICBjb25zdCBDR0Zsb2F0IG1h
cmdpbiA9IDEwOworICAgIAorICAgIE5TUmVjdCBjaGVja2JveEZyYW1lID0gW2NoZWNrYm94IGZy
YW1lXTsKICAgICBOU1JlY3QgZmlsdGVyVmlld0ZyYW1lID0gW2ZpbHRlclZpZXcgZnJhbWVdOwog
Ci0gICAgLy8gU2V0IGEgbWluaW11bSB3aWR0aCBmb3IgJ2J1dHRvbicuCi0gICAgYnV0dG9uRnJh
bWUuc2l6ZSA9IE5TTWFrZVNpemUoTUFYKE5TV2lkdGgoYnV0dG9uRnJhbWUpLCBtaW5CdXR0b25X
aWR0aCksIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSk7Ci0gICAgCi0gICAgLy8gRmlsdGVyVmlldyB3
aWxsIGxheSBvdXQgJ2xhYmVsJyBhbmQgJ2J1dHRvbicgaG9yaXpvbnRhbGx5IGFuZCBoYXZlIGEg
dmVydGljYWwgbWFyZ2lucy4KLSAgICBmaWx0ZXJWaWV3RnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUo
TlNXaWR0aChsYWJlbEZyYW1lKSArIE5TV2lkdGgoYnV0dG9uRnJhbWUpICsgc3BhY2luZywgTUFY
KE5TSGVpZ2h0KGxhYmVsRnJhbWUpLCBOU0hlaWdodChidXR0b25GcmFtZSkpICsgbWFyZ2luICog
Mik7CisgICAgLy8gRmlsdGVyVmlldyB3aWxsIGxheSBvdXQgJ2NoZWNrYm94J2hvcml6b250YWxs
eSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMuCisgICAgZmlsdGVyVmlld0ZyYW1lLnNpemUg
PSBOU01ha2VTaXplKE5TV2lkdGgoY2hlY2tib3hGcmFtZSksIE5TSGVpZ2h0KGNoZWNrYm94RnJh
bWUpICsgbWFyZ2luICogMik7CiAgICAgW2ZpbHRlclZpZXcgc2V0RnJhbWU6ZmlsdGVyVmlld0Zy
YW1lXTsKIAotICAgIC8vICdsYWJlbCcgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxs
eS4KLSAgICBsYWJlbEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWluWChsYWJlbEZyYW1l
KSwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChsYWJlbEZyYW1lKSkgLyAy
KTsKLSAgICBbbGFiZWwgc2V0RnJhbWU6bGFiZWxGcmFtZV07Ci0gICAgCi0gICAgLy8gJ2J1dHRv
bicgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseSBhbmQgaXQgd2lsbCBjb21lIGFm
dGVyICdsYWJlbCcgaG9yaXpvbnRhbGx5LgotICAgIGJ1dHRvbkZyYW1lLm9yaWdpbiA9IE5TTWFr
ZVBvaW50KE5TTWF4WChsYWJlbEZyYW1lKSArIHNwYWNpbmcsIChOU0hlaWdodChmaWx0ZXJWaWV3
RnJhbWUpIC0gTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSAvIDIpOwotICAgIFtidXR0b24gc2V0RnJh
bWU6YnV0dG9uRnJhbWVdOworICAgIC8vICdjaGVja2JveEZyYW1lJyB3aWxsIGJlIGxhaWQgb3V0
IGNlbnRlciB2ZXJ0aWNhbGx5LgorICAgIGNoZWNrYm94RnJhbWUub3JpZ2luID0gTlNNYWtlUG9p
bnQoTlNNaW5YKGNoZWNrYm94RnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5T
SGVpZ2h0KGNoZWNrYm94RnJhbWUpKSAvIDIpOworICAgIFtjaGVja2JveCBzZXRGcmFtZTpjaGVj
a2JveEZyYW1lXTsKIAogICAgIHJldHVybiBmaWx0ZXJWaWV3OwogfQpAQCAtNjgwLDcgKzY0OCw3
IEBAIC0gKG51bGxhYmxlIE5TVmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRs
ZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNpCiAjaWYgX19oYXNfZmVhdHVyZShvYmpjX2dlbmVy
aWNzKQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdp
dGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRl
ZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TQXJyYXk8TlNVUkwgKj4gKiBVUkxzKSljb21wbGV0aW9uSGFuZGxlcgogI2Vsc2UKLS0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVy
czooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihX
S0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5ICpV
UkxzKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilw
YXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXkgKlVSTHMsIEJPT0wgdHJhbnNjb2RlSW1hZ2VzKSlj
b21wbGV0aW9uSGFuZGxlcgogI2VuZGlmCiB7CiAgICAgTlNPcGVuUGFuZWwgKm9wZW5QYW5lbCA9
IFtOU09wZW5QYW5lbCBvcGVuUGFuZWxdOwpAQCAtNjg4LDEwICs2NTYsOSBAQCAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdL
T3BlblBhbmVsUGFyYQogICAgIG9wZW5QYW5lbC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBh
cmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb247CiAKICAgICBbX2ZpbGVFeHRlbnNpb25z
UG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0gICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBb
W0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVu
UGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNdOworICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIHBhcmFtZXRl
cnM6IHBhcmFtZXRlcnNdOwogCi0gICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0
bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOwotICAgIE5TVmll
dyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVFeHRlbnNp
b25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKKyAgICBO
U1ZpZXcgKmZpbHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3Ol9maWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0XTsKICAgICBpZiAoZmlsdGVyVmlldykKICAgICAgICAgW29wZW5QYW5lbCBz
ZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403584</attachid>
            <date>2020-07-06 02:44:43 -0700</date>
            <delta_ts>2020-07-06 03:52:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200706024443.patch</filename>
            <type>text/plain</type>
            <size>26669</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTBjM2FiMjFiZTgwMWVhYTBjNmI3
NmMzOTlkODQxNzU2ZTYzMzEuLjI3NzExMzIzMGY5MjI2NDk1NjRlM2RmMWFlYmIwYzZiNTUwYTM4
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVt
Q29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisKIDIwMjAtMDctMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gQWRkIGFsbW9zdCBldmVyeXRoaW5nIGZyb20gRmVhdHVyZURlZmluZXMueGNj
b25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlM2ExN2IxZjc2
NGZjMzMxOGQxMWM0ZjZlZjZiMDJiYmI3ZDNlZi4uODU2YzQyOTE3MjAyOGZmYmM5MGM5NmZkYjY3
ZTI3MDVlYjA2ZGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3LTA2ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21h
Y09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQg
dHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9y
bWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMz
NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVs
Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKwogMjAyMC0w
Ny0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBN
b3ZlIGFsbW9zdCBhbGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyB0byBQ
bGF0Zm9ybUVuYWJsZUNvY29hLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWRjZDVlYWNiOTMzMmVlNDAzOTM4NWNm
MDQ0ODQwOTlhZGNmODMwZC4uMDBiNjFiMjA0MWRlYWZmNmI0MTBhYTBlY2VhYjFhOGQ3MGNiNGYz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNy0wNiAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFNlbGVjdGlu
ZyBhIG5vbi1hY2NlcHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4gPGlucHV0IHR5cGU9ImZpbGUiPiBl
bGVtZW50IHNob3VsZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2VwdGVkIGZvcm1hdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFn
ZXMpOgorICAgICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHA6CisgICAgICAgIChXS09w
ZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxsb3dlZE1JTUVUeXBlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbCk6CisKIDIwMjAtMDctMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYV0gTW92ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVh
dHVyZURlZmluZXMueGNjb25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKaW5kZXggNjBiMzJlNDZmYzQyOTA4MjNhNjI5YmRhM2VkMjcyYTgzYjZhYjRhNi4uYmZlODQx
Mjk2ZDNjNmQ1MmE4YThhZjE1NWU2ZThlZThmOTEyMDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAt
MTQ1LDcgKzE0NSw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZh
bGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmls
ZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZp
eCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBj
b25zdCBTdHJpbmcmIHN1ZmZpeCA9IHsgfSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1G
aWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxl
QWNjZXNzUGVybWlzc2lvbiA9IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElm
RmlsZUV4aXN0cyA9IGZhbHNlKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUmKTsKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJv
bSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBhY2VkZjVmZGQxYjJl
NzY4MjRmZmE4OWQ0ZGNkZjQwYWMxYjFiODdkLi5kZmQ4MjI1NDBlYTYyYzU3ZDUwM2E1Mzc2ZGFj
ZjdkYWYwYTM0MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVt
Q29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBA
IC05Myw3ICs5Myw3IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJuIE5T
SG9tZURpcmVjdG9yeSgpOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CiAgICAg
cGxhdGZvcm1GaWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIApAQCAtMTEz
LDkgKzExMywxMyBAQCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSAogICAgIENTdHJpbmcgcHJlZml4
VXRmOCA9IHByZWZpeC51dGY4KCk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZp
eFV0ZjguZGF0YSgpLCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0
aC5hcHBlbmQoIlhYWFhYWCIsIDYpOworICAgIAorICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1l
IHN1ZmZpeC4KKyAgICBDU3RyaW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRl
bXBvcmFyeUZpbGVQYXRoLmFwcGVuZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5n
dGgoKSk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZv
cm1GaWxlSGFuZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBs
YXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3Vm
Zml4VXRmOC5sZW5ndGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCAyMTllZTE5NTk3MTM0MjFl
Y2QwY2QyOWUyMmQ1YjE3YTU1NWYxODAzLi4yMzM3YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5ODcxNThm
ZjIwMjM1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3Ry
aW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVG
b3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyBtaW1lVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+IGNyZWF0ZU1J
TUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jZy9DR1V0aWxpdGllcy5jcHAKaW5kZXggYWYwOGY2ZDVlZmI0YWFhODZiMTA0YTQ5Yzk4NTVm
MjA3MjViNjgwOC4uZGJjMWUxMmMyZmY5NGQ5MDdmYjJmZGY1Y2FhYmU3YTk1MWJlMzE0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDR1V0aWxpdGllcy5oIgogCisjaW5jbHVk
ZSA8SW1hZ2VJTy9JbWFnZUlPLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHZvaWQgcGFpbnRJbWFnZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dJbWFnZVJl
ZiBpbWFnZSwgQ0dGbG9hdCBzY2FsZUZhY3RvciwgQ0dQb2ludCBkZXN0aW5hdGlvbiwgQ0dSZWN0
IHNvdXJjZSkKQEAgLTQ2LDQgKzUyLDc4IEBAIHZvaWQgcGFpbnRJbWFnZShDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dJbWFnZVJlZiBpbWFnZSwgQ0dGbG9hdCBzY2FsZUZhY3RvciwgQ0dQCiAgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KIAorc3RhdGljIFN0cmluZyB0cmFu
c2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7
CisgICAgQVNTRVJUKG1pbWVUeXBlLnN0YXJ0c1dpdGgoImltYWdlLyJfcykpOworCisgICAgLy8g
VGhpcyBmdW5jdGlvbiB0cmFuc2NvZGVzIGZpbGVzIG9ubHkuCisgICAgaWYgKEZpbGVTeXN0ZW06
OmZpbGVJc0RpcmVjdG9yeShwYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpZZXMpKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAgLy8gQ3JlYXRl
IHRoZSBpbWFnZSBzb3VyY2UuIEVuc3VyZSB0aGUgJ3BhdGgnIGlzIGFjdHVhbGx5IGFuIGltYWdl
IGZpbGUuCisgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgYXV0byBzb3VyY2UgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwgbnVsbHB0cikp
OworICAgIGlmICghc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAg
Ly8gRW5zdXJlIHRoZSBmb3JtYXQgb2YgdGhlIGltYWdlIHNvdXJjZSBpcyBkaWZmZXJlbnQgZnJv
bSAnbWltZVR5cGUnLgorICAgIGF1dG8gc291cmNlVVRJID0gU3RyaW5nKENHSW1hZ2VTb3VyY2VH
ZXRUeXBlKHNvdXJjZS5nZXQoKSkpOworICAgIGF1dG8gcmVwbGFjZW1lbnRVVEkgPSBXZWJDb3Jl
OjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpOworICAgIGlmIChzb3VyY2VVVEkgPT0gcmVwbGFj
ZW1lbnRVVEkpCisgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisKKyAgICAvLyBDb21wdXRl
IHRoZSBleHRlbnNpb24gYW5kIHRoZSBzdWZmaXggb2YgdGhlIHRlbXBvcmFyeSBmaWxlLgorICAg
IGF1dG8gZXh0ZW5zaW9uID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAgIGF1dG8gc3VmZml4ID0gbWFrZVN0cmlu
ZygiLiJfcywgZXh0ZW5zaW9uKTsKKworICAgIC8vIENyZWF0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUu
CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHJlcGxhY2VtZW50RmlsZUhhbmRs
ZTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoInRlbXBJbWFnZSJfcywgcmVwbGFjZW1lbnRGaWxlSGFuZGxlLCBzdWZmaXgpOworICAg
IGlmIChyZXBsYWNlbWVudEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJS
ZXBsYWNlbWVudCBpbWFnZSBjb3VsZCBub3QgYmUgY3JlYXRlZC4iKTsKKyAgICAgICAgcmV0dXJu
IG51bGxTdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgdGhlIGRhdGEgY29uc3VtZXIu
CisgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyBbXSh2b2lkICppbmZv
LCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBjb3VudCkgLT4gc2l6ZV90IHsKKyAgICAgICAg
YXV0byBwbGF0Zm9ybUZpbGVIYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlKj4oaW5mbyk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShwbGF0Zm9ybUZpbGVIYW5kbGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIp
LCBjb3VudCk7CisgICAgfSwgbnVsbHB0ciB9OworCisgICAgLy8gQ3JlYXRlIHRoZSBpbWFnZSBy
ZXBsYWNlbWVudC4KKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNy
ZWF0ZSgmcmVwbGFjZW1lbnRGaWxlSGFuZGxlLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byByZXBs
YWNlbWVudCA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGFDb25zdW1l
cihjb25zdW1lci5nZXQoKSwgcmVwbGFjZW1lbnRVVEkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
MSwgbnVsbHB0cikpOworCisgICAgLy8gV3JpdGUgdGhlIHNvdXJjZSBpbWFnZSB0byB0aGUgcmVw
bGFjZW1lbnQgaW1hZ2UuCisgICAgc2l6ZV90IGluZGV4ID0gQ0dJbWFnZVNvdXJjZUdldFByaW1h
cnlJbWFnZUluZGV4KHNvdXJjZS5nZXQoKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1h
Z2VGcm9tU291cmNlKHJlcGxhY2VtZW50LmdldCgpLCBzb3VyY2UuZ2V0KCksIGluZGV4LCBudWxs
cHRyKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShyZXBsYWNlbWVudC5nZXQoKSk7
CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcGxhY2VtZW50RmlsZUhhbmRsZSk7CisKKyAg
ICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoOworfQorCitWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVJ
bWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWxsb3dlZE1JTUVUeXBlcykKK3sKKyAgICBTdHJpbmcgbWltZVR5cGVGb3JFbmNvZGluZyA9IFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGlu
ZyhhbGxvd2VkTUlNRVR5cGVzLCB7IH0pOworICAgIGlmIChtaW1lVHlwZUZvckVuY29kaW5nLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKG1pbWVUeXBlRm9yRW5jb2Rp
bmcuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8U3RyaW5nPiBy
ZXBsYWNlbWVudFBhdGhzOworICAgIHJlcGxhY2VtZW50UGF0aHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShwYXRocy5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBwYXRoIDogcGF0aHMpIHsKKyAg
ICAgICAgYXV0byBtaW1lVHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBl
Rm9yUGF0aChwYXRoKTsKKyAgICAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuY29udGFpbnMobWlt
ZVR5cGUpKQorICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy51bmNoZWNrZWRBcHBlbmQobnVs
bFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy51
bmNoZWNrZWRBcHBlbmQodHJhbnNjb2RlSW1hZ2UocGF0aCwgbWltZVR5cGVGb3JFbmNvZGluZykp
OworICAgIH0KKworICAgIHJldHVybiByZXBsYWNlbWVudFBhdGhzOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaAppbmRleCA4
NTFkMTgxYThmYzc1NzNjOTMwY2ZjNjAzYjBmNDE0Mjg3NDdiMjJkLi5hYTNmNWNkZTMxZjE3N2Qy
OWY5YzI2YTQ3ZDAwYmU3MWM0ZDZmOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2NnL0NHVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0
aWxpdGllcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDEzICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgQ0dVdGlsaXRpZXNfaAotI2RlZmluZSBDR1V0aWxpdGllc19o
CisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgcGFpbnRJbWFnZShD
R0NvbnRleHRSZWYsIENHSW1hZ2VSZWYsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVz
dGluYXRpb24sIENHUmVjdCBzb3VyY2UpOworVmVjdG9yPFN0cmluZz4gdHJhbnNjb2RlSW1hZ2Vz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93
ZWRNSU1FVHlwZXMpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIENHVXRp
bGl0aWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1JlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCmluZGV4IGFmYWY2ZTQ4YmMzNmE5NTc3MmMxM2U1
N2MyYjJhODJkMThkZDM0NzQuLmZhMDYzMjA2MThhNDZlOTFkODI3ZDUwNjcwYzIwNWMxNzE3NmIz
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcApAQCAtNTgsNiArNTgsMTEgQEAgV0tBcnJheVJlZiBX
S09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKICAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChwYXJhbWV0ZXJzUmVmKS0+YWNj
ZXB0RmlsZUV4dGVuc2lvbnMoKS5sZWFrUmVmKCkpOwogfQogCitXS0FycmF5UmVmIFdLT3BlblBh
bmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1Jl
ZiBwYXJhbWV0ZXJzUmVmKQoreworICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhcmFtZXRlcnNS
ZWYpLT5hbGxvd2VkTUlNRVR5cGVzKCkubGVha1JlZigpKTsKK30KKwogLy8gRGVwcmVjYXRlZC4K
IFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlDYXB0dXJlKFdLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKaW5kZXggMDU5ZjdjZmMwNjFlZmM0YmVl
ZmY1OTEzMmUwZTZmNDlkOTBmZmM2OC4uN2QxMzI5ODRiYTc1Njc2ZjU2NGNhY2YwNDY5ZGQxOWU2
ODM0ZjVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKQEAgLTQ1LDYgKzQ1LDggQEAgV0tfRVhQT1JUIGJv
b2wgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlBY2NlcHRlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7
CiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRG
aWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CiAKK1dL
X0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5
cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKKwogLyogREVQUkVDQVRF
RCAtIFBsZWFzZSB1c2UgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0Q2FwdHVyZUVuYWJsZWQoKSBp
bnN0ZWFkLiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlDYXB0dXJlKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcAppbmRleCAyYjM5NGZjOGJkYTc0MjE3YzE3MzUxMjc2MzY1NjU5OGE0Yjg0
MmI5Li5iNjExODgxNzE4ODUyYjUwMzU5ODRmMzUwNzAyZjE3OTFhMmVlZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcApAQCAtNjMsOSArNjMsOSBAQCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJDaG9vc2VNZWRpYUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdAog
fQogI2VuZGlmCiAKLXZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVS
THNSZWYpCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVm
LCBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXNSZWYpCiB7Ci0gICAgdG9JbXBsKGxpc3RlbmVy
UmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNS
ZWYpKSk7CisgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJv
bUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNSZWYpKSwgdG9JbXBsKGFsbG93ZWRNaW1lVHlwZXNS
ZWYpLT50b1N0cmluZ1ZlY3RvcigpKTsKIH0KIAogdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyQ2FuY2VsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmgKaW5kZXggNjk5OTc2ZmFhMmFkZGU0NzhjZWY2YzRlMWIwZmVmODQ1MDk4YWVh
OC4uYWFiYmUxOWQ3MjJlZjY0MTQyNmNjMTU5MWEzNTZiYTA3MzQ0ZDdhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaApAQCAtMzUsNyArMzUsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyR2V0VHlwZUlEKHZvaWQpOwogCiBXS19FWFBPUlQg
dm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlTWVkaWFGaWxlcyhXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVmLCBX
S1N0cmluZ1JlZiBkaXNwbGF5U3RyaW5nLCBXS0RhdGFSZWYgaWNvbkltYWdlRGF0YVJlZik7Ci1X
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcyk7CitX
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcywgV0tB
cnJheVJlZiBhbGxvd2VkTWltZVR5cGVzUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
cik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMWQxMmE1ODBlNWEwNDk1ZWY2YWVhNWFkMzI3N2I4NzViZTdiZTgxOC4u
NjgwZTJmM2VjZDE1YTQyN2VkMTdkMjJiMjY1ZjgwOWZmNGViOGFjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMDEsNiArMjAxLDcgQEAKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEuaCIKQEAgLTY2OTAsMTcgKzY2OTEsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QK
IH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFu
ZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVU
eXBlcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGF1dG8gcmVwbGFjZW1lbnRVUkxzID0gdHJhbnNjb2RlSW1hZ2VzKGZpbGVVUkxzLCBh
bGxvd2VkTUlNRVR5cGVzKTsKKwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAg
YXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJl
YWRPbmx5SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsIl9zLCBmaWxlVVJMcyk7CisgICAgVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4dGVuc2lv
bkZpbGVzOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZmlsZVVSTHMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBzYW5kYm94RXh0ZW5zaW9uRmlsZXMuYXBwZW5kKGkgPCBy
ZXBsYWNlbWVudFVSTHMuc2l6ZSgpICYmICFyZXBsYWNlbWVudFVSTHNbaV0uaXNOdWxsKCkgPyBy
ZXBsYWNlbWVudFVSTHNbaV0gOiBmaWxlVVJMc1tpXSk7CisgICAgYXV0byBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZp
bGVzKCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBzYW5kYm94
RXh0ZW5zaW9uRmlsZXMpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRi
b3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykp
KTsKICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoZmlsZVVSTHMsIHsgfSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzLCByZXBsYWNlbWVudFVSTHMpKTsK
IAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwOWI1ZWMwYWQ1MTQ1ODNiOGYzNTNhOGFmMGE4
YjY4NjcyYTBlMDhhLi5jZTY0N2FjNGJhM2QxZDAwYzc1ZjgwZDhjNjFjNTFkYjkyMmRiYTYwIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBub24tYWNjZXB0ZWQgaW1h
Z2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVudCBzaG91bGQgY29udmVy
dCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0
NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6cnVuT3Bl
blBhbmVsKToKKwogMjAyMC0wNy0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvY29hXSBNb3ZlIGFsbW9zdCBhbGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyB0byBQbGF0Zm9ybUVuYWJsZUNvY29hLmgKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMmJkNzkxODYyNmMwOGY0M2M3ZjM0ZmJjNmZj
Nzk5MzA1OWEzMmFkOS4uOGY4MjUwOTk3MmVhOGExMmM0OWVmMDRlYmMzMDU5MzY5ZWM3NGNhMCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIyMywxMiAr
MjIzLDE0IEBAIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgfQogI2VuZGlmCiAKKyAgICBX
S0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXMgPSBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxs
b3dlZE1JTUVUeXBlcyhwYXJhbWV0ZXJzKTsKKwogICAgIGlmIChXS09wZW5QYW5lbFBhcmFtZXRl
cnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpKSB7Ci0gICAgICAgIFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwgZmlsZVVSTHMp
OworICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlz
dGVuZXJSZWYsIGZpbGVVUkxzLCBhbGxvd2VkTWltZVR5cGVzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRM
aXN0ZW5lclJlZiwgYWRvcHRXSyhXS0FycmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEpKS5nZXQoKSk7
CisgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVy
UmVmLCBhZG9wdFdLKFdLQXJyYXlDcmVhdGUoJmZpcnN0SXRlbSwgMSkpLmdldCgpLCBhbGxvd2Vk
TWltZVR5cGVzKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoV0tQYWdlUmVm
IHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTdkMzBlM2Q3NjU3OGYxOWJj
MjZjYTU4OGEyYjZhNjFiMDgyNTI1OC4uNjc4MDBmOWVjNTM1NGIyMDcyYTMxNTY1OGY1MjBmN2Vm
ZTM2MThmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0
aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+
IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5v
LXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10
cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2lt
YWdlcy9ncmVlbi00MDB4NDAwLmhlaWM6IEFkZGVkLgorCiAyMDIwLTA3LTAzICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVJlY29yZGVyIHNob3VsZCBz
dXBwb3J0IHBlZXIgY29ubmVjdGlvbiByZW1vdGUgdmlkZW8gdHJhY2tzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2Rl
LW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2Vu
dHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40M2VmY2U5MWYxODMwMTY0NzkwZTUwMTZiYThhNzZiNGFkMmQ2Y2EwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdl
LW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitP
UEVOIEZJTEUgUEFORUwKK1Rlc3RzIGEgSEVJQyBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBw
aWNrZXIgd2hpY2ggYWNjZXB0cyBIRUlDLCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYW55IHN1
cHBvcnRlZCBNSU1FIHR5cGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGZpbGVMaXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvaGVpYyIKK1BB
U1MgZmlsZS5zaXplIGlzIG5vbi16ZXJvLgorSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZCBpbiBX
ZWJLaXQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KyAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
aW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlYzE0ZTg4NmFhYzQwYTY2ODVmY2NjNzI0OWY4MmUzMTFhYjczZmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1h
Z2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIuaGVpYyIgb25jaGFuZ2U9ImNoYW5nZWQoZXZl
bnQpIj48L2lucHV0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBh
IEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgSEVJ
Qywgd2lsbCBub3QgYmUgY29udmVydGVkIHRvIGFueSBzdXBwb3J0ZWQgTUlNRSB0eXBlLiIpOwor
ICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhb
J3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWljJ10pOworCisgICAgICAgICAgICBp
bnB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsK
KyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoaW5wdXRFbGVtZW50Lm9mZnNldExlZnQg
KyBpbnB1dEVsZW1lbnQub2Zmc2V0V2lkdGggLyAyLAorICAgICAgICAgICAgICAgIGlucHV0RWxl
bWVudC5vZmZzZXRUb3AgKyBpbnB1dEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICBmaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlczsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJmaWxlTGlzdC5sZW5ndGgiLCAiMSIpOworCisgICAgICAgICAgICBmaWxlID0gZmlsZUxpc3Rb
MF07CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUudHlwZSIsICJpbWFn
ZS9oZWljIik7CisgICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZpbGUuc2l6ZSIpOworCisg
ICAgICAgICAgICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgICAgICAgICAgdmFyIHJl
YWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkg
PT4geworICAgICAgICAgICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBkZWJ1ZygiSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZCBpbiBXZWJLaXQuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgaW1nLnNyYyA9IHJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CisgICAgICAgIH0KKyAgICAg
ICAgcnVuVGVzdCgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWEzMjFlNDE4ZDY2OGJjZDQ4NzdmMDljNjU4MTJmMmU4ZjhhZDhjNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10
cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorT1BFTiBG
SUxFIFBBTkVMCitUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2Vy
IHdoaWNoIGFjY2VwdHMgUE5HLCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIFBORyBpbWFnZS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZmlsZUxpc3QubGVuZ3RoIGlzIDEK
K1BBU1MgZmlsZS50eXBlIGlzICJpbWFnZS9wbmciCitQQVNTIGZpbGUuc2l6ZSBpcyBub24temVy
by4KK1BBU1MgaW1nLndpZHRoIGlzIDQwMAorUEFTUyBpbWcuaGVpZ2h0IGlzIDQwMAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1h
cGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzVjMTc0Y2Vj
MWJhZjA2ZDdhM2JkMDA3ZWRjMjVkZTg0YmI4ODI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBh
bmVsLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGFj
Y2VwdD0iLnBuZyIgb25jaGFuZ2U9ImNoYW5nZWQoZXZlbnQpIj48L2lucHV0PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEg
dGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgUE5HLCB3aWxsIGJlIGNvbnZlcnRlZCB0byBh
IFBORyBpbWFnZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
T3BlblBhbmVsRmlsZXMoWydyZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVpYyddKTsK
KworICAgICAgICAgICAgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2lucHV0JylbMF07CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGlucHV0RWxl
bWVudC5vZmZzZXRMZWZ0ICsgaW5wdXRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAg
ICAgICAgICBpbnB1dEVsZW1lbnQub2Zmc2V0VG9wICsgaW5wdXRFbGVtZW50Lm9mZnNldEhlaWdo
dCAvIDIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hhbmdlZChldmVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7CisgICAg
ICAgICAgICBzaG91bGRCZSgiZmlsZUxpc3QubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAg
ZmlsZSA9IGZpbGVMaXN0WzBdOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJm
aWxlLnR5cGUiLCAiaW1hZ2UvcG5nIik7CisgICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZp
bGUuc2l6ZSIpOworCisgICAgICAgICAgICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
bWciKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAg
ICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFk
ZXIub25sb2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcud2lkdGgiLCAiNDAwIik7CisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcuaGVpZ2h0IiwgIjQwMCIpOworICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVzdWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOworICAgICAgICB9CisgICAgICAgIHJ1blRl
c3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzL2dyZWVu
LTQwMHg0MDAuaGVpYyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9y
ZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVpYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2Y4NTlkOGRh
MWRmMTE2MjU0ZGE2MzkzNTU5ZTU5ZTk2OWNhN2I2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3
MTAKemNtWWpPT0tUSFI2aDNFVzhkRGxsUSEzVCFCNGBqUGgxISpfWSY1QWwjZlp7SHdYMX1nM0F2
YXQqWGdMTzIofkVKCnpnJHJLYDdoU3skREVPY1lIekc9UEZBQ34hc1AwXzI9KXd9ZUduMkYpPUh2
VSQ+KXlITjVZaEgoSUh6bCNhdEoydQp6dExpOGJ6d29gVkF+RCRSbnArUUlOdS1xJWNKdjE0VHk/
JCpaPGlaKiFlUmBoRShZfiVUY0A9T2Vkc3VJUHtrY1kKejF8cit3Y3B7eyRjRkRtWFl6QTNNIyVF
UEBAU3hoZkE/PiZgNHc0KypeO3pqYXF3VGZRUDZJckxhfCtDNSRZcD9OCno+Xko+Z1V0MSZVSEpq
KWQkYTlLWUVoI1hpIWp4fXB4Y2Q9dWR5YTZfYENwPSR4fEpBVGRZaFpERkJ+dzgjOGN4agp6Pk19
KU1zcX4lYnxDUHopPzdyZ05wKi0mQ1MyTmxKIX12fU4+UStHYDhyeFFfV3xnR09XSEpkRlB9PVh6
OFNrKGIKempPIU17IT5abmhSI0tEISR0VkcxM2Z6YlcyOUxrTnlDRTZodCtaRmRjbXlUbFMoUXBP
MVRSU3o0Xm8lWjBmJV8hCnpoQ2EmczxrNSZAektlP0ZVYTJfPWgjZCNTa0QyZT9xJUg3djBBK3Y8
UFpuJCZUbk1+TT0oKlg7RHkoSVgqYC1zRwp6Smh6dSRFcSVFMXtYemE/X1MkO3l5VmxxRFU7YSM4
b3RgfVg+Rm1xcSRuNm9iJkxuPTBuJn5JMiZuRChtRTlxc2QKaSUlbVVsX2k0Y0BONllBV3hFTHto
dkZsQW9XJWpwfkcySXFEJjtKMV9SKE5VdgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403585</attachid>
            <date>2020-07-06 03:52:06 -0700</date>
            <delta_ts>2020-07-06 04:09:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200706035205.patch</filename>
            <type>text/plain</type>
            <size>30648</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTBjM2FiMjFiZTgwMWVhYTBjNmI3
NmMzOTlkODQxNzU2ZTYzMzEuLjYzNDRlOGEwNTdkMjdlZGE1YWE2ZWU2OTY3ZWViYTU2N2E1NTA4
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVt
Q29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3Bl
blRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAt
MDctMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
QWRkIGFsbW9zdCBldmVyeXRoaW5nIGZyb20gRmVhdHVyZURlZmluZXMueGNjb25maWcgdG8gUGxh
dGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlM2ExN2IxZjc2NGZjMzMxOGQxMWM0
ZjZlZjZiMDJiYmI3ZDNlZi4uODU2YzQyOTE3MjAyOGZmYmM5MGM5NmZkYjY3ZTI3MDVlYjA2ZGRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0
aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+
IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1h
Z2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNy0wNSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNb3ZlIGFsbW9zdCBh
bGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyB0byBQbGF0Zm9ybUVuYWJs
ZUNvY29hLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZWRjZDVlYWNiOTMzMmVlNDAzOTM4NWNmMDQ0ODQwOTlhZGNm
ODMwZC4uMDBiNjFiMjA0MWRlYWZmNmI0MTBhYTBlY2VhYjFhOGQ3MGNiNGYzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNy0wNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFNlbGVjdGluZyBhIG5vbi1hY2Nl
cHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4gPGlucHV0IHR5cGU9ImZpbGUiPiBlbGVtZW50IHNob3Vs
ZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2VwdGVkIGZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dHJh
bnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZXMpOgorICAgICAg
ICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHA6CisgICAgICAgIChXS09wZW5QYW5lbFBhcmFt
ZXRlcnNDb3B5QWxsb3dlZE1JTUVUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJDaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bCk6CisKIDIwMjAtMDctMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gTW92ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMu
eGNjb25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggNjBi
MzJlNDZmYzQyOTA4MjNhNjI5YmRhM2VkMjcyYTgzYjZhYjRhNi4uYmZlODQxMjk2ZDNjNmQ1MmE4
YThhZjE1NWU2ZThlZThmOTEyMDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTQ1LDcgKzE0NSw3
IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxk
IGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcm
IHN1ZmZpeCA9IHsgfSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9w
ZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxlQWNjZXNzUGVybWlz
c2lvbiA9IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9
IGZhbHNlKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBhY2VkZjVmZGQxYjJlNzY4MjRmZmE4OWQ0
ZGNkZjQwYWMxYjFiODdkLi5kZmQ4MjI1NDBlYTYyYzU3ZDUwM2E1Mzc2ZGFjZjdkYWYwYTM0MTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC05Myw3ICs5Myw3
IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJuIE5TSG9tZURpcmVjdG9y
eSgpOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRm
b3JtRmlsZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CiAgICAgcGxhdGZvcm1GaWxl
SGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIApAQCAtMTEzLDkgKzExMywxMyBA
QCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSAogICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZp
eC51dGY4KCk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgp
LCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhY
WFhYWCIsIDYpOworICAgIAorICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4KKyAg
ICBDU3RyaW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZpbGVQ
YXRoLmFwcGVuZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAgICAg
dGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFuZGxl
ID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBsYXRmb3JtRmlsZUhh
bmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VXRmOC5sZW5n
dGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1Y2Ew
ZjVkZi4uZmEwYjUzMWZlMTBmZjc0ZWJhYjg2NWYzY2EwOTE1ZGExZDk1NzUxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBWZWN0b3I8
U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFt
ZS5nZXQoKSwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKaW5kZXggYzlmNTAxNDM2YWJjYzgwOTRlODQxNDgwZDIxZmUzNmE0NzFlODFmZi4uYjNjMDQw
MWI1MDZmZGNlMzIzMmVkNmZlZmJiYmYwZTUyZDEwMDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBnZXRWb2x1bWVG
cmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwogICAgIGNvbnN0IGNo
YXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKaW5kZXggNjU5ZGZkNTI3MjdkYzllZjY5OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4uYjYz
MTQ5NTczYTQ4NDFmZTYwMDFlZWZhZmRkMDA5MmNmYzc0MWFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJh
dGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rp
b24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
LCBjb25zdCBTdHJpbmcmKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggMjE5ZWUx
OTU5NzEzNDIxZWNkMGNkMjllMjJkNWIxN2E1NTVmMTgwMy4uMjMzN2IwZjNmODY4MGU3YzllZjQx
YmNkOTg3MTU4ZmYyMDIzNTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgbWVkaWFNSU1FVHlwZUZv
ckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CiAKLSAgICBzdGF0aWMgU3RyaW5n
IG1pbWVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRh
PiBjcmVhdGVNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCmluZGV4IGFmMDhmNmQ1ZWZiNGFhYTg2YjEw
NGE0OWM5ODU1ZjIwNzI1YjY4MDguLmRiYzFlMTJjMmZmOTRkOTA3ZmIyZmRmNWNhYWJlN2E5NTFi
ZTMxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYg
KzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIK
IAorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRp
b24sIENHUmVjdCBzb3VyY2UpCkBAIC00Niw0ICs1Miw3OCBAQCB2b2lkIHBhaW50SW1hZ2UoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3Is
IENHUAogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBT
dHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQoreworICAgIEFTU0VSVChtaW1lVHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iX3MpKTsK
KworICAgIC8vIFRoaXMgZnVuY3Rpb24gdHJhbnNjb2RlcyBmaWxlcyBvbmx5LgorICAgIGlmIChG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkocGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rczo6WWVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKKworICAg
IC8vIENyZWF0ZSB0aGUgaW1hZ2Ugc291cmNlLiBFbnN1cmUgdGhlICdwYXRoJyBpcyBhY3R1YWxs
eSBhbiBpbWFnZSBmaWxlLgorICAgIGF1dG8gc291cmNlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIGF1dG8gc291
cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChzb3VyY2VVUkwuZ2V0KCks
IG51bGxwdHIpKTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmco
KTsKKworICAgIC8vIEVuc3VyZSB0aGUgZm9ybWF0IG9mIHRoZSBpbWFnZSBzb3VyY2UgaXMgZGlm
ZmVyZW50IGZyb20gJ21pbWVUeXBlJy4KKyAgICBhdXRvIHNvdXJjZVVUSSA9IFN0cmluZyhDR0lt
YWdlU291cmNlR2V0VHlwZShzb3VyY2UuZ2V0KCkpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50VVRJ
ID0gV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBpZiAoc291cmNlVVRJ
ID09IHJlcGxhY2VtZW50VVRJKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAg
Ly8gQ29tcHV0ZSB0aGUgZXh0ZW5zaW9uIGFuZCB0aGUgc3VmZml4IG9mIHRoZSB0ZW1wb3Jhcnkg
ZmlsZS4KKyAgICBhdXRvIGV4dGVuc2lvbiA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHN1ZmZpeCA9
IG1ha2VTdHJpbmcoIi4iX3MsIGV4dGVuc2lvbik7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRlbXBv
cmFyeSBmaWxlLgorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXBsYWNlbWVu
dEZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wSW1hZ2UiX3MsIHJlcGxhY2VtZW50RmlsZUhhbmRsZSwgc3Vm
Zml4KTsKKyAgICBpZiAocmVwbGFjZW1lbnRGaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhf
TUVTU0FHRSgiUmVwbGFjZW1lbnQgaW1hZ2UgY291bGQgbm90IGJlIGNyZWF0ZWQuIik7CisgICAg
ICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIHRoZSBkYXRh
IGNvbnN1bWVyLgorICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgW10o
dm9pZCAqaW5mbywgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7
CisgICAgICAgIGF1dG8gcGxhdGZvcm1GaWxlSGFuZGxlID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAgICAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUocGxhdGZvcm1GaWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYnVmZmVyKSwgY291bnQpOworICAgIH0sIG51bGxwdHIgfTsKKworICAgIC8vIENyZWF0ZSB0
aGUgaW1hZ2UgcmVwbGFjZW1lbnQuCisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRh
Q29uc3VtZXJDcmVhdGUoJnJlcGxhY2VtZW50RmlsZUhhbmRsZSwgJmNhbGxiYWNrcykpOworICAg
IGF1dG8gcmVwbGFjZW1lbnQgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhE
YXRhQ29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHJlcGxhY2VtZW50VVRJLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDEsIG51bGxwdHIpKTsKKworICAgIC8vIFdyaXRlIHRoZSBzb3VyY2UgaW1hZ2Ug
dG8gdGhlIHJlcGxhY2VtZW50IGltYWdlLgorICAgIHNpemVfdCBpbmRleCA9IENHSW1hZ2VTb3Vy
Y2VHZXRQcmltYXJ5SW1hZ2VJbmRleChzb3VyY2UuZ2V0KCkpOworICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkFkZEltYWdlRnJvbVNvdXJjZShyZXBsYWNlbWVudC5nZXQoKSwgc291cmNlLmdldCgpLCBp
bmRleCwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUocmVwbGFjZW1l
bnQuZ2V0KCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXBsYWNlbWVudEZpbGVIYW5k
bGUpOworCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aDsKK30KKworVmVjdG9yPFN0cmluZz4g
dHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCit7CisgICAgU3RyaW5nIG1pbWVUeXBlRm9yRW5j
b2RpbmcgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcoYWxsb3dlZE1JTUVUeXBlcywgeyB9KTsKKyAgICBpZiAobWltZVR5cGVGb3JF
bmNvZGluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChtaW1lVHlw
ZUZvckVuY29kaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9y
PFN0cmluZz4gcmVwbGFjZW1lbnRQYXRoczsKKyAgICByZXBsYWNlbWVudFBhdGhzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocGF0aHMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgcGF0aCA6IHBh
dGhzKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjptaW1lVHlwZUZvclBhdGgocGF0aCk7CisgICAgICAgIGlmIChhbGxvd2VkTUlNRVR5cGVzLmNv
bnRhaW5zKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIHJlcGxhY2VtZW50UGF0aHMudW5jaGVja2Vk
QXBwZW5kKG51bGxTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGxhY2Vt
ZW50UGF0aHMudW5jaGVja2VkQXBwZW5kKHRyYW5zY29kZUltYWdlKHBhdGgsIG1pbWVUeXBlRm9y
RW5jb2RpbmcpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoczsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0NHVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVz
LmgKaW5kZXggODUxZDE4MWE4ZmM3NTczYzkzMGNmYzYwM2IwZjQxNDI4NzQ3YjIyZC4uYWEzZjVj
ZGUzMWYxNzdkMjlmOWMyNmE0N2QwMGJlNzFjNGQ2ZjhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY2cvQ0dVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxMyArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENHVXRpbGl0aWVzX2gKLSNkZWZpbmUgQ0dV
dGlsaXRpZXNfaAorI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIHBh
aW50SW1hZ2UoQ0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBD
R1BvaW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKTsKK1ZlY3RvcjxTdHJpbmc+IHRyYW5z
Y29kZUltYWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBDR1V0aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcAppbmRleCBhZmFmNmU0OGJjMzZh
OTU3NzJjMTNlNTdjMmIyYTgyZDE4ZGQzNDc0Li5mYTA2MzIwNjE4YTQ2ZTkxZDgyN2Q1MDY3MGMy
MDVjMTcxNzZiM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHAKQEAgLTU4LDYgKzU4LDExIEBAIFdL
QXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFjY2VwdGVkRmlsZUV4dGVuc2lvbnMo
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwocGFyYW1ldGVy
c1JlZiktPmFjY2VwdEZpbGVFeHRlbnNpb25zKCkubGVha1JlZigpKTsKIH0KIAorV0tBcnJheVJl
ZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxsb3dlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBh
cmFtZXRlcnNSZWYgcGFyYW1ldGVyc1JlZikKK3sKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChw
YXJhbWV0ZXJzUmVmKS0+YWxsb3dlZE1JTUVUeXBlcygpLmxlYWtSZWYoKSk7Cit9CisKIC8vIERl
cHJlY2F0ZWQuCiBXS1N0cmluZ1JlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5Q2FwdHVyZShX
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oCmluZGV4IDA1OWY3Y2Zj
MDYxZWZjNGJlZWZmNTkxMzJlMGU2ZjQ5ZDkwZmZjNjguLjdkMTMyOTg0YmE3NTY3NmY1NjRjYWNm
MDQ2OWRkMTllNjgzNGY1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oCkBAIC00NSw2ICs0NSw4IEBAIFdL
X0VYUE9SVCBib29sIFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxlRmlsZXMo
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBh
cmFtZXRlcnNDb3B5QWNjZXB0ZWRNSU1FVHlwZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBh
cmFtZXRlcnMpOwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29w
eUFjY2VwdGVkRmlsZUV4dGVuc2lvbnMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRl
cnMpOwogCitXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxs
b3dlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CisKIC8q
IERFUFJFQ0FURUQgLSBQbGVhc2UgdXNlIFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldENhcHR1cmVF
bmFibGVkKCkgaW5zdGVhZC4gKi8KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS09wZW5QYW5lbFBh
cmFtZXRlcnNDb3B5Q2FwdHVyZShXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggMmIzOTRmYzhiZGE3NDIxN2MxNzM1MTI3NjM2
NTY1OThhNGI4NDJiOS4uYjYxMTg4MTcxODg1MmI1MDM1OTg0ZjM1MDcwMmYxNzkxYTJlZWVjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgdm9pZCBXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyQ2hvb3NlTWVkaWFGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UmVmIGxpc3QKIH0KICNlbmRpZgogCi12b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5
UmVmIGZpbGVVUkxzUmVmKQordm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tBcnJheVJlZiBm
aWxlVVJMc1JlZiwgV0tBcnJheVJlZiBhbGxvd2VkTWltZVR5cGVzUmVmKQogewotICAgIHRvSW1w
bChsaXN0ZW5lclJlZiktPmNob29zZUZpbGVzKGZpbGVQYXRoc0Zyb21GaWxlVVJMcygqdG9JbXBs
KGZpbGVVUkxzUmVmKSkpOworICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmNob29zZUZpbGVzKGZp
bGVQYXRoc0Zyb21GaWxlVVJMcygqdG9JbXBsKGZpbGVVUkxzUmVmKSksIHRvSW1wbChhbGxvd2Vk
TWltZVR5cGVzUmVmKS0+dG9TdHJpbmdWZWN0b3IoKSk7CiB9CiAKIHZvaWQgV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lckNhbmNlbChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5oCmluZGV4IDY5OTk3NmZhYTJhZGRlNDc4Y2VmNmM0ZTFiMGZl
Zjg0NTA5OGFlYTguLmFhYmJlMTlkNzIyZWY2NDE0MjZjYzE1OTFhMzU2YmEwNzM0NGQ3YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJuICJDIiB7CiBXS19FWFBP
UlQgV0tUeXBlSUQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJRCh2b2lkKTsKIAog
V0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZU1lZGlhRmlsZXMo
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tBcnJheVJlZiBmaWxl
VVJMc1JlZiwgV0tTdHJpbmdSZWYgZGlzcGxheVN0cmluZywgV0tEYXRhUmVmIGljb25JbWFnZURh
dGFSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZp
bGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLQXJyYXlSZWYgZmls
ZVVSTHMpOworV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZp
bGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLQXJyYXlSZWYgZmls
ZVVSTHMsIFdLQXJyYXlSZWYgYWxsb3dlZE1pbWVUeXBlc1JlZik7CiBXS19FWFBPUlQgdm9pZCBX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJS
ZWYgbGlzdGVuZXIpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFkMTJhNTgwZTVhMDQ5NWVmNmFlYTVhZDMyNzdiODc1
YmU3YmU4MTguLjY4MGUyZjNlY2QxNWE0MjdlZDE3ZDIyYjI2NWY4MDlmZjRlYjhhYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhLmgiCkBAIC02NjkwLDE3ICs2NjkxLDIyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihj
b25zdCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFs
bG93ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBhdXRvIHJlcGxhY2VtZW50VVJMcyA9IHRyYW5zY29kZUltYWdlcyhm
aWxlVVJMcywgYWxsb3dlZE1JTUVUeXBlcyk7CisKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQotICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbCJfcywgZmlsZVVSTHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRi
b3hFeHRlbnNpb25GaWxlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxz
LnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFw
cGVuZChpIDwgcmVwbGFjZW1lbnRVUkxzLnNpemUoKSAmJiAhcmVwbGFjZW1lbnRVUkxzW2ldLmlz
TnVsbCgpID8gcmVwbGFjZW1lbnRVUkxzW2ldIDogZmlsZVVSTHNbaV0pOworICAgIGF1dG8gc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhh
bmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJf
cywgc2FuZGJveEV4dGVuc2lvbkZpbGVzKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpF
eHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMpKSk7CiAjZW5kaWYKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzLCB7IH0pKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgcmVwbGFjZW1l
bnRVUkxzKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7
CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDliNWVjMGFkNTE0NTgzYjhm
MzUzYThhZjBhOGI2ODY3MmEwZTA4YS4uMTBhMzI5ODgzMjc0OTQzZDA2NjY4YjQ3MDE3OWRmMmQ1
YWE2NTMxZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFj
Y2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hv
dWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3hjc2hhcmVk
ZGF0YS94Y3NjaGVtZXMvRHVtcFJlbmRlclRyZWUueGNzY2hlbWU6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnJ1bk9wZW5QYW5l
bCk6CisKIDIwMjAtMDctMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gTW92ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMu
eGNjb25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDJiZDc5MTg2MjZjMDhmNDNjN2YzNGZiYzZmYzc5OTMw
NTlhMzJhZDkuLjhmODI1MDk5NzJlYThhMTJjNDllZjA0ZWJjMzA1OTM2OWVjNzRjYTAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjMsMTIgKzIyMywx
NCBAQCBzdGF0aWMgdm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLT3BlblBhbmVsUGFyYW1ldGVycwogICAgIH0KICNlbmRpZgogCisgICAgV0tBcnJh
eVJlZiBhbGxvd2VkTWltZVR5cGVzID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRN
SU1FVHlwZXMocGFyYW1ldGVycyk7CisKICAgICBpZiAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0
QWxsb3dzTXVsdGlwbGVGaWxlcyhwYXJhbWV0ZXJzKSkgewotICAgICAgICBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJSZWYsIGZpbGVVUkxzKTsKKyAg
ICAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVy
UmVmLCBmaWxlVVJMcywgYWxsb3dlZE1pbWVUeXBlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVu
ZXJSZWYsIGFkb3B0V0soV0tBcnJheUNyZWF0ZSgmZmlyc3RJdGVtLCAxKSkuZ2V0KCkpOworICAg
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwg
YWRvcHRXSyhXS0FycmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEpKS5nZXQoKSwgYWxsb3dlZE1pbWVU
eXBlcyk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJ1bk1vZGFsKFdLUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3ZDMwZTNkNzY1NzhmMTliYzI2Y2E1
ODhhMmI2YTYxYjA4MjUyNTguLjY1MWM0MzNhYTM4MjhlZjA2YWM3ZjMxODM5NWQyMTE4YTQzMDc0
MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNy0wNiAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFNlbGVjdGluZyBh
IG5vbi1hY2NlcHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4gPGlucHV0IHR5cGU9ImZpbGUiPiBlbGVt
ZW50IHNob3VsZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2VwdGVkIGZvcm1hdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9mb3Jtcy9m
aWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5v
LXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFu
c2NvZGUtb3Blbi1wYW5lbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUv
ZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWM6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNy0w
MyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNv
cmRlciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNrcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggMzJiM2Q4ODZlODMyNjY0NTM3NDA0MWMyOTczMDEzOGJhYzJh
Nzc3Zi4uMmU3NjU1ZDc5ZDFjNDlmMmExNjhmN2RkNjMwY2IzYzI4NTM3MTM4NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC04NjYsNiArODY2LDggQEAgaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLXJlc291
cmNlLXBvbGljeS8gWyBTa2lwIF0KIAogIyB0ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9j
ZXNzKCkgb25seSB3b3JrcyBpbiBXZWJLaXQyCiBmYXN0L2ZpbGVzL2Jsb2ItbmV0d29yay1wcm9j
ZXNzLWNyYXNoLmh0bWwgWyBTa2lwIF0KK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFn
ZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgU2tpcCBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFNraXAgXQogCiAj
IFRoaXMgdGVzdCBpcyBjdXJyZW50bHkgb25seSByZWxldmFudCBvbiBtYWMtd2syCiBmYXN0L2Nh
bnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBb
IFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMt
YXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1w
YW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlZmNlOTFmMTgzMDE2NDc5MGU1MDE2YmE4
YTc2YjRhZDJkNmNhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorT1BFTiBGSUxFIFBBTkVMCitUZXN0cyBhIEhFSUMgaW1hZ2Us
IGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgSEVJQywgd2lsbCBub3Qg
YmUgY29udmVydGVkIHRvIGFueSBzdXBwb3J0ZWQgTUlNRSB0eXBlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBmaWxlTGlzdC5sZW5ndGggaXMgMQorUEFTUyBmaWxlLnR5
cGUgaXMgImltYWdlL2hlaWMiCitQQVNTIGZpbGUuc2l6ZSBpcyBub24temVyby4KK0ltYWdlIGNv
dWxkIG5vdCBiZSBsb2FkZWQgaW4gV2ViS2l0LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNj
b2RlLW9wZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWMxNGU4ODZhYWM0MGE2Njg1ZmNjYzcy
NDlmODJlMzExYWI3M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKQEAg
LTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iLmhlaWMi
IG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9pbnB1dD4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBkZXNjcmlwdGlvbigiVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlhIHRoZSBmaWxlIHBp
Y2tlciB3aGljaCBhY2NlcHRzIEhFSUMsIHdpbGwgbm90IGJlIGNvbnZlcnRlZCB0byBhbnkgc3Vw
cG9ydGVkIE1JTUUgdHlwZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0T3BlblBhbmVsRmlsZXMoWydyZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVp
YyddKTsKKworICAgICAgICAgICAgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2lucHV0JylbMF07CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGlu
cHV0RWxlbWVudC5vZmZzZXRMZWZ0ICsgaW5wdXRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwKKyAg
ICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQub2Zmc2V0VG9wICsgaW5wdXRFbGVtZW50Lm9mZnNl
dEhlaWdodCAvIDIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hhbmdlZChldmVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7
CisgICAgICAgICAgICBzaG91bGRCZSgiZmlsZUxpc3QubGVuZ3RoIiwgIjEiKTsKKworICAgICAg
ICAgICAgZmlsZSA9IGZpbGVMaXN0WzBdOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJmaWxlLnR5cGUiLCAiaW1hZ2UvaGVpYyIpOworICAgICAgICAgICAgc2hvdWxkQmVOb25a
ZXJvKCJmaWxlLnNpemUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaW1nIik7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7
CisKKyAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgICAgICAg
ICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpbWcub25lcnJvciA9
ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIGNvdWxkIG5vdCBiZSBs
b2FkZWQgaW4gV2ViS2l0LiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVz
dWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZp
bGUpOworICAgICAgICB9CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFu
ZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhMzIxZTQxOGQ2NjhiY2Q0ODc3ZjA5YzY1ODEy
ZjJlOGY4YWQ4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
bGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTUgQEAKK09QRU4gRklMRSBQQU5FTAorVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9z
ZW4gdmlhIHRoZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywgd2lsbCBiZSBjb252ZXJ0
ZWQgdG8gYSBQTkcgaW1hZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGZpbGVMaXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvcG5nIgorUEFT
UyBmaWxlLnNpemUgaXMgbm9uLXplcm8uCitQQVNTIGltZy53aWR0aCBpcyA0MDAKK1BBU1MgaW1n
LmhlaWdodCBpcyA0MDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzM1YzE3NGNlYzFiYWYwNmQ3YTNiZDAwN2VkYzI1ZGU4NGJiODgyOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9p
bWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9Ii5wbmciIG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50
KSI+PC9pbnB1dD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgYSBI
RUlDIGltYWdlLCBjaG9zZW4gdmlhIHRoZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywg
d2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBQTkcgaW1hZ2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy9n
cmVlbi00MDB4NDAwLmhlaWMnXSk7CisKKyAgICAgICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgICAgICAgICAgVUlIZWxw
ZXIuYWN0aXZhdGVBdChpbnB1dEVsZW1lbnQub2Zmc2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZz
ZXRXaWR0aCAvIDIsCisgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlu
cHV0RWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoYW5nZWQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZl
bnQudGFyZ2V0LmZpbGVzOworICAgICAgICAgICAgc2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIs
ICIxIik7CisKKyAgICAgICAgICAgIGZpbGUgPSBmaWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZS50eXBlIiwgImltYWdlL3BuZyIpOworICAgICAgICAg
ICAgc2hvdWxkQmVOb25aZXJvKCJmaWxlLnNpemUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGltZyk7CisKKyAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRl
cigpOworICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAg
ICBpbWcub25sb2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1n
LndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1nLmhlaWdo
dCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcuc3JjID0gcmVhZGVyLnJlc3VsdDsKKyAg
ICAgICAgICAgIH07CisgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsKKyAg
ICAgICAgfQorICAgICAgICBydW5UZXN0KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
cmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2NmODU5ZDhkYTFkZjExNjI1NGRhNjM5MzU1OWU1OWU5NjljYTdiNgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgNzEwCnpjbVlqT09LVEhSNmgzRVc4ZERsbFEhM1QhQjRgalBo
MSEqX1kmNUFsI2Zae0h3WDF9ZzNBdmF0KlhnTE8yKH5FSgp6ZyRyS2A3aFN7JERFT2NZSHpHPVBG
QUN+IXNQMF8yPSl3fWVHbjJGKT1IdlUkPil5SE41WWhIKElIemwjYXRKMnUKenRMaThiendvYFZB
fkQkUm5wK1FJTnUtcSVjSnYxNFR5PyQqWjxpWiohZVJgaEUoWX4lVGNAPU9lZHN1SVB7a2NZCnox
fHIrd2Nwe3skY0ZEbVhZekEzTSMlRVBAQFN4aGZBPz4mYDR3NCsqXjt6amFxd1RmUVA2SXJMYXwr
QzUkWXA/Tgp6Pl5KPmdVdDEmVUhKailkJGE5S1lFaCNYaSFqeH1weGNkPXVkeWE2X2BDcD0keHxK
QVRkWWhaREZCfnc4IzhjeGoKej5NfSlNc3F+JWJ8Q1B6KT83cmdOcCotJkNTMk5sSiF9dn1OPlEr
R2A4cnhRX1d8Z0dPV0hKZEZQfT1YejhTayhiCnpqTyFNeyE+Wm5oUiNLRCEkdFZHMTNmemJXMjlM
a055Q0U2aHQrWkZkY215VGxTKFFwTzFUUlN6NF5vJVowZiVfIQp6aENhJnM8azUmQHpLZT9GVWEy
Xz1oI2QjU2tEMmU/cSVIN3YwQSt2PFBabiQmVG5Nfk09KCpYO0R5KElYKmAtc0cKekpoenUkRXEl
RTF7WHphP19TJDt5eVZscURVO2EjOG90YH1YPkZtcXEkbjZvYiZMbj0wbiZ+STImbkQobUU5cXNk
CmklJW1VbF9pNGNATjZZQVd4RUx7aHZGbEFvVyVqcH5HMklxRCY7SjFfUihOVXYKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBmNTUwM2Y4YThmYzhhMjkwNjUxODRkNjFmMTM4M2UwYjEzN2ZiNzc5Li4y
NzUxNWIzZDcwMzMzZDdlYTNmZjk5NTFiMDI2NTI4OWFjZWExYWIxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04NSw2ICs4NSw5IEBAIGZh
c3QvZXZlbnRzL2luYWN0aXZlLXdpbmRvdy1uby1tb3VzZS1ldmVudC5odG1sIFsgUGFzcyBdCiAK
IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWluLXR3by1wYWdlcy5odG1s
IFsgUGFzcyBdCiAKK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUt
b3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1h
Z2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmll
cy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403586</attachid>
            <date>2020-07-06 04:09:12 -0700</date>
            <delta_ts>2020-07-06 13:18:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200706040912.patch</filename>
            <type>text/plain</type>
            <size>30756</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTBjM2FiMjFiZTgwMWVhYTBjNmI3
NmMzOTlkODQxNzU2ZTYzMzEuLjYzNDRlOGEwNTdkMjdlZGE1YWE2ZWU2OTY3ZWViYTU2N2E1NTA4
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBTZWxlY3RpbmcgYSBu
b24tYWNjZXB0ZWQgaW1hZ2UgZm9ybWF0IHRvIGFuIDxpbnB1dCB0eXBlPSJmaWxlIj4gZWxlbWVu
dCBzaG91bGQgY29udmVydCBpdCB0byBhbiBhY2NlcHRlZCBmb3JtYXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVt
SW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVt
Q29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RG
OjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3Bl
blRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6Cisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAt
MDctMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
QWRkIGFsbW9zdCBldmVyeXRoaW5nIGZyb20gRmVhdHVyZURlZmluZXMueGNjb25maWcgdG8gUGxh
dGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlM2ExN2IxZjc2NGZjMzMxOGQxMWM0
ZjZlZjZiMDJiYmI3ZDNlZi4uODU2YzQyOTE3MjAyOGZmYmM5MGM5NmZkYjY3ZTI3MDVlYjA2ZGRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0
aW5nIGEgbm9uLWFjY2VwdGVkIGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+
IGVsZW1lbnQgc2hvdWxkIGNvbnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1h
Z2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNy0wNSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBNb3ZlIGFsbW9zdCBh
bGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyB0byBQbGF0Zm9ybUVuYWJs
ZUNvY29hLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZWRjZDVlYWNiOTMzMmVlNDAzOTM4NWNmMDQ0ODQwOTlhZGNm
ODMwZC4uMDBiNjFiMjA0MWRlYWZmNmI0MTBhYTBlY2VhYjFhOGQ3MGNiNGYzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNy0wNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFNlbGVjdGluZyBhIG5vbi1hY2Nl
cHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4gPGlucHV0IHR5cGU9ImZpbGUiPiBlbGVtZW50IHNob3Vs
ZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2VwdGVkIGZvcm1hdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dHJh
bnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZXMpOgorICAgICAg
ICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHA6CisgICAgICAgIChXS09wZW5QYW5lbFBhcmFt
ZXRlcnNDb3B5QWxsb3dlZE1JTUVUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJDaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bCk6CisKIDIwMjAtMDctMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gTW92ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMu
eGNjb25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggNjBi
MzJlNDZmYzQyOTA4MjNhNjI5YmRhM2VkMjcyYTgzYjZhYjRhNi4uYmZlODQxMjk2ZDNjNmQ1MmE4
YThhZjE1NWU2ZThlZThmOTEyMDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTQ1LDcgKzE0NSw3
IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxk
IGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgotV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcm
IHN1ZmZpeCA9IHsgfSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgUGxhdGZvcm1GaWxlSGFuZGxlIG9w
ZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxlQWNjZXNzUGVybWlz
c2lvbiA9IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9
IGZhbHNlKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBvZmZzZXQgZnJvbSB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBmaWxlIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbSBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQppbmRleCBhY2VkZjVmZGQxYjJlNzY4MjRmZmE4OWQ0
ZGNkZjQwYWMxYjFiODdkLi5kZmQ4MjI1NDBlYTYyYzU3ZDUwM2E1Mzc2ZGFjZjdkYWYwYTM0MTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCkBAIC05Myw3ICs5Myw3
IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAgICAgcmV0dXJuIE5TSG9tZURpcmVjdG9y
eSgpOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRm
b3JtRmlsZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CiAgICAgcGxhdGZvcm1GaWxl
SGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIApAQCAtMTEzLDkgKzExMywxMyBA
QCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgcGxhdGZvcm1GaWxlSAogICAgIENTdHJpbmcgcHJlZml4VXRmOCA9IHByZWZp
eC51dGY4KCk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFV0ZjguZGF0YSgp
LCBwcmVmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoIlhY
WFhYWCIsIDYpOworICAgIAorICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4KKyAg
ICBDU3RyaW5nIHN1ZmZpeFV0ZjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZpbGVQ
YXRoLmFwcGVuZChzdWZmaXhVdGY4LmRhdGEoKSwgc3VmZml4VXRmOC5sZW5ndGgoKSk7CiAgICAg
dGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFuZGxl
ID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBsYXRmb3JtRmlsZUhh
bmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VXRmOC5sZW5n
dGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1Y2Ew
ZjVkZi4uZmEwYjUzMWZlMTBmZjc0ZWJhYjg2NWYzY2EwOTE1ZGExZDk1NzUxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBWZWN0b3I8
U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5Rmls
ZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFt
ZS5nZXQoKSwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKaW5kZXggYzlmNTAxNDM2YWJjYzgwOTRlODQxNDgwZDIxZmUzNmE0NzFlODFmZi4uYjNjMDQw
MWI1MDZmZGNlMzIzMmVkNmZlZmJiYmYwZTUyZDEwMDNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBnZXRWb2x1bWVG
cmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwogICAgIGNvbnN0IGNo
YXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKaW5kZXggNjU5ZGZkNTI3MjdkYzllZjY5OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4uYjYz
MTQ5NTczYTQ4NDFmZTYwMDFlZWZhZmRkMDA5MmNmYzc0MWFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJh
dGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+JiBhY3Rp
b24pCiAgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
LCBjb25zdCBTdHJpbmcmKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggMjE5ZWUx
OTU5NzEzNDIxZWNkMGNkMjllMjJkNWIxN2E1NTVmMTgwMy4uMjMzN2IwZjNmODY4MGU3YzllZjQx
YmNkOTg3MTU4ZmYyMDIzNTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgbWVkaWFNSU1FVHlwZUZv
ckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CiAKLSAgICBzdGF0aWMgU3RyaW5n
IG1pbWVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRh
PiBjcmVhdGVNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCmluZGV4IGFmMDhmNmQ1ZWZiNGFhYTg2YjEw
NGE0OWM5ODU1ZjIwNzI1YjY4MDguLmRiYzFlMTJjMmZmOTRkOTA3ZmIyZmRmNWNhYWJlN2E5NTFi
ZTMxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYg
KzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIK
IAorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRp
b24sIENHUmVjdCBzb3VyY2UpCkBAIC00Niw0ICs1Miw3OCBAQCB2b2lkIHBhaW50SW1hZ2UoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3Is
IENHUAogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBT
dHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQoreworICAgIEFTU0VSVChtaW1lVHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iX3MpKTsK
KworICAgIC8vIFRoaXMgZnVuY3Rpb24gdHJhbnNjb2RlcyBmaWxlcyBvbmx5LgorICAgIGlmIChG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkocGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rczo6WWVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKKworICAg
IC8vIENyZWF0ZSB0aGUgaW1hZ2Ugc291cmNlLiBFbnN1cmUgdGhlICdwYXRoJyBpcyBhY3R1YWxs
eSBhbiBpbWFnZSBmaWxlLgorICAgIGF1dG8gc291cmNlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIGF1dG8gc291
cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChzb3VyY2VVUkwuZ2V0KCks
IG51bGxwdHIpKTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmco
KTsKKworICAgIC8vIEVuc3VyZSB0aGUgZm9ybWF0IG9mIHRoZSBpbWFnZSBzb3VyY2UgaXMgZGlm
ZmVyZW50IGZyb20gJ21pbWVUeXBlJy4KKyAgICBhdXRvIHNvdXJjZVVUSSA9IFN0cmluZyhDR0lt
YWdlU291cmNlR2V0VHlwZShzb3VyY2UuZ2V0KCkpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50VVRJ
ID0gV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBpZiAoc291cmNlVVRJ
ID09IHJlcGxhY2VtZW50VVRJKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAg
Ly8gQ29tcHV0ZSB0aGUgZXh0ZW5zaW9uIGFuZCB0aGUgc3VmZml4IG9mIHRoZSB0ZW1wb3Jhcnkg
ZmlsZS4KKyAgICBhdXRvIGV4dGVuc2lvbiA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRvIHN1ZmZpeCA9
IG1ha2VTdHJpbmcoIi4iX3MsIGV4dGVuc2lvbik7CisKKyAgICAvLyBDcmVhdGUgdGhlIHRlbXBv
cmFyeSBmaWxlLgorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXBsYWNlbWVu
dEZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wSW1hZ2UiX3MsIHJlcGxhY2VtZW50RmlsZUhhbmRsZSwgc3Vm
Zml4KTsKKyAgICBpZiAocmVwbGFjZW1lbnRGaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhf
TUVTU0FHRSgiUmVwbGFjZW1lbnQgaW1hZ2UgY291bGQgbm90IGJlIGNyZWF0ZWQuIik7CisgICAg
ICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIHRoZSBkYXRh
IGNvbnN1bWVyLgorICAgIENHRGF0YUNvbnN1bWVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgW10o
dm9pZCAqaW5mbywgY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7
CisgICAgICAgIGF1dG8gcGxhdGZvcm1GaWxlSGFuZGxlID0gKnN0YXRpY19jYXN0PEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAgICAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUocGxhdGZvcm1GaWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYnVmZmVyKSwgY291bnQpOworICAgIH0sIG51bGxwdHIgfTsKKworICAgIC8vIENyZWF0ZSB0
aGUgaW1hZ2UgcmVwbGFjZW1lbnQuCisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRh
Q29uc3VtZXJDcmVhdGUoJnJlcGxhY2VtZW50RmlsZUhhbmRsZSwgJmNhbGxiYWNrcykpOworICAg
IGF1dG8gcmVwbGFjZW1lbnQgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhE
YXRhQ29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHJlcGxhY2VtZW50VVRJLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDEsIG51bGxwdHIpKTsKKworICAgIC8vIFdyaXRlIHRoZSBzb3VyY2UgaW1hZ2Ug
dG8gdGhlIHJlcGxhY2VtZW50IGltYWdlLgorICAgIHNpemVfdCBpbmRleCA9IENHSW1hZ2VTb3Vy
Y2VHZXRQcmltYXJ5SW1hZ2VJbmRleChzb3VyY2UuZ2V0KCkpOworICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkFkZEltYWdlRnJvbVNvdXJjZShyZXBsYWNlbWVudC5nZXQoKSwgc291cmNlLmdldCgpLCBp
bmRleCwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUocmVwbGFjZW1l
bnQuZ2V0KCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXBsYWNlbWVudEZpbGVIYW5k
bGUpOworCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aDsKK30KKworVmVjdG9yPFN0cmluZz4g
dHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCit7CisgICAgU3RyaW5nIG1pbWVUeXBlRm9yRW5j
b2RpbmcgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcoYWxsb3dlZE1JTUVUeXBlcywgeyB9KTsKKyAgICBpZiAobWltZVR5cGVGb3JF
bmNvZGluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChtaW1lVHlw
ZUZvckVuY29kaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9y
PFN0cmluZz4gcmVwbGFjZW1lbnRQYXRoczsKKyAgICByZXBsYWNlbWVudFBhdGhzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkocGF0aHMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgcGF0aCA6IHBh
dGhzKSB7CisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjptaW1lVHlwZUZvclBhdGgocGF0aCk7CisgICAgICAgIGlmIChhbGxvd2VkTUlNRVR5cGVzLmNv
bnRhaW5zKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIHJlcGxhY2VtZW50UGF0aHMudW5jaGVja2Vk
QXBwZW5kKG51bGxTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcGxhY2Vt
ZW50UGF0aHMudW5jaGVja2VkQXBwZW5kKHRyYW5zY29kZUltYWdlKHBhdGgsIG1pbWVUeXBlRm9y
RW5jb2RpbmcpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXRoczsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0NHVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVz
LmgKaW5kZXggODUxZDE4MWE4ZmM3NTczYzkzMGNmYzYwM2IwZjQxNDI4NzQ3YjIyZC4uYWEzZjVj
ZGUzMWYxNzdkMjlmOWMyNmE0N2QwMGJlNzFjNGQ2ZjhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY2cvQ0dVdGlsaXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxMyArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENHVXRpbGl0aWVzX2gKLSNkZWZpbmUgQ0dV
dGlsaXRpZXNfaAorI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIHBh
aW50SW1hZ2UoQ0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBD
R1BvaW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKTsKK1ZlY3RvcjxTdHJpbmc+IHRyYW5z
Y29kZUltYWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBDR1V0aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcAppbmRleCBhZmFmNmU0OGJjMzZh
OTU3NzJjMTNlNTdjMmIyYTgyZDE4ZGQzNDc0Li5mYTA2MzIwNjE4YTQ2ZTkxZDgyN2Q1MDY3MGMy
MDVjMTcxNzZiM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHAKQEAgLTU4LDYgKzU4LDExIEBAIFdL
QXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFjY2VwdGVkRmlsZUV4dGVuc2lvbnMo
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwocGFyYW1ldGVy
c1JlZiktPmFjY2VwdEZpbGVFeHRlbnNpb25zKCkubGVha1JlZigpKTsKIH0KIAorV0tBcnJheVJl
ZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxsb3dlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBh
cmFtZXRlcnNSZWYgcGFyYW1ldGVyc1JlZikKK3sKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChw
YXJhbWV0ZXJzUmVmKS0+YWxsb3dlZE1JTUVUeXBlcygpLmxlYWtSZWYoKSk7Cit9CisKIC8vIERl
cHJlY2F0ZWQuCiBXS1N0cmluZ1JlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5Q2FwdHVyZShX
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oCmluZGV4IDA1OWY3Y2Zj
MDYxZWZjNGJlZWZmNTkxMzJlMGU2ZjQ5ZDkwZmZjNjguLjdkMTMyOTg0YmE3NTY3NmY1NjRjYWNm
MDQ2OWRkMTllNjgzNGY1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oCkBAIC00NSw2ICs0NSw4IEBAIFdL
X0VYUE9SVCBib29sIFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxlRmlsZXMo
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBh
cmFtZXRlcnNDb3B5QWNjZXB0ZWRNSU1FVHlwZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBh
cmFtZXRlcnMpOwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29w
eUFjY2VwdGVkRmlsZUV4dGVuc2lvbnMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRl
cnMpOwogCitXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxs
b3dlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CisKIC8q
IERFUFJFQ0FURUQgLSBQbGVhc2UgdXNlIFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldENhcHR1cmVF
bmFibGVkKCkgaW5zdGVhZC4gKi8KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS09wZW5QYW5lbFBh
cmFtZXRlcnNDb3B5Q2FwdHVyZShXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggMmIzOTRmYzhiZGE3NDIxN2MxNzM1MTI3NjM2
NTY1OThhNGI4NDJiOS4uYjYxMTg4MTcxODg1MmI1MDM1OTg0ZjM1MDcwMmYxNzkxYTJlZWVjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgdm9pZCBXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyQ2hvb3NlTWVkaWFGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UmVmIGxpc3QKIH0KICNlbmRpZgogCi12b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5
UmVmIGZpbGVVUkxzUmVmKQordm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tBcnJheVJlZiBm
aWxlVVJMc1JlZiwgV0tBcnJheVJlZiBhbGxvd2VkTWltZVR5cGVzUmVmKQogewotICAgIHRvSW1w
bChsaXN0ZW5lclJlZiktPmNob29zZUZpbGVzKGZpbGVQYXRoc0Zyb21GaWxlVVJMcygqdG9JbXBs
KGZpbGVVUkxzUmVmKSkpOworICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmNob29zZUZpbGVzKGZp
bGVQYXRoc0Zyb21GaWxlVVJMcygqdG9JbXBsKGZpbGVVUkxzUmVmKSksIHRvSW1wbChhbGxvd2Vk
TWltZVR5cGVzUmVmKS0+dG9TdHJpbmdWZWN0b3IoKSk7CiB9CiAKIHZvaWQgV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lckNhbmNlbChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5oCmluZGV4IDY5OTk3NmZhYTJhZGRlNDc4Y2VmNmM0ZTFiMGZl
Zjg0NTA5OGFlYTguLmFhYmJlMTlkNzIyZWY2NDE0MjZjYzE1OTFhMzU2YmEwNzM0NGQ3YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJuICJDIiB7CiBXS19FWFBP
UlQgV0tUeXBlSUQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJRCh2b2lkKTsKIAog
V0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZU1lZGlhRmlsZXMo
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tBcnJheVJlZiBmaWxl
VVJMc1JlZiwgV0tTdHJpbmdSZWYgZGlzcGxheVN0cmluZywgV0tEYXRhUmVmIGljb25JbWFnZURh
dGFSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZp
bGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLQXJyYXlSZWYgZmls
ZVVSTHMpOworV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZp
bGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLQXJyYXlSZWYgZmls
ZVVSTHMsIFdLQXJyYXlSZWYgYWxsb3dlZE1pbWVUeXBlc1JlZik7CiBXS19FWFBPUlQgdm9pZCBX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJS
ZWYgbGlzdGVuZXIpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFkMTJhNTgwZTVhMDQ5NWVmNmFlYTVhZDMyNzdiODc1
YmU3YmU4MTguLjM0YWFlOTllZjgzODRjOWI5N2I4ZjYzOWQ5MWEyYmJlZDQ2ODdhMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhLmgiCkBAIC02NjkwLDE3ICs2NjkxLDI3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihj
b25zdCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFs
bG93ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byByZXBsYWNlbWVudFVSTHMg
PSB0cmFuc2NvZGVJbWFnZXMoZmlsZVVSTHMsIGFsbG93ZWRNSU1FVHlwZXMpOworI2Vsc2UKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHM7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93
ZWRNSU1FVHlwZXMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQot
ICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbCJfcywgZmlsZVVSTHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRl
bnNpb25GaWxlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFwcGVuZChp
IDwgcmVwbGFjZW1lbnRVUkxzLnNpemUoKSAmJiAhcmVwbGFjZW1lbnRVUkxzW2ldLmlzTnVsbCgp
ID8gcmVwbGFjZW1lbnRVUkxzW2ldIDogZmlsZVVSTHNbaV0pOworICAgIGF1dG8gc2FuZGJveEV4
dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNG
b3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgc2Fu
ZGJveEV4dGVuc2lvbkZpbGVzKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRT
YW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXMpKSk7CiAjZW5kaWYKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzLCB7IH0pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgcmVwbGFjZW1lbnRVUkxz
KSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAg
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDliNWVjMGFkNTE0NTgzYjhmMzUzYThh
ZjBhOGI2ODY3MmEwZTA4YS4uMTBhMzI5ODgzMjc0OTQzZDA2NjY4YjQ3MDE3OWRmMmQ1YWE2NTMx
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogU2VsZWN0aW5nIGEgbm9uLWFjY2VwdGVk
IGltYWdlIGZvcm1hdCB0byBhbiA8aW5wdXQgdHlwZT0iZmlsZSI+IGVsZW1lbnQgc2hvdWxkIGNv
bnZlcnQgaXQgdG8gYW4gYWNjZXB0ZWQgZm9ybWF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3
MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94
Y3NjaGVtZXMvRHVtcFJlbmRlclRyZWUueGNzY2hlbWU6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnJ1bk9wZW5QYW5lbCk6CisK
IDIwMjAtMDctMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gTW92ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMueGNjb25m
aWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IDJiZDc5MTg2MjZjMDhmNDNjN2YzNGZiYzZmYzc5OTMwNTlhMzJh
ZDkuLjhmODI1MDk5NzJlYThhMTJjNDllZjA0ZWJjMzA1OTM2OWVjNzRjYTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjMsMTIgKzIyMywxNCBAQCBz
dGF0aWMgdm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLT3BlblBhbmVsUGFyYW1ldGVycwogICAgIH0KICNlbmRpZgogCisgICAgV0tBcnJheVJlZiBh
bGxvd2VkTWltZVR5cGVzID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlw
ZXMocGFyYW1ldGVycyk7CisKICAgICBpZiAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dz
TXVsdGlwbGVGaWxlcyhwYXJhbWV0ZXJzKSkgewotICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJSZWYsIGZpbGVVUkxzKTsKKyAgICAgICAg
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVyUmVmLCBm
aWxlVVJMcywgYWxsb3dlZE1pbWVUeXBlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJSZWYs
IGFkb3B0V0soV0tBcnJheUNyZWF0ZSgmZmlyc3RJdGVtLCAxKSkuZ2V0KCkpOworICAgIFdLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwgYWRvcHRX
SyhXS0FycmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEpKS5nZXQoKSwgYWxsb3dlZE1pbWVUeXBlcyk7
CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJ1bk1vZGFsKFdLUGFnZVJlZiBwYWdlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3ZDMwZTNkNzY1NzhmMTliYzI2Y2E1ODhhMmI2
YTYxYjA4MjUyNTguLjY1MWM0MzNhYTM4MjhlZjA2YWM3ZjMxODM5NWQyMTE4YTQzMDc0MzYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNy0wNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFNlbGVjdGluZyBhIG5vbi1h
Y2NlcHRlZCBpbWFnZSBmb3JtYXQgdG8gYW4gPGlucHV0IHR5cGU9ImZpbGUiPiBlbGVtZW50IHNo
b3VsZCBjb252ZXJ0IGl0IHRvIGFuIGFjY2VwdGVkIGZvcm1hdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2Vu
dHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5z
Y29kZS1vcGVuLXBhbmVsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUt
b3Blbi1wYW5lbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmll
cy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWM6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNy0wMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBz
aG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNrcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggMzJiM2Q4ODZlODMyNjY0NTM3NDA0MWMyOTczMDEzOGJhYzJhNzc3Zi4u
MmU3NjU1ZDc5ZDFjNDlmMmExNjhmN2RkNjMwY2IzYzI4NTM3MTM4NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCkBAIC04NjYsNiArODY2LDggQEAgaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLXJlc291cmNlLXBv
bGljeS8gWyBTa2lwIF0KIAogIyB0ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkg
b25seSB3b3JrcyBpbiBXZWJLaXQyCiBmYXN0L2ZpbGVzL2Jsb2ItbmV0d29yay1wcm9jZXNzLWNy
YXNoLmh0bWwgWyBTa2lwIF0KK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFu
c2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgU2tpcCBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1h
cGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFNraXAgXQogCiAjIFRoaXMg
dGVzdCBpcyBjdXJyZW50bHkgb25seSByZWxldmFudCBvbiBtYWMtd2syCiBmYXN0L2NhbnZhcy93
ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAg
XQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2lt
YWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlZmNlOTFmMTgzMDE2NDc5MGU1MDE2YmE4YTc2YjRh
ZDJkNmNhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorT1BFTiBGSUxFIFBBTkVMCitUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3Nl
biB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgSEVJQywgd2lsbCBub3QgYmUgY29u
dmVydGVkIHRvIGFueSBzdXBwb3J0ZWQgTUlNRSB0eXBlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBmaWxlTGlzdC5sZW5ndGggaXMgMQorUEFTUyBmaWxlLnR5cGUgaXMg
ImltYWdlL2hlaWMiCitQQVNTIGZpbGUuc2l6ZSBpcyBub24temVyby4KK0ltYWdlIGNvdWxkIG5v
dCBiZSBsb2FkZWQgaW4gV2ViS2l0LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9w
ZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWMxNGU4ODZhYWM0MGE2Njg1ZmNjYzcyNDlmODJl
MzExYWI3M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxl
L2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKQEAgLTAsMCAr
MSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iLmhlaWMiIG9uY2hh
bmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9pbnB1dD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNj
cmlwdGlvbigiVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlhIHRoZSBmaWxlIHBpY2tlciB3
aGljaCBhY2NlcHRzIEhFSUMsIHdpbGwgbm90IGJlIGNvbnZlcnRlZCB0byBhbnkgc3VwcG9ydGVk
IE1JTUUgdHlwZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
T3BlblBhbmVsRmlsZXMoWydyZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVpYyddKTsK
KworICAgICAgICAgICAgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2lucHV0JylbMF07CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGlucHV0RWxl
bWVudC5vZmZzZXRMZWZ0ICsgaW5wdXRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAg
ICAgICAgICBpbnB1dEVsZW1lbnQub2Zmc2V0VG9wICsgaW5wdXRFbGVtZW50Lm9mZnNldEhlaWdo
dCAvIDIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hhbmdlZChldmVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7CisgICAg
ICAgICAgICBzaG91bGRCZSgiZmlsZUxpc3QubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAg
ZmlsZSA9IGZpbGVMaXN0WzBdOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJm
aWxlLnR5cGUiLCAiaW1hZ2UvaGVpYyIpOworICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJm
aWxlLnNpemUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIik7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7CisKKyAg
ICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgICAgICAgICAgcmVh
ZGVyLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpbWcub25lcnJvciA9ICgpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQg
aW4gV2ViS2l0LiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVzdWx0Owor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwor
ICAgICAgICB9CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFw
aS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhMzIxZTQxOGQ2NjhiY2Q0ODc3ZjA5YzY1ODEyZjJlOGY4
YWQ4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTUgQEAKK09QRU4gRklMRSBQQU5FTAorVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlh
IHRoZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywgd2lsbCBiZSBjb252ZXJ0ZWQgdG8g
YSBQTkcgaW1hZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZpbGVM
aXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvcG5nIgorUEFTUyBmaWxl
LnNpemUgaXMgbm9uLXplcm8uCitQQVNTIGltZy53aWR0aCBpcyA0MDAKK1BBU1MgaW1nLmhlaWdo
dCBpcyA0MDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFw
aS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzM1YzE3NGNlYzFiYWYwNmQ3YTNiZDAwN2VkYzI1ZGU4NGJiODgyOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10
cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbnB1
dCB0eXBlPSJmaWxlIiBhY2NlcHQ9Ii5wbmciIG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9p
bnB1dD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgYSBIRUlDIGlt
YWdlLCBjaG9zZW4gdmlhIHRoZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywgd2lsbCBi
ZSBjb252ZXJ0ZWQgdG8gYSBQTkcgaW1hZ2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00
MDB4NDAwLmhlaWMnXSk7CisKKyAgICAgICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0
aXZhdGVBdChpbnB1dEVsZW1lbnQub2Zmc2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZzZXRXaWR0
aCAvIDIsCisgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlucHV0RWxl
bWVudC5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
YW5nZWQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZlbnQudGFy
Z2V0LmZpbGVzOworICAgICAgICAgICAgc2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIsICIxIik7
CisKKyAgICAgICAgICAgIGZpbGUgPSBmaWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZmlsZS50eXBlIiwgImltYWdlL3BuZyIpOworICAgICAgICAgICAgc2hv
dWxkQmVOb25aZXJvKCJmaWxlLnNpemUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGltZyk7CisKKyAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwor
ICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpbWcu
b25sb2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1nLndpZHRo
IiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1nLmhlaWdodCIsICI0
MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICBpbWcuc3JjID0gcmVhZGVyLnJlc3VsdDsKKyAgICAgICAg
ICAgIH07CisgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsKKyAgICAgICAg
fQorICAgICAgICBydW5UZXN0KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3Vy
Y2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
bGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2NmODU5ZDhkYTFkZjExNjI1NGRhNjM5MzU1OWU1OWU5NjljYTdiNgpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgNzEwCnpjbVlqT09LVEhSNmgzRVc4ZERsbFEhM1QhQjRgalBoMSEqX1km
NUFsI2Zae0h3WDF9ZzNBdmF0KlhnTE8yKH5FSgp6ZyRyS2A3aFN7JERFT2NZSHpHPVBGQUN+IXNQ
MF8yPSl3fWVHbjJGKT1IdlUkPil5SE41WWhIKElIemwjYXRKMnUKenRMaThiendvYFZBfkQkUm5w
K1FJTnUtcSVjSnYxNFR5PyQqWjxpWiohZVJgaEUoWX4lVGNAPU9lZHN1SVB7a2NZCnoxfHIrd2Nw
e3skY0ZEbVhZekEzTSMlRVBAQFN4aGZBPz4mYDR3NCsqXjt6amFxd1RmUVA2SXJMYXwrQzUkWXA/
Tgp6Pl5KPmdVdDEmVUhKailkJGE5S1lFaCNYaSFqeH1weGNkPXVkeWE2X2BDcD0keHxKQVRkWWha
REZCfnc4IzhjeGoKej5NfSlNc3F+JWJ8Q1B6KT83cmdOcCotJkNTMk5sSiF9dn1OPlErR2A4cnhR
X1d8Z0dPV0hKZEZQfT1YejhTayhiCnpqTyFNeyE+Wm5oUiNLRCEkdFZHMTNmemJXMjlMa055Q0U2
aHQrWkZkY215VGxTKFFwTzFUUlN6NF5vJVowZiVfIQp6aENhJnM8azUmQHpLZT9GVWEyXz1oI2Qj
U2tEMmU/cSVIN3YwQSt2PFBabiQmVG5Nfk09KCpYO0R5KElYKmAtc0cKekpoenUkRXElRTF7WHph
P19TJDt5eVZscURVO2EjOG90YH1YPkZtcXEkbjZvYiZMbj0wbiZ+STImbkQobUU5cXNkCmklJW1V
bF9pNGNATjZZQVd4RUx7aHZGbEFvVyVqcH5HMklxRCY7SjFfUihOVXYKCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBmNTUwM2Y4YThmYzhhMjkwNjUxODRkNjFmMTM4M2UwYjEzN2ZiNzc5Li4yNzUxNWIz
ZDcwMzMzZDdlYTNmZjk5NTFiMDI2NTI4OWFjZWExYWIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04NSw2ICs4NSw5IEBAIGZhc3QvZXZl
bnRzL2luYWN0aXZlLXdpbmRvdy1uby1tb3VzZS1ldmVudC5odG1sIFsgUGFzcyBdCiAKIGZhc3Qv
YW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWluLXR3by1wYWdlcy5odG1sIFsgUGFz
cyBdCiAKK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1w
YW5lbC5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8t
dHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403613</attachid>
            <date>2020-07-06 13:18:50 -0700</date>
            <delta_ts>2020-07-06 15:47:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200706131849.patch</filename>
            <type>text/plain</type>
            <size>49118</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTBjM2FiMjFiZTgwMWVhYTBjNmI3
NmMzOTlkODQxNzU2ZTYzMzEuLmVkOTM4NzEzZjhkNzU4NDVjZTgxZmU5ZWVjOTU5NTRkMDU2ODU2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2Us
IHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBh
Y2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYSBzdWZm
aXggdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIFRoZSBnb2FsIGlz
IHRvCisgICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbWFnZSBm
aWxlcyB3aXRoIHZhbGlkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5o
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFy
eUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAtMDctMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIGFsbW9zdCBldmVyeXRoaW5nIGZyb20gRmVh
dHVyZURlZmluZXMueGNjb25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggODhlM2ExN2IxZjc2NGZjMzMxOGQxMWM0ZjZlZjZiMDJiYmI3ZDNlZi4uZmFiZDU4YTlhYmNm
YjhkZWZjYThjZDdjMDA3YjEwODZiZmUxODY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgW21hY09TXTogQSBIRUlGIGltYWdlLCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVu
UGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
aW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OgorICAgICAgICBNb3ZlZCBmcm9tIHBhaW50SW1hZ2UoKSBpbiBXZWJLaXQuCisKIDIwMjAtMDct
MDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTW92
ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMueGNjb25maWcgdG8gUGxh
dGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkY2Q1ZWFjYjkzMzJlZTQwMzkzODVjZjA0
NDg0MDk5YWRjZjgzMGQuLmU2ZDVlYWNmMTRhNTBjOWRjODI5YTljMzhhZjk2NTRiMTZjZjA4ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1h
Z2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBh
biBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuICAgICAgICAKKworICAgICAgICAq
IFBsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NnL0NHVXRpbGl0aWVzLmguCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgor
ICAgICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBQbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1hZ2VzKToK
KyAgICAgICAgSW1wbGVtZW50IGEgZnVuY3Rpb24gdGhhdCB0cmFuc2NvZGVzIGltYWdlcyBhbW9u
ZyBhIHNldCBvZiBmaWxlcyBnaXZlbgorICAgICAgICB0aGUgYWxsb3dlZE1JTUVUeXBlcy4gVGhl
IGRlc3RpbmF0aW9uIE1JTUUgdHlwZSBvZiB0aGVzZSBpbWFnZXMgaXMgdGhlCisgICAgICAgIGZp
cnN0IE1JTUUgdHlwZSBpbiB0aGUgYWxsb3dlZE1JTUVUeXBlcyB3aGljaCBDRyBzdXBwb3J0cyBl
bmNvZGluZyB0by4KKworICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cGFpbnQpOgorICAgICAgICBDYWxs
IGRyYXdOYXRpdmVJbWFnZSgpIGFmdGVyIHJlbmFtaW5nIHBhaW50SW1hZ2UoKSB0byBkcmF3TmF0
aXZlSW1hZ2UoKS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcDoKKyAgICAgICAgKFdL
T3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOgorICAgICAgICBUcmFuc2ZlciB0aGUgbGlz
dCBvZiB0aGUgYWxsb3dlZCBNSU1FIHR5cGVzIGZyb20gdGhlIE9wZW5QYW5lbCB0byB0aGUKKyAg
ICAgICAgZmlsZSBjaG9vc2VyIGxpc3RlbmVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICBUcmFuc2NvZGUgdGhlIGltYWdlcyBnaXZlbiB0aGUg
bGlzdCBvZiB0aGUgc2VsZWN0ZWQgZmlsZSBhbmQgdGhlIGFsbG93ZWQKKyAgICAgICAgTUlNRSB0
eXBlcy4gT25seSBzZWxlY3RlZCBmaWxlcyB3aG9zZSBNSU1FIHR5cGVzIGRvIG5vdCBleGlzdCBp
biB0aGUgYWxsb3dlZAorICAgICAgICBNSU1FIHR5cGVzIHdpbGwgYmUgdHJhbnNjb2RlZC4gUmln
aHQgbm93LCB0aGlzIG9ubHkgd2lsbCBhcHBseSB0byB0aGUgSEVJRgorICAgICAgICBpbWFnZXMg
b24gbWFjT1MuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMC0wNy0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBNb3ZlIGFsbW9zdCBhbGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyB0byBQbGF0Zm9ybUVuYWJsZUNvY29hLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2MGIzMmU0
NmZjNDI5MDgyM2E2MjliZGEzZWQyNzJhODNiNmFiNGE2Li5iZmU4NDEyOTZkM2M2ZDUyYThhOGFm
MTU1ZTZlOGVlOGY5MTIwMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDUsNyArMTQ1LDcgQEAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUg
cHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3Vm
Zml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9u
ID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFs
c2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGFjZWRmNWZkZDFiMmU3NjgyNGZmYTg5ZDRkY2Rm
NDBhYzFiMWI4N2QuLmRmZDgyMjU0MGVhNjJjNTdkNTAzYTUzNzZkYWNmN2RhZjBhMzQxOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTkzLDcgKzkzLDcgQEAg
U3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKICAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7
CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1G
aWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5k
bGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCkBAIC0xMTMsOSArMTEzLDEzIEBAIFN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiBwbGF0Zm9ybUZpbGVICiAgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0
ZjgoKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHBy
ZWZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhY
IiwgNik7CisgICAgCisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUgc3VmZml4LgorICAgIENT
dHJpbmcgc3VmZml4VXRmOCA9IHN1ZmZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGgu
YXBwZW5kKHN1ZmZpeFV0ZjguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1w
b3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7CiAKLSAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBt
a3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CisgICAgcGxhdGZvcm1GaWxlSGFuZGxl
ID0gbWtzdGVtcHModGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgp
KTsKICAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcAppbmRleCBlNGFiMDBmYmRhZDlmZmI3MWI1MDIyY2NlYzQxYzEwYjVjYTBmNWRm
Li5mYTBiNTMxZmUxMGZmNzRlYmFiODY1ZjNjYTA5MTVkYTFkOTU3NTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIFZlY3RvcjxTdHJp
bmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRl
cikKICAgICByZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdl
dCgpLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApp
bmRleCBjOWY1MDE0MzZhYmNjODA5NGU4NDE0ODBkMjFmZTM2YTQ3MWU4MWZmLi5iM2MwNDAxYjUw
NmZkY2UzMjMyZWQ2ZmVmYmJiZjBlNTJkMTAwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIGdldFZvbHVtZUZyZWVT
cGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CiAgICAgY29uc3QgY2hhciog
dG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cAppbmRleCA2NTlkZmQ1MjcyN2RjOWVmNjk5YjdmOTI0ZDVkMmU3MmQ4NGUwYWU3Li5iNjMxNDk1
NzNhNDg0MWZlNjAwMWVlZmFmZGQwMDkyY2ZjNzQxYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRl
bXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikK
ICAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3BlblRl
bXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCAyMTllZTE5NTk3
MTM0MjFlY2QwY2QyOWUyMmQ1YjE3YTU1NWYxODAzLi4yMzM3YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5
ODcxNThmZjIwMjM1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbWlt
ZVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBtaW1lVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+IGNy
ZWF0ZU1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IGY1ZGZlNDc1Nzk5NGM2
OWFlMzQyMGEzNTRkZjY4YzVhNjZhNjAxNTcuLjZiMmQ4MWUzNWIwOGNmNzRmNGYzNjFhZWJjNzRm
MzEyOWM3ZDliN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaApAQCAtNjYsNiArNjYsOCBAQCBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSk7CisKIHZvaWQgY2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCiBjbGFzcyBOYXRpdmVJ
bWFnZUhhbmRsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IDZmZDc3ZTlhOTdlYWRkZjc1MDM0ZmNlYjQ2MTQ1
ZTQ1MzA4ZDM2NzQuLmM4NmFlZTFhMjVjOTZiZjFkZDczNzBiMWZmYjkzMmUxOGE4MjA4MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwCkBAIC04NCw2ICs4NCwyNSBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0
UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElu
dFJlY3QmIHNvdXJjZSkKK3sKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisK
KyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlv
bi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkp
OworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworCisgICAgQ0dGbG9h
dCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0
b3I7CisgICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgp
KSAvIHNjYWxlRmFjdG9yOworCisgICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAt
IHNvdXJjZS54KCk7CisgICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0
aW9uLnkoKSArIHNvdXJjZS55KCk7CisKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0
LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFn
ZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Cit9CisK
IHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0ltYWdlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRp
bGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5NmE0NWExNTdmOGUzZjkzODI2MmIyMTNlMjYwMzcyMDVj
NTVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSW1hZ2VVdGls
aXRpZXMuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1ZlY3RvcjxTdHJpbmc+IHRyYW5zY29kZUltYWdlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2Vk
TUlNRVR5cGVzKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oCmluZGV4IGYxYzA1OWJiZjgyMjdiMDE3ZTQ4MzA3MDhkMjJkMjRkYjRkMDQwZGIuLjcyOTMx
MzIzOWQ1ZDVhMWI5YWYwOGFkN2Y0NTRkNmZiOTRlYWFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCkBAIC01Nyw2ICs1Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oSVBDKSBcCiAgICAg
TShJVFBEZWJ1ZykgXAogICAgIE0oSWNvbkRhdGFiYXNlKSBcCisgICAgTShJbWFnZXMpIFwKICAg
ICBNKEluY3JlbWVudGFsUERGKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERlZlcmJvc2UpIFwKICAg
ICBNKEluZGV4ZWREQikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9D
R1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwOGY2ZDVlZmI0YWFhODZiMTA0YTQ5
Yzk4NTVmMjA3MjViNjgwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQg
cGFpbnRJbWFnZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dJbWFnZVJlZiBpbWFnZSwgQ0dGbG9h
dCBzY2FsZUZhY3RvciwgQ0dQb2ludCBkZXN0aW5hdGlvbiwgQ0dSZWN0IHNvdXJjZSkKLXsKLSAg
ICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uLngsIGRlc3RpbmF0aW9uLnksIHNvdXJj
ZS5zaXplLndpZHRoLCBzb3VyY2Uuc2l6ZS5oZWlnaHQpKTsKLSAgICBDR0NvbnRleHRTY2FsZUNU
TShjb250ZXh0LCAxLCAtMSk7Ci0KLSAgICBDR0Zsb2F0IGltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChpbWFnZSkgLyBzY2FsZUZhY3RvcjsKLSAgICBDR0Zsb2F0IGltYWdlV2lkdGggPSBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UpIC8gc2NhbGVGYWN0b3I7Ci0KLSAgICBDR0Zsb2F0IGRlc3RY
ID0gZGVzdGluYXRpb24ueCAtIHNvdXJjZS5vcmlnaW4ueDsKLSAgICBDR0Zsb2F0IGRlc3RZID0g
LWltYWdlSGVpZ2h0IC0gZGVzdGluYXRpb24ueSArIHNvdXJjZS5vcmlnaW4ueTsKLQotICAgIENH
Q29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VX
aWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRl
KGNvbnRleHQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY2cvQ0dVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUxZDE4
MWE4ZmM3NTczYzkzMGNmYzYwM2IwZjQxNDI4NzQ3YjIyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRp
bGl0aWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBDR1V0aWxpdGllc19oCi0jZGVmaW5lIENHVXRpbGl0aWVzX2gKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXZvaWQgcGFpbnRJbWFnZShDR0NvbnRleHRSZWYsIENHSW1hZ2VSZWYsIENHRmxv
YXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24sIENHUmVjdCBzb3VyY2UpOwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIENHVXRpbGl0aWVzX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEw
MjhlNTA4MGVjYWMzMDYyODBiYmYwZmNlNjliM2YzZTg2YWM4YjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC0wLDAg
KzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklt
YWdlVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8SW1hZ2VJ
Ty9JbWFnZUlPLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyBTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQoreworICAgIEFTU0VSVChtaW1lVHlwZS5zdGFydHNXaXRoKCJpbWFn
ZS8iX3MpKTsKKworICAgIC8vIFRoaXMgZnVuY3Rpb24gdHJhbnNjb2RlcyBmaWxlcyBvbmx5Lgor
ICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkocGF0aCwgRmlsZVN5c3RlbTo6U2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmco
KTsKKworICAgIC8vIEVuc3VyZSB0aGUgJ3BhdGgnIGlzIGFjdHVhbGx5IGFuIGltYWdlIGZpbGUu
CisgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwgbnVsbHB0cikpOworICAg
IGlmICghc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAgLy8gRW5z
dXJlIHRoZSBmb3JtYXQgb2YgdGhlIGltYWdlIHNvdXJjZSBpcyBkaWZmZXJlbnQgZnJvbSAnbWlt
ZVR5cGUnLgorICAgIGF1dG8gc291cmNlVVRJID0gU3RyaW5nKENHSW1hZ2VTb3VyY2VHZXRUeXBl
KHNvdXJjZS5nZXQoKSkpOworICAgIGF1dG8gcmVwbGFjZW1lbnRVVEkgPSBXZWJDb3JlOjpVVElG
cm9tTUlNRVR5cGUobWltZVR5cGUpOworICAgIGlmIChzb3VyY2VVVEkgPT0gcmVwbGFjZW1lbnRV
VEkpCisgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisKKyAgICAvLyBUaGUgZmlsZSBleHRl
bnNpb24gaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgcmV2ZWFscyB0aGUgTUlNRSB0eXBlIG9mIHRo
ZSB0ZW1wb3JhcnkgZmlsZS4KKyAgICBhdXRvIHN1ZmZpeCA9IG1ha2VTdHJpbmcoJy4nLCBXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1l
VHlwZSkpOworCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHJlcGxhY2VtZW50
RmlsZUhhbmRsZTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBJbWFnZSJfcywgcmVwbGFjZW1lbnRGaWxlSGFuZGxlLCBzdWZm
aXgpOworICAgIGlmIChyZXBsYWNlbWVudEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJbWFnZXMs
ICJ0cmFuc2NvZGVJbWFnZTogUmVwbGFjZW1lbnQgaW1hZ2UgY291bGQgbm90IGJlIGNyZWF0ZWQ6
ICVzICVzXG4iLCBwYXRoLnV0ZjgoKS5kYXRhKCksIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworICAgIH0KKworICAgIENHRGF0YUNvbnN1bWVy
Q2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKKyAgICAgICAgW10odm9pZCogaW5mbywgY29uc3Qgdm9p
ZCogYnVmZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7CisgICAgICAgICAgICBhdXRvIGhh
bmRsZSA9ICpzdGF0aWNfY2FzdDxGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUqPihpbmZv
KTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBjb3VudCk7CisgICAgICAgIH0sCisgICAg
ICAgIG51bGxwdHIKKyAgICB9OworCisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRh
Q29uc3VtZXJDcmVhdGUoJnJlcGxhY2VtZW50RmlsZUhhbmRsZSwgJmNhbGxiYWNrcykpOworICAg
IGF1dG8gcmVwbGFjZW1lbnQgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhE
YXRhQ29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHJlcGxhY2VtZW50VVRJLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDEsIG51bGxwdHIpKTsKKworICAgIC8vIFdyaXRlIHRoZSBzb3VyY2UgaW1hZ2Ug
dG8gdGhlIHJlcGxhY2VtZW50IGltYWdlLgorICAgIHNpemVfdCBpbmRleCA9IENHSW1hZ2VTb3Vy
Y2VHZXRQcmltYXJ5SW1hZ2VJbmRleChzb3VyY2UuZ2V0KCkpOworICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkFkZEltYWdlRnJvbVNvdXJjZShyZXBsYWNlbWVudC5nZXQoKSwgc291cmNlLmdldCgpLCBp
bmRleCwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUocmVwbGFjZW1l
bnQuZ2V0KCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXBsYWNlbWVudEZpbGVIYW5k
bGUpOworCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aDsKK30KKworVmVjdG9yPFN0cmluZz4g
dHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCit7CisgICAgU3RyaW5nIG1pbWVUeXBlRm9yRW5j
b2RpbmcgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcoYWxsb3dlZE1JTUVUeXBlcywgeyB9KTsKKyAgICBpZiAobWltZVR5cGVGb3JF
bmNvZGluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxTdHJp
bmc+IHJlcGxhY2VtZW50UGF0aHM7CisgICAgcmVwbGFjZW1lbnRQYXRocy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHBhdGhzLnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIHBhdGggOiBwYXRocykg
eworICAgICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5jb250YWlucyhXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocGF0aCkpKQorICAgICAgICAgICAgcmVwbGFjZW1l
bnRQYXRocy51bmNoZWNrZWRBcHBlbmQobnVsbFN0cmluZygpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy51bmNoZWNrZWRBcHBlbmQodHJhbnNjb2RlSW1hZ2Uo
cGF0aCwgbWltZVR5cGVGb3JFbmNvZGluZykpOworICAgIH0KKworICAgIHJldHVybiByZXBsYWNl
bWVudFBhdGhzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA1YzRjMzYyMDBkY2E2YWQ1ZGQw
ZTRkZmY3NjIxOTlmOWNkY2JjNDBjLi43MzBkYTY0OGYyYjJmZTllNzg0ZmQwNDA1MmUxOTBmMGQw
YmYyMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRt
YXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1h
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3Vy
ZmFjZVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlICJDR1V0aWxp
dGllcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtMTA2LDEyICsxMDYsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogCiB2b2lkIFNoYXJlYWJsZUJp
dG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBwYWludElt
YWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1ha2VDR0ltYWdlQ29weSgpLmdldCgpLCAx
LCBkZXN0aW5hdGlvbiwgc291cmNlKTsKKyAgICBkcmF3TmF0aXZlSW1hZ2UobWFrZUNHSW1hZ2VD
b3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiB2b2lkIFNoYXJl
YWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2UpCiB7Ci0gICAgcGFpbnRJbWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBt
YWtlQ0dJbWFnZUNvcHkoKS5nZXQoKSwgc2NhbGVGYWN0b3IsIGRlc3RpbmF0aW9uLCBzb3VyY2Up
OworICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwgc2NhbGVG
YWN0b3IsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
U2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IGFiNjJhOTQwNDkyMTg3ZGY1OGZiNjE1MjMzZTIyMDRjMDU0NzBkZTYuLmMwMzBmYWNmYzgy
ODMyYzNmYTc2ZDBmYWRmZTgxOTY1NjNkNTI4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTY1LDcgKzY1LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0K
IAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKLVBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNw
cAorUGxhdGZvcm0vY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKIAogUGxhdGZvcm0vY2xhc3NpZmll
ci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAogUGxhdGZv
cm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVy
c1JlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFt
ZXRlcnNSZWYuY3BwCmluZGV4IGFmYWY2ZTQ4YmMzNmE5NTc3MmMxM2U1N2MyYjJhODJkMThkZDM0
NzQuLmZhMDYzMjA2MThhNDZlOTFkODI3ZDUwNjcwYzIwNWMxNzE3NmIzYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUmVmLmNwcApAQCAtNTgsNiArNTgsMTEgQEAgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBhcmFt
ZXRlcnNDb3B5QWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5lbFBhcmFtZXRlcnMKICAg
ICByZXR1cm4gdG9BUEkoJnRvSW1wbChwYXJhbWV0ZXJzUmVmKS0+YWNjZXB0RmlsZUV4dGVuc2lv
bnMoKS5sZWFrUmVmKCkpOwogfQogCitXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlBbGxvd2VkTUlNRVR5cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzUmVm
KQoreworICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhcmFtZXRlcnNSZWYpLT5hbGxvd2VkTUlN
RVR5cGVzKCkubGVha1JlZigpKTsKK30KKwogLy8gRGVwcmVjYXRlZC4KIFdLU3RyaW5nUmVmIFdL
T3BlblBhbmVsUGFyYW1ldGVyc0NvcHlDYXB0dXJlKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzUmVmLmgKaW5kZXggMDU5ZjdjZmMwNjFlZmM0YmVlZmY1OTEzMmUwZTZmNDlk
OTBmZmM2OC4uN2QxMzI5ODRiYTc1Njc2ZjU2NGNhY2YwNDY5ZGQxOWU2ODM0ZjVjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzUmVmLmgKQEAgLTQ1LDYgKzQ1LDggQEAgV0tfRVhQT1JUIGJvb2wgV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnMKIFdL
X0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBY2NlcHRlZE1JTUVU
eXBlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CiBXS19FWFBPUlQgV0tB
cnJheVJlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyhX
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CiAKK1dLX0VYUE9SVCBXS0FycmF5
UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKFdLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKKwogLyogREVQUkVDQVRFRCAtIFBsZWFzZSB1c2Ug
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0Q2FwdHVyZUVuYWJsZWQoKSBpbnN0ZWFkLiAqLwogV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlDYXB0dXJlKFdLT3Bl
blBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcApp
bmRleCAyYjM5NGZjOGJkYTc0MjE3YzE3MzUxMjc2MzY1NjU5OGE0Yjg0MmI5Li5iNjExODgxNzE4
ODUyYjUwMzU5ODRmMzUwNzAyZjE3OTFhMmVlZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcApA
QCAtNjMsOSArNjMsOSBAQCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VNZWRp
YUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdAogfQogI2VuZGlmCiAKLXZv
aWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVSTHNSZWYpCit2b2lkIFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVmLCBXS0FycmF5UmVmIGFs
bG93ZWRNaW1lVHlwZXNSZWYpCiB7Ci0gICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmls
ZXMoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNSZWYpKSk7CisgICAgdG9J
bXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKCp0b0lt
cGwoZmlsZVVSTHNSZWYpKSwgdG9JbXBsKGFsbG93ZWRNaW1lVHlwZXNSZWYpLT50b1N0cmluZ1Zl
Y3RvcigpKTsKIH0KIAogdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKFdLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKaW5k
ZXggNjk5OTc2ZmFhMmFkZGU0NzhjZWY2YzRlMWIwZmVmODQ1MDk4YWVhOC4uYWFiYmUxOWQ3MjJl
ZjY0MTQyNmNjMTU5MWEzNTZiYTA3MzQ0ZDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaApAQCAtMzUs
NyArMzUsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyR2V0VHlwZUlEKHZvaWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyQ2hvb3NlTWVkaWFGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVmLCBXS1N0cmluZ1JlZiBkaXNw
bGF5U3RyaW5nLCBXS0RhdGFSZWYgaWNvbkltYWdlRGF0YVJlZik7Ci1XS19FWFBPUlQgdm9pZCBX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcyk7CitXS19FWFBPUlQgdm9pZCBX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcywgV0tBcnJheVJlZiBhbGxvd2Vk
TWltZVR5cGVzUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJD
YW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
MWQxMmE1ODBlNWEwNDk1ZWY2YWVhNWFkMzI3N2I4NzViZTdiZTgxOC4uY2I2NWQ3ZTlkOTg4ZjVk
NTc1MTViYTNlMzlhOGEwYzdkN2ExYTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZy
YW1lSW5mb0RhdGEuaCIKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkxl
Z2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCkBAIC02NjkwLDE3ICs2NjkxLDI3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25z
dCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93
ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byByZXBsYWNlbWVudFVSTHMgPSB0
cmFuc2NvZGVJbWFnZXMoZmlsZVVSTHMsIGFsbG93ZWRNSU1FVHlwZXMpOworI2Vsc2UKKyAgICBW
ZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHM7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWRN
SU1FVHlwZXMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAg
IGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVS
ZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9w
ZW5QYW5lbCJfcywgZmlsZVVSTHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHNhbmRib3hFeHRlbnNp
b25GaWxlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZpbGVVUkxzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFwcGVuZChpIDwg
cmVwbGFjZW1lbnRVUkxzLnNpemUoKSAmJiAhcmVwbGFjZW1lbnRVUkxzW2ldLmlzTnVsbCgpID8g
cmVwbGFjZW1lbnRVUkxzW2ldIDogZmlsZVVSTHNbaV0pOworICAgIGF1dG8gc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JG
aWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgc2FuZGJv
eEV4dGVuc2lvbkZpbGVzKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5k
Ym94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMp
KSk7CiAjZW5kaWYKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGZpbGVVUkxzLCB7IH0pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgcmVwbGFjZW1lbnRVUkxzKSk7
CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9v
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Yzk0OGFjYzMxYzU5MmNmMmRhNzli
Y2QzZDkxMTA3YTkwYmI5NDgyLi41M2Q3Zjg1NGYyY2ExOGQ0Mzk0ZDMxNjMxMTdlODdmMTIxNjRi
MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI5MCw3ICsyOTAsNyBAQAogCQkxQTlGQkE4RDEzRkYwNEU2MDBERUVENjcgLyogUGx1
Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTlGQkE4QzEzRkYwNEU2MDBERUVENjcgLyogUGx1Z2luQ29tcGxl
eFRleHRJbnB1dFN0YXRlLmggKi87IH07CiAJCTFBQTEzMjEyMTkxRDU5MjQwMDlDMTQ4OSAvKiBX
S05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTEzMjExMTkxRDU5MjQwMDlDMTQ4OSAvKiBXS05hdmlnYXRp
b25SZXNwb25zZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxQUEyMEQ1MTE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUEyMEQ1MDE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MUFBMkU1MUQxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYg
LyogQ0dVdGlsaXRpZXMuaCAqLzsgfTsKKwkJMUFBMkU1MUQxMkU0QzA1RTAwQkM0OTY2IC8qIElt
YWdlVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCAqLzsgfTsK
IAkJMUFBMkU1NjcxOEQ3NzUwODAwMzgxNEJEIC8qIFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTJF
NTY1MThENzc1MDgwMDM4MTRCRCAvKiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLmggKi87
IH07CiAJCTFBQTNENzVDMTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEzRDc1QTE2
NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5oICovOyB9OwogCQkxQUE0MTdD
QjEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0
Q2hlY2tlci5oICovOyB9OwpAQCAtMjUwOSw4ICsyNTA5LDggQEAKIAkJMUFBMUNDNUMxMDBGQTFB
MTAwNzhERUJDIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFy
dHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0
ekNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkxQUExQ0Qw
NjEwMEZBMUJBMDA3OERFQkMgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
Q2FyYm9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTFBQTIwRDUwMThB
RDUwRTAwMDVEMUVENCAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQTJFNTFCMTJFNEMwNUUwMEJDNDk2NiAvKiBD
R1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDR1V0aWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUEyRTUxQzEyRTRDMDVFMDBCQzQ5
NjYgLyogQ0dVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ0dVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUEyRTUx
QjEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUFBMkU1MUMxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0aWVzQ0cuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VVdGlsaXRpZXNDRy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTJFNTY0MThENzc1MDgwMDM4MTRCRCAv
KiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBMkU1NjUxOEQ3NzUwODAwMzgxNEJEIC8qIFdLV2Vi
UHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUEzRDc1OTE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUxheWVyVHJl
ZUhvc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTQ4LDggKzU5NDgsNyBA
QAogCQkxQUEyRTUxQTEyRTRDMDU2MDBCQzQ5NjYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2NiAvKiBD
R1V0aWxpdGllcy5jcHAgKi8sCi0JCQkJMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRp
bGl0aWVzLmggKi8sCisJCQkJMUFBMkU1MUMxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0
aWVzQ0cuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC05NTc1LDYgKzk1NzQsNyBAQAogCQkJCTUxQjE1QTdEMTM4NDM5QjIwMDMyMUFE
OCAvKiB1bml4ICovLAogCQkJCUVDQTY4MEQzMUU2OTA0QjUwMDczMUQyMCAvKiBFeHRyYVByaXZh
dGVTeW1ib2xzRm9yVEFQSS5oICovLAogCQkJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBF
eHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8sCisJCQkJMUFBMkU1MUIxMkU0QzA1RTAwQkM0
OTY2IC8qIEltYWdlVXRpbGl0aWVzLmggKi8sCiAJCQkJNTFBN0YyRjQxMjVCRjhENDAwOEFFQjFE
IC8qIExvZ2dpbmcuY3BwICovLAogCQkJCTUxQTdGMkYyMTI1QkY4MjAwMDhBRUIxRCAvKiBMb2dn
aW5nLmggKi8sCiAJCQkJMEZEQ0Q3RjYxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0
aW9uLmggKi8sCkBAIC0xMDc1NCw3ICsxMDc1NCw2IEBACiAJCQkJNDE4OTdFRDgxRjQxNUQ4QTAw
MTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQUJE
MkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTg5N0VEQTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFBMkU1MUQxMkU0QzA1RTAwQkM0OTY2
IC8qIENHVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I0QjQ2MDIwQjUwNEFDMDBE
NEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjRGRTBBM0IyNDYzMkI2MDAwMjYzMUUxIC8qIENvY29hQ29sb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ0ODI3MzQ3MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUlt
YWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwODMzLDYgKzEwODMyLDcgQEAKIAkJCQk1MUMwQzk3
NDFEREQ3NjAwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFFMzUxQ0IxODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNDRjZCMjUxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMUFBMkU1MUQxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1w
b3J0YW5jZUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMDRFRTMxMUM4M0U5ODAw
OEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VFN0RDNTEy
OEI2NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA5YjVl
YzBhZDUxNDU4M2I4ZjM1M2E4YWYwYThiNjg2NzJhMGUwOGEuLjkwOTQ0YjYxYmUzNTIzMDI1ZDJm
Mjg2ZjU3NWI4ZWRlZDA3NmYzZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0wNiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IEEgSEVJ
RiBpbWFnZSwgc2VsZWN0ZWQgZnJvbSB0aGUgT3BlblBhbmVsLCBzaG91bGQgYmUgY29udmVydGVk
IHRvIGFuIGFjY2VwdGVkIE1JTUUgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1ODQ2
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpydW5PcGVu
UGFuZWwpOgorCiAyMDIwLTA3LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIE1vdmUgYWxtb3N0IGFsbCBmZWF0dXJlcyBmcm9tIEZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIHRvIFBsYXRmb3JtRW5hYmxlQ29jb2EuaApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAyYmQ3OTE4NjI2YzA4ZjQzYzdmMzRmYmM2ZmM3
OTkzMDU5YTMyYWQ5Li44ZjgyNTA5OTcyZWE4YTEyYzQ5ZWYwNGViYzMwNTkzNjllYzc0Y2EwIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjIzLDEyICsy
MjMsMTQgQEAgc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnMKICAgICB9CiAjZW5kaWYKIAorICAgIFdL
QXJyYXlSZWYgYWxsb3dlZE1pbWVUeXBlcyA9IFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxv
d2VkTUlNRVR5cGVzKHBhcmFtZXRlcnMpOworCiAgICAgaWYgKFdLT3BlblBhbmVsUGFyYW1ldGVy
c0dldEFsbG93c011bHRpcGxlRmlsZXMocGFyYW1ldGVycykpIHsKLSAgICAgICAgV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVyUmVmLCBmaWxlVVJMcyk7
CisgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0
ZW5lclJlZiwgZmlsZVVSTHMsIGFsbG93ZWRNaW1lVHlwZXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExp
c3RlbmVyUmVmLCBhZG9wdFdLKFdLQXJyYXlDcmVhdGUoJmZpcnN0SXRlbSwgMSkpLmdldCgpKTsK
KyAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJS
ZWYsIGFkb3B0V0soV0tBcnJheUNyZWF0ZSgmZmlyc3RJdGVtLCAxKSkuZ2V0KCksIGFsbG93ZWRN
aW1lVHlwZXMpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChXS1BhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxN2QzMGUzZDc2NTc4ZjE5YmMy
NmNhNTg4YTJiNmE2MWIwODI1MjU4Li5lNzU5YzQ4ODdiYmFjZTg4NmJkNzMwZTA4ODlhYzZhZTFm
ZmEwYzBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYg
aW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0
byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJl
IHRoZSBIRUlGIGltYWdlIGlzIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUgd2hl
biBpdCBpcyAKKyAgICAgICAgc2VsZWN0ZWQgZnJvbSB0aGUgT3BlblBhbmVsIGFuZCB0aGUgJ2Fj
Y2VwdCcgYXR0cmlidXRlIG9mIHRoZSA8aW5wdXQ+CisgICAgICAgIGRvZXMgYWxsb3cgdGhlIEhF
SUYgTUlNRSB0eXBlLgorCisgICAgICAgIE5vIG5lZWQgdG8gdGVzdCB0aGlzIGZ1bmN0aW9uYWxp
dHkgb24gV0sxIHNpbmNlIHRoZSBpbWFnZSB0cmFuc2NvZGluZyAKKyAgICAgICAgc2hvdWxkIGhh
cHBlbiBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1v
cGVuLXBhbmVsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxl
L2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Bl
bi1wYW5lbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00
MDB4NDAwLmhlaWM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAyMC0wNy0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24g
cmVtb3RlIHZpZGVvIHRyYWNrcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzJiM2Q4ODZlODMyNjY0
NTM3NDA0MWMyOTczMDEzOGJhYzJhNzc3Zi4uMmU3NjU1ZDc5ZDFjNDlmMmExNjhmN2RkNjMwY2Iz
YzI4NTM3MTM4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC04NjYsNiArODY2LDggQEAgaHR0cC93
cHQvY3Jvc3Mtb3JpZ2luLXJlc291cmNlLXBvbGljeS8gWyBTa2lwIF0KIAogIyB0ZXN0UnVubmVy
LnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkgb25seSB3b3JrcyBpbiBXZWJLaXQyCiBmYXN0L2Zp
bGVzL2Jsb2ItbmV0d29yay1wcm9jZXNzLWNyYXNoLmh0bWwgWyBTa2lwIF0KK2Zhc3QvZm9ybXMv
ZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgU2tpcCBd
CitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFu
ZWwuaHRtbCBbIFNraXAgXQogCiAjIFRoaXMgdGVzdCBpcyBjdXJyZW50bHkgb25seSByZWxldmFu
dCBvbiBtYWMtd2syCiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1vbi1kaXNwbGF5
LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFn
ZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk1ZWE4
NjA4ZjA4MjBlZDE0NmNmMDg4NTZlNjY4NDk4NGRiMDAxZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUt
b3Blbi1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorT1BFTiBGSUxFIFBBTkVM
CitUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFj
Y2VwdHMgSEVJQywgd2lsbCBub3QgYmUgY29udmVydGVkIHRvIGFueSBzdXBwb3J0ZWQgTUlNRSB0
eXBlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBmaWxlTGlzdC5sZW5n
dGggaXMgMQorUEFTUyBmaWxlLnR5cGUgaXMgImltYWdlL2hlaWMiCitQQVNTIGZpbGUuc2l6ZSBp
cyBub24temVyby4KK0ltYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuCitQQVNTIGltZy53aWR0aCBp
cyBub3QgNDAwCitQQVNTIGltZy5oZWlnaHQgaXMgbm90IDQwMAorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBh
bmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Ut
bm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzU0MmVkZDc3NDQ0MzRi
ZGRhZDVhNTMzYjI5YmExY2JhMGM2ZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVs
Lmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGFjY2Vw
dD0iLmhlaWMiIG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9pbnB1dD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlhIHRo
ZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIEhFSUMsIHdpbGwgbm90IGJlIGNvbnZlcnRlZCB0
byBhbnkgc3VwcG9ydGVkIE1JTUUgdHlwZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0T3BlblBhbmVsRmlsZXMoWydyZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQw
MHg0MDAuaGVpYyddKTsKKworICAgICAgICAgICAgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07CisgICAgICAgICAgICBVSUhlbHBlci5hY3Rp
dmF0ZUF0KGlucHV0RWxlbWVudC5vZmZzZXRMZWZ0ICsgaW5wdXRFbGVtZW50Lm9mZnNldFdpZHRo
IC8gMiwKKyAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQub2Zmc2V0VG9wICsgaW5wdXRFbGVt
ZW50Lm9mZnNldEhlaWdodCAvIDIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hh
bmdlZChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZUxpc3QgPSBldmVudC50YXJn
ZXQuZmlsZXM7CisgICAgICAgICAgICBzaG91bGRCZSgiZmlsZUxpc3QubGVuZ3RoIiwgIjEiKTsK
KworICAgICAgICAgICAgZmlsZSA9IGZpbGVMaXN0WzBdOworICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJmaWxlLnR5cGUiLCAiaW1hZ2UvaGVpYyIpOworICAgICAgICAgICAgc2hv
dWxkQmVOb25aZXJvKCJmaWxlLnNpemUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGltZyk7CisKKyAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwor
ICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpbWcu
b25sb2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2Ugd2FzIGxv
YWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImltZy53aWR0aCIsICI0MDAi
KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImltZy5oZWlnaHQiLCAiNDAwIik7Cisg
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGRlYnVnKCJJbWFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiIpOworICAgICAgICAgICAgICAgICAg
ICBzaG91bGROb3RCZSgiaW1nLndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBz
aG91bGROb3RCZSgiaW1nLmhlaWdodCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcuc3Jj
ID0gcmVhZGVyLnJlc3VsdDsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICByZWFkZXIucmVh
ZEFzRGF0YVVSTChmaWxlKTsKKyAgICAgICAgfQorICAgICAgICBydW5UZXN0KCk7CisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5z
Y29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTE0NjBiYWI4OGMzZmM2
MjJmNmZiM2ExNjA2NzkyNjczNDM0YWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitPUEVOIEZJTEUgUEFORUwKK1Rlc3RzIGEgSEVJ
QyBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBQTkcsIHdp
bGwgYmUgY29udmVydGVkIHRvIGEgUE5HIGltYWdlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBmaWxlTGlzdC5sZW5ndGggaXMgMQorUEFTUyBmaWxlLnR5cGUgaXMgImlt
YWdlL3BuZyIKK1BBU1MgZmlsZS5zaXplIGlzIG5vbi16ZXJvLgorSW1hZ2Ugd2FzIGxvYWRlZC4K
K1BBU1MgaW1nLndpZHRoIGlzIDQwMAorUEFTUyBpbWcuaGVpZ2h0IGlzIDQwMAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1v
cGVuLXBhbmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
aW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTVhMjlhNzNiODM1
YTUxMmIzNjJhYWIzMjNmZmY4YjliYmU3MzZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVs
Lmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGFjY2Vw
dD0iLnBuZyIgb25jaGFuZ2U9ImNoYW5nZWQoZXZlbnQpIj48L2lucHV0PgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhl
IGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgUE5HLCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIFBO
RyBpbWFnZS4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0T3Bl
blBhbmVsRmlsZXMoWydyZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVpYyddKTsKKwor
ICAgICAgICAgICAgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2lucHV0JylbMF07CisgICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGlucHV0RWxlbWVu
dC5vZmZzZXRMZWZ0ICsgaW5wdXRFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAgICAg
ICAgICBpbnB1dEVsZW1lbnQub2Zmc2V0VG9wICsgaW5wdXRFbGVtZW50Lm9mZnNldEhlaWdodCAv
IDIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hhbmdlZChldmVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7CisgICAgICAg
ICAgICBzaG91bGRCZSgiZmlsZUxpc3QubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgZmls
ZSA9IGZpbGVMaXN0WzBdOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxl
LnR5cGUiLCAiaW1hZ2UvcG5nIik7CisgICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZpbGUu
c2l6ZSIpOworCisgICAgICAgICAgICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWci
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgICAg
ICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFkZXIu
b25sb2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGRlYnVnKCJJbWFnZSB3YXMgbG9hZGVkLiIpOworICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiaW1nLndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiaW1nLmhlaWdodCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcu
b25lcnJvciA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIGNvdWxk
IG5vdCBiZSBsb2FkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJpbWcu
d2lkdGgiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJpbWcuaGVp
Z2h0IiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVzdWx0Owor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwor
ICAgICAgICB9CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFw
aS9yZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVpYyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVp
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43Y2Y4NTlkOGRhMWRmMTE2MjU0ZGE2MzkzNTU5ZTU5ZTk2OWNhN2I2CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MTAKemNtWWpPT0tUSFI2aDNFVzhkRGxsUSEzVCFCNGBq
UGgxISpfWSY1QWwjZlp7SHdYMX1nM0F2YXQqWGdMTzIofkVKCnpnJHJLYDdoU3skREVPY1lIekc9
UEZBQ34hc1AwXzI9KXd9ZUduMkYpPUh2VSQ+KXlITjVZaEgoSUh6bCNhdEoydQp6dExpOGJ6d29g
VkF+RCRSbnArUUlOdS1xJWNKdjE0VHk/JCpaPGlaKiFlUmBoRShZfiVUY0A9T2Vkc3VJUHtrY1kK
ejF8cit3Y3B7eyRjRkRtWFl6QTNNIyVFUEBAU3hoZkE/PiZgNHc0KypeO3pqYXF3VGZRUDZJckxh
fCtDNSRZcD9OCno+Xko+Z1V0MSZVSEpqKWQkYTlLWUVoI1hpIWp4fXB4Y2Q9dWR5YTZfYENwPSR4
fEpBVGRZaFpERkJ+dzgjOGN4agp6Pk19KU1zcX4lYnxDUHopPzdyZ05wKi0mQ1MyTmxKIX12fU4+
UStHYDhyeFFfV3xnR09XSEpkRlB9PVh6OFNrKGIKempPIU17IT5abmhSI0tEISR0VkcxM2Z6Ylcy
OUxrTnlDRTZodCtaRmRjbXlUbFMoUXBPMVRSU3o0Xm8lWjBmJV8hCnpoQ2EmczxrNSZAektlP0ZV
YTJfPWgjZCNTa0QyZT9xJUg3djBBK3Y8UFpuJCZUbk1+TT0oKlg7RHkoSVgqYC1zRwp6Smh6dSRF
cSVFMXtYemE/X1MkO3l5VmxxRFU7YSM4b3RgfVg+Rm1xcSRuNm9iJkxuPTBuJn5JMiZuRChtRTlx
c2QKaSUlbVVsX2k0Y0BONllBV3hFTHtodkZsQW9XJWpwfkcySXFEJjtKMV9SKE5VdgoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGY1NTAzZjhhOGZjOGEyOTA2NTE4NGQ2MWYxMzgzZTBiMTM3ZmI3Nzku
LjI3NTE1YjNkNzAzMzNkN2VhM2ZmOTk1MWIwMjY1Mjg5YWNlYTFhYjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg1LDYgKzg1LDkgQEAg
ZmFzdC9ldmVudHMvaW5hY3RpdmUtd2luZG93LW5vLW1vdXNlLWV2ZW50Lmh0bWwgWyBQYXNzIF0K
IAogZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtaW4tdHdvLXBhZ2VzLmh0
bWwgWyBQYXNzIF0KIAorZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0KK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9p
bWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCisKICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9y
aWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403629</attachid>
            <date>2020-07-06 15:47:09 -0700</date>
            <delta_ts>2020-07-07 12:04:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200706154708.patch</filename>
            <type>text/plain</type>
            <size>49045</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTBjM2FiMjFiZTgwMWVhYTBjNmI3
NmMzOTlkODQxNzU2ZTYzMzEuLmVkOTM4NzEzZjhkNzU4NDVjZTgxZmU5ZWVjOTU5NTRkMDU2ODU2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2Us
IHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBh
Y2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYSBzdWZm
aXggdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIFRoZSBnb2FsIGlz
IHRvCisgICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbWFnZSBm
aWxlcyB3aXRoIHZhbGlkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5o
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFy
eUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAtMDctMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIGFsbW9zdCBldmVyeXRoaW5nIGZyb20gRmVh
dHVyZURlZmluZXMueGNjb25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggODhlM2ExN2IxZjc2NGZjMzMxOGQxMWM0ZjZlZjZiMDJiYmI3ZDNlZi4uZmFiZDU4YTlhYmNm
YjhkZWZjYThjZDdjMDA3YjEwODZiZmUxODY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgW21hY09TXTogQSBIRUlGIGltYWdlLCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVu
UGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
aW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OgorICAgICAgICBNb3ZlZCBmcm9tIHBhaW50SW1hZ2UoKSBpbiBXZWJLaXQuCisKIDIwMjAtMDct
MDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTW92
ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMueGNjb25maWcgdG8gUGxh
dGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkY2Q1ZWFjYjkzMzJlZTQwMzkzODVjZjA0
NDg0MDk5YWRjZjgzMGQuLmU2ZDVlYWNmMTRhNTBjOWRjODI5YTljMzhhZjk2NTRiMTZjZjA4ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1h
Z2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBh
biBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuICAgICAgICAKKworICAgICAgICAq
IFBsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NnL0NHVXRpbGl0aWVzLmguCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgor
ICAgICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBQbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1hZ2VzKToK
KyAgICAgICAgSW1wbGVtZW50IGEgZnVuY3Rpb24gdGhhdCB0cmFuc2NvZGVzIGltYWdlcyBhbW9u
ZyBhIHNldCBvZiBmaWxlcyBnaXZlbgorICAgICAgICB0aGUgYWxsb3dlZE1JTUVUeXBlcy4gVGhl
IGRlc3RpbmF0aW9uIE1JTUUgdHlwZSBvZiB0aGVzZSBpbWFnZXMgaXMgdGhlCisgICAgICAgIGZp
cnN0IE1JTUUgdHlwZSBpbiB0aGUgYWxsb3dlZE1JTUVUeXBlcyB3aGljaCBDRyBzdXBwb3J0cyBl
bmNvZGluZyB0by4KKworICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cGFpbnQpOgorICAgICAgICBDYWxs
IGRyYXdOYXRpdmVJbWFnZSgpIGFmdGVyIHJlbmFtaW5nIHBhaW50SW1hZ2UoKSB0byBkcmF3TmF0
aXZlSW1hZ2UoKS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcDoKKyAgICAgICAgKFdL
T3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOgorICAgICAgICBUcmFuc2ZlciB0aGUgbGlz
dCBvZiB0aGUgYWxsb3dlZCBNSU1FIHR5cGVzIGZyb20gdGhlIE9wZW5QYW5lbCB0byB0aGUKKyAg
ICAgICAgZmlsZSBjaG9vc2VyIGxpc3RlbmVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICBUcmFuc2NvZGUgdGhlIGltYWdlcyBnaXZlbiB0aGUg
bGlzdCBvZiB0aGUgc2VsZWN0ZWQgZmlsZSBhbmQgdGhlIGFsbG93ZWQKKyAgICAgICAgTUlNRSB0
eXBlcy4gT25seSBzZWxlY3RlZCBmaWxlcyB3aG9zZSBNSU1FIHR5cGVzIGRvIG5vdCBleGlzdCBp
biB0aGUgYWxsb3dlZAorICAgICAgICBNSU1FIHR5cGVzIHdpbGwgYmUgdHJhbnNjb2RlZC4gUmln
aHQgbm93LCB0aGlzIG9ubHkgd2lsbCBhcHBseSB0byB0aGUgSEVJRgorICAgICAgICBpbWFnZXMg
b24gbWFjT1MuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMC0wNy0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBNb3ZlIGFsbW9zdCBhbGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyB0byBQbGF0Zm9ybUVuYWJsZUNvY29hLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2MGIzMmU0
NmZjNDI5MDgyM2E2MjliZGEzZWQyNzJhODNiNmFiNGE2Li5iZmU4NDEyOTZkM2M2ZDUyYThhOGFm
MTU1ZTZlOGVlOGY5MTIwMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDUsNyArMTQ1LDcgQEAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUg
cHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3Vm
Zml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9u
ID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFs
c2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGFjZWRmNWZkZDFiMmU3NjgyNGZmYTg5ZDRkY2Rm
NDBhYzFiMWI4N2QuLmRmZDgyMjU0MGVhNjJjNTdkNTAzYTUzNzZkYWNmN2RhZjBhMzQxOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTkzLDcgKzkzLDcgQEAg
U3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKICAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7
CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZvcm1G
aWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVIYW5k
bGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCkBAIC0xMTMsOSArMTEzLDEzIEBAIFN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiBwbGF0Zm9ybUZpbGVICiAgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4LnV0
ZjgoKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCksIHBy
ZWZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhYWFhY
IiwgNik7CisgICAgCisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUgc3VmZml4LgorICAgIENT
dHJpbmcgc3VmZml4VXRmOCA9IHN1ZmZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGgu
YXBwZW5kKHN1ZmZpeFV0ZjguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0ZW1w
b3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7CiAKLSAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBt
a3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CisgICAgcGxhdGZvcm1GaWxlSGFuZGxl
ID0gbWtzdGVtcHModGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgp
KTsKICAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcAppbmRleCBlNGFiMDBmYmRhZDlmZmI3MWI1MDIyY2NlYzQxYzEwYjVjYTBmNWRm
Li5mYTBiNTMxZmUxMGZmNzRlYmFiODY1ZjNjYTA5MTVkYTFkOTU3NTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIFZlY3RvcjxTdHJp
bmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRl
cikKICAgICByZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5h
bWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdl
dCgpLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApp
bmRleCBjOWY1MDE0MzZhYmNjODA5NGU4NDE0ODBkMjFmZTM2YTQ3MWU4MWZmLi5iM2MwNDAxYjUw
NmZkY2UzMjMyZWQ2ZmVmYmJiZjBlNTJkMTAwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIGdldFZvbHVtZUZyZWVT
cGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVm
aXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CiAgICAgY29uc3QgY2hhciog
dG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cAppbmRleCA2NTlkZmQ1MjcyN2RjOWVmNjk5YjdmOTI0ZDVkMmU3MmQ4NGUwYWU3Li5iNjMxNDk1
NzNhNDg0MWZlNjAwMWVlZmFmZGQwMDkyY2ZjNzQxYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRl
bXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlvbikK
ICAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3BlblRl
bXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCAyMTllZTE5NTk3
MTM0MjFlY2QwY2QyOWUyMmQ1YjE3YTU1NWYxODAzLi4yMzM3YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5
ODcxNThmZjIwMjM1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbWlt
ZVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBtaW1lVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+IGNy
ZWF0ZU1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IGY1ZGZlNDc1Nzk5NGM2
OWFlMzQyMGEzNTRkZjY4YzVhNjZhNjAxNTcuLjZiMmQ4MWUzNWIwOGNmNzRmNGYzNjFhZWJjNzRm
MzEyOWM3ZDliN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaApAQCAtNjYsNiArNjYsOCBAQCBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSk7CisKIHZvaWQgY2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCiBjbGFzcyBOYXRpdmVJ
bWFnZUhhbmRsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IDZmZDc3ZTlhOTdlYWRkZjc1MDM0ZmNlYjQ2MTQ1
ZTQ1MzA4ZDM2NzQuLmM4NmFlZTFhMjVjOTZiZjFkZDczNzBiMWZmYjkzMmUxOGE4MjA4MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwCkBAIC04NCw2ICs4NCwyNSBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0
UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElu
dFJlY3QmIHNvdXJjZSkKK3sKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisK
KyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlv
bi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkp
OworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworCisgICAgQ0dGbG9h
dCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0
b3I7CisgICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgp
KSAvIHNjYWxlRmFjdG9yOworCisgICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAt
IHNvdXJjZS54KCk7CisgICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0
aW9uLnkoKSArIHNvdXJjZS55KCk7CisKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0
LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFn
ZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Cit9CisK
IHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0ltYWdlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRp
bGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc5NmE0NWExNTdmOGUzZjkzODI2MmIyMTNlMjYwMzcyMDVj
NTVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSW1hZ2VVdGls
aXRpZXMuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1ZlY3RvcjxTdHJpbmc+IHRyYW5zY29kZUltYWdlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2Vk
TUlNRVR5cGVzKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oCmluZGV4IGYxYzA1OWJiZjgyMjdiMDE3ZTQ4MzA3MDhkMjJkMjRkYjRkMDQwZGIuLjcyOTMx
MzIzOWQ1ZDVhMWI5YWYwOGFkN2Y0NTRkNmZiOTRlYWFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCkBAIC01Nyw2ICs1Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oSVBDKSBcCiAgICAg
TShJVFBEZWJ1ZykgXAogICAgIE0oSWNvbkRhdGFiYXNlKSBcCisgICAgTShJbWFnZXMpIFwKICAg
ICBNKEluY3JlbWVudGFsUERGKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERlZlcmJvc2UpIFwKICAg
ICBNKEluZGV4ZWREQikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9D
R1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwOGY2ZDVlZmI0YWFhODZiMTA0YTQ5
Yzk4NTVmMjA3MjViNjgwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQg
cGFpbnRJbWFnZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dJbWFnZVJlZiBpbWFnZSwgQ0dGbG9h
dCBzY2FsZUZhY3RvciwgQ0dQb2ludCBkZXN0aW5hdGlvbiwgQ0dSZWN0IHNvdXJjZSkKLXsKLSAg
ICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uLngsIGRlc3RpbmF0aW9uLnksIHNvdXJj
ZS5zaXplLndpZHRoLCBzb3VyY2Uuc2l6ZS5oZWlnaHQpKTsKLSAgICBDR0NvbnRleHRTY2FsZUNU
TShjb250ZXh0LCAxLCAtMSk7Ci0KLSAgICBDR0Zsb2F0IGltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChpbWFnZSkgLyBzY2FsZUZhY3RvcjsKLSAgICBDR0Zsb2F0IGltYWdlV2lkdGggPSBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UpIC8gc2NhbGVGYWN0b3I7Ci0KLSAgICBDR0Zsb2F0IGRlc3RY
ID0gZGVzdGluYXRpb24ueCAtIHNvdXJjZS5vcmlnaW4ueDsKLSAgICBDR0Zsb2F0IGRlc3RZID0g
LWltYWdlSGVpZ2h0IC0gZGVzdGluYXRpb24ueSArIHNvdXJjZS5vcmlnaW4ueTsKLQotICAgIENH
Q29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VX
aWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRl
KGNvbnRleHQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY2cvQ0dVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUxZDE4
MWE4ZmM3NTczYzkzMGNmYzYwM2IwZjQxNDI4NzQ3YjIyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRp
bGl0aWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBDR1V0aWxpdGllc19oCi0jZGVmaW5lIENHVXRpbGl0aWVzX2gKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXZvaWQgcGFpbnRJbWFnZShDR0NvbnRleHRSZWYsIENHSW1hZ2VSZWYsIENHRmxv
YXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24sIENHUmVjdCBzb3VyY2UpOwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIENHVXRpbGl0aWVzX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3
NDJlNWE5NTA3NTNjMDllOWU2N2NiMWQ5ZTcwNWJkOTU0NmQ3YmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklt
YWdlVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8SW1hZ2VJ
Ty9JbWFnZUlPLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyBTdHJpbmcgdHJhbnNjb2RlSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQoreworICAgIEFTU0VSVChtaW1lVHlwZS5zdGFydHNXaXRoKCJpbWFn
ZS8iX3MpKTsKKworICAgIC8vIFRoaXMgZnVuY3Rpb24gdHJhbnNjb2RlcyBmaWxlcyBvbmx5Lgor
ICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkocGF0aCwgRmlsZVN5c3RlbTo6U2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmco
KTsKKworICAgIC8vIEVuc3VyZSB0aGUgJ3BhdGgnIGlzIGFjdHVhbGx5IGFuIGltYWdlIGZpbGUu
CisgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwgbnVsbHB0cikpOworICAg
IGlmICghc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAgLy8gRW5z
dXJlIHRoZSBmb3JtYXQgb2YgdGhlIGltYWdlIHNvdXJjZSBpcyBkaWZmZXJlbnQgZnJvbSAnbWlt
ZVR5cGUnLgorICAgIGF1dG8gc291cmNlVVRJID0gU3RyaW5nKENHSW1hZ2VTb3VyY2VHZXRUeXBl
KHNvdXJjZS5nZXQoKSkpOworICAgIGF1dG8gcmVwbGFjZW1lbnRVVEkgPSBXZWJDb3JlOjpVVElG
cm9tTUlNRVR5cGUobWltZVR5cGUpOworICAgIGlmIChzb3VyY2VVVEkgPT0gcmVwbGFjZW1lbnRV
VEkpCisgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisKKyAgICAvLyBUaGUgZmlsZSBleHRl
bnNpb24gaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgcmV2ZWFscyB0aGUgTUlNRSB0eXBlIG9mIHRo
ZSB0ZW1wb3JhcnkgZmlsZS4KKyAgICBhdXRvIHN1ZmZpeCA9IG1ha2VTdHJpbmcoJy4nLCBXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1l
VHlwZSkpOworCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHJlcGxhY2VtZW50
RmlsZUhhbmRsZTsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBJbWFnZSJfcywgcmVwbGFjZW1lbnRGaWxlSGFuZGxlLCBzdWZm
aXgpOworICAgIGlmIChyZXBsYWNlbWVudEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJbWFnZXMs
ICJ0cmFuc2NvZGVJbWFnZTogUmVwbGFjZW1lbnQgaW1hZ2UgY291bGQgbm90IGJlIGNyZWF0ZWQ6
ICVzICVzXG4iLCBwYXRoLnV0ZjgoKS5kYXRhKCksIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworICAgIH0KKworICAgIENHRGF0YUNvbnN1bWVy
Q2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKKyAgICAgICAgW10odm9pZCogaW5mbywgY29uc3Qgdm9p
ZCogYnVmZmVyLCBzaXplX3QgY291bnQpIC0+IHNpemVfdCB7CisgICAgICAgICAgICBhdXRvIGhh
bmRsZSA9ICpzdGF0aWNfY2FzdDxGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUqPihpbmZv
KTsKKyAgICAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBjb3VudCk7CisgICAgICAgIH0sCisgICAg
ICAgIG51bGxwdHIKKyAgICB9OworCisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRh
Q29uc3VtZXJDcmVhdGUoJnJlcGxhY2VtZW50RmlsZUhhbmRsZSwgJmNhbGxiYWNrcykpOworICAg
IGF1dG8gcmVwbGFjZW1lbnQgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhE
YXRhQ29uc3VtZXIoY29uc3VtZXIuZ2V0KCksIHJlcGxhY2VtZW50VVRJLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDEsIG51bGxwdHIpKTsKKworICAgIC8vIFdyaXRlIHRoZSBzb3VyY2UgaW1hZ2Ug
dG8gdGhlIHJlcGxhY2VtZW50IGltYWdlLgorICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdl
RnJvbVNvdXJjZShyZXBsYWNlbWVudC5nZXQoKSwgc291cmNlLmdldCgpLCAwLCBudWxscHRyKTsK
KyAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShyZXBsYWNlbWVudC5nZXQoKSk7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcGxhY2VtZW50RmlsZUhhbmRsZSk7CisKKyAgICByZXR1
cm4gcmVwbGFjZW1lbnRQYXRoOworfQorCitWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVJbWFnZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dl
ZE1JTUVUeXBlcykKK3sKKyAgICBTdHJpbmcgbWltZVR5cGVGb3JFbmNvZGluZyA9IFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhhbGxv
d2VkTUlNRVR5cGVzLCB7IH0pOworICAgIGlmIChtaW1lVHlwZUZvckVuY29kaW5nLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFN0cmluZz4gcmVwbGFjZW1lbnRQ
YXRoczsKKyAgICByZXBsYWNlbWVudFBhdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGF0aHMu
c2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgcGF0aCA6IHBhdGhzKSB7CisgICAgICAgIGlmIChh
bGxvd2VkTUlNRVR5cGVzLmNvbnRhaW5zKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVU
eXBlRm9yUGF0aChwYXRoKSkpCisgICAgICAgICAgICByZXBsYWNlbWVudFBhdGhzLnVuY2hlY2tl
ZEFwcGVuZChudWxsU3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXBsYWNl
bWVudFBhdGhzLnVuY2hlY2tlZEFwcGVuZCh0cmFuc2NvZGVJbWFnZShwYXRoLCBtaW1lVHlwZUZv
ckVuY29kaW5nKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aHM7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVh
YmxlQml0bWFwQ0cuY3BwCmluZGV4IDVjNGMzNjIwMGRjYTZhZDVkZDBlNGRmZjc2MjE5OWY5Y2Rj
YmM0MGMuLjczMGRhNjQ4ZjJiMmZlOWU3ODRmZDA0MDUyZTE5MGYwZDBiZjIxYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTI5LDExICsy
OSwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlclV0
aWxpdGllc0NHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMDYsMTIgKzEwNiwx
MiBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW50UmVjdCYgc291cmNlKQogewotICAgIHBhaW50SW1hZ2UoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgbWFrZUNHSW1hZ2VDb3B5KCkuZ2V0KCksIDEsIGRlc3RpbmF0aW9uLCBz
b3VyY2UpOworICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwg
MSwgZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWlu
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBj
b25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAg
ICBwYWludEltYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1ha2VDR0ltYWdlQ29weSgp
LmdldCgpLCBzY2FsZUZhY3RvciwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgZHJhd05hdGl2
ZUltYWdlKG1ha2VDR0ltYWdlQ29weSgpLCBjb250ZXh0LCBzY2FsZUZhY3RvciwgZGVzdGluYXRp
b24sIHNvdXJjZSk7CiB9CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6
Om1ha2VDR0ltYWdlQ29weSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYWI2MmE5NDA0OTIx
ODdkZjU4ZmI2MTUyMzNlMjIwNGMwNTQ3MGRlNi4uYzAzMGZhY2ZjODI4MzJjM2ZhNzZkMGZhZGZl
ODE5NjU2M2Q1MjhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjUsNyArNjUsNyBAQCBH
UFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQogCiBQbGF0Zm9ybS9jZi9N
b2R1bGVDRi5jcHAKIAotUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCitQbGF0Zm9ybS9jZy9J
bWFnZVV0aWxpdGllc0NHLmNwcAogCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHAKaW5k
ZXggYWZhZjZlNDhiYzM2YTk1NzcyYzEzZTU3YzJiMmE4MmQxOGRkMzQ3NC4uZmEwNjMyMDYxOGE0
NmU5MWQ4MjdkNTA2NzBjMjA1YzE3MTc2YjNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCkBAIC01
OCw2ICs1OCwxMSBAQCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBY2NlcHRl
ZEZpbGVFeHRlbnNpb25zKFdLT3BlblBhbmVsUGFyYW1ldGVycwogICAgIHJldHVybiB0b0FQSSgm
dG9JbXBsKHBhcmFtZXRlcnNSZWYpLT5hY2NlcHRGaWxlRXh0ZW5zaW9ucygpLmxlYWtSZWYoKSk7
CiB9CiAKK1dLQXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlw
ZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnNSZWYpCit7CisgICAgcmV0dXJu
IHRvQVBJKCZ0b0ltcGwocGFyYW1ldGVyc1JlZiktPmFsbG93ZWRNSU1FVHlwZXMoKS5sZWFrUmVm
KCkpOworfQorCiAvLyBEZXByZWNhdGVkLgogV0tTdHJpbmdSZWYgV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzQ29weUNhcHR1cmUoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYu
aAppbmRleCAwNTlmN2NmYzA2MWVmYzRiZWVmZjU5MTMyZTBlNmY0OWQ5MGZmYzY4Li43ZDEzMjk4
NGJhNzU2NzZmNTY0Y2FjZjA0NjlkZDE5ZTY4MzRmNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaApAQCAt
NDUsNiArNDUsOCBAQCBXS19FWFBPUlQgYm9vbCBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxv
d3NNdWx0aXBsZUZpbGVzKFdLT3BlblBhbmVsUGFyYW1ldGVycwogV0tfRVhQT1JUIFdLQXJyYXlS
ZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFjY2VwdGVkTUlNRVR5cGVzKFdLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBh
bmVsUGFyYW1ldGVyc0NvcHlBY2NlcHRlZEZpbGVFeHRlbnNpb25zKFdLT3BlblBhbmVsUGFyYW1l
dGVyc1JlZiBwYXJhbWV0ZXJzKTsKIAorV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBh
cmFtZXRlcnMpOworCiAvKiBERVBSRUNBVEVEIC0gUGxlYXNlIHVzZSBXS09wZW5QYW5lbFBhcmFt
ZXRlcnNHZXRDYXB0dXJlRW5hYmxlZCgpIGluc3RlYWQuICovCiBXS19FWFBPUlQgV0tTdHJpbmdS
ZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUNhcHR1cmUoV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UmVmIHBhcmFtZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCmluZGV4IDJiMzk0ZmM4YmRh
NzQyMTdjMTczNTEyNzYzNjU2NTk4YTRiODQyYjkuLmI2MTE4ODE3MTg4NTJiNTAzNTk4NGYzNTA3
MDJmMTc5MWEyZWVlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBA
IHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZU1lZGlhRmlsZXMoV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0CiB9CiAjZW5kaWYKIAotdm9pZCBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0
ZW5lclJlZiwgV0tBcnJheVJlZiBmaWxlVVJMc1JlZikKK3ZvaWQgV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lckNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJS
ZWYsIFdLQXJyYXlSZWYgZmlsZVVSTHNSZWYsIFdLQXJyYXlSZWYgYWxsb3dlZE1pbWVUeXBlc1Jl
ZikKIHsKLSAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5jaG9vc2VGaWxlcyhmaWxlUGF0aHNGcm9t
RmlsZVVSTHMoKnRvSW1wbChmaWxlVVJMc1JlZikpKTsKKyAgICB0b0ltcGwobGlzdGVuZXJSZWYp
LT5jaG9vc2VGaWxlcyhmaWxlUGF0aHNGcm9tRmlsZVVSTHMoKnRvSW1wbChmaWxlVVJMc1JlZikp
LCB0b0ltcGwoYWxsb3dlZE1pbWVUeXBlc1JlZiktPnRvU3RyaW5nVmVjdG9yKCkpOwogfQogCiB2
b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclJlZiBsaXN0ZW5lclJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAppbmRleCA2OTk5NzZmYWEyYWRk
ZTQ3OGNlZjZjNGUxYjBmZWY4NDUwOThhZWE4Li5hYWJiZTE5ZDcyMmVmNjQxNDI2Y2MxNTkxYTM1
NmJhMDczNDRkN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCkBAIC0zNSw3ICszNSw3IEBAIGV4dGVy
biAiQyIgewogV0tfRVhQT1JUIFdLVHlwZUlEIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJHZXRU
eXBlSUQodm9pZCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJD
aG9vc2VNZWRpYUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYs
IFdLQXJyYXlSZWYgZmlsZVVSTHNSZWYsIFdLU3RyaW5nUmVmIGRpc3BsYXlTdHJpbmcsIFdLRGF0
YVJlZiBpY29uSW1hZ2VEYXRhUmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
LCBXS0FycmF5UmVmIGZpbGVVUkxzKTsKK1dLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
LCBXS0FycmF5UmVmIGZpbGVVUkxzLCBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXNSZWYpOwog
V0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbChXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxZDEyYTU4MGU1YTA0OTVl
ZjZhZWE1YWQzMjc3Yjg3NWJlN2JlODE4Li5jYjY1ZDdlOWQ5ODhmNWQ1NzUxNWJhM2UzOWE4YTBj
N2Q3YTFhMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgor
I2luY2x1ZGUgIkltYWdlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
QEAgLTY2OTAsMTcgKzY2OTEsMjcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QKIH0KICNlbmRp
ZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBhdXRvIHJlcGxhY2VtZW50VVJMcyA9IHRyYW5zY29kZUltYWdlcyhm
aWxlVVJMcywgYWxsb3dlZE1JTUVUeXBlcyk7CisjZWxzZQorICAgIFZlY3RvcjxTdHJpbmc+IHJl
cGxhY2VtZW50VVJMczsKKyAgICBVTlVTRURfUEFSQU0oYWxsb3dlZE1JTUVUeXBlcyk7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgYXV0byBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0Zv
ckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBmaWxl
VVJMcyk7CisgICAgVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4dGVuc2lvbkZpbGVzOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZmlsZVVSTHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQor
ICAgICAgICBzYW5kYm94RXh0ZW5zaW9uRmlsZXMuYXBwZW5kKGkgPCByZXBsYWNlbWVudFVSTHMu
c2l6ZSgpICYmICFyZXBsYWNlbWVudFVSTHNbaV0uaXNOdWxsKCkgPyByZXBsYWNlbWVudFVSTHNb
aV0gOiBmaWxlVVJMc1tpXSk7CisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJv
eHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBzYW5kYm94RXh0ZW5zaW9uRmlsZXMp
OwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21P
cGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsKICNlbmRpZgogCi0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmls
ZVVSTHMsIHsgfSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGZpbGVVUkxzLCByZXBsYWNlbWVudFVSTHMpKTsKIAogICAgIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExp
c3RlbmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDRjOTQ4YWNjMzFjNTkyY2YyZGE3OWJjZDNkOTExMDdhOTBiYjk0
ODIuLjUzZDdmODU0ZjJjYTE4ZDQzOTRkMzE2MzExN2U4N2YxMjE2NGIyMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkwLDcgKzI5
MCw3IEBACiAJCTFBOUZCQThEMTNGRjA0RTYwMERFRUQ2NyAvKiBQbHVnaW5Db21wbGV4VGV4dElu
cHV0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBOUZCQThDMTNGRjA0RTYwMERFRUQ2NyAvKiBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUu
aCAqLzsgfTsKIAkJMUFBMTMyMTIxOTFENTkyNDAwOUMxNDg5IC8qIFdLTmF2aWdhdGlvblJlc3Bv
bnNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBMTMyMTExOTFENTkyNDAwOUMxNDg5IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFB
QTIwRDUxMThBRDUwRTAwMDVEMUVENCAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTIwRDUwMThB
RDUwRTAwMDVEMUVENCAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQUEyRTUxRDEyRTRDMDVF
MDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQTJFNTFCMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5o
ICovOyB9OworCQkxQUEyRTUxRDEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTJFNTFCMTJF
NEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllcy5oICovOyB9OwogCQkxQUEyRTU2NzE4RDc3
NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMkU1NjUxOEQ3NzUwODAwMzgx
NEJEIC8qIFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJMUFBM0Q3NUMx
NjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTNENzVBMTY1MUI0NEYwMDg3MTNEMCAv
KiBSZW1vdGVMYXllclRyZWVIb3N0LmggKi87IH07CiAJCTFBQTQxN0NCMTJDMDBDQ0EwMDJCRTY3
QiAvKiBUZXh0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFBNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggKi87IH07
CkBAIC0yNTA5LDggKzI1MDksOCBAQAogCQkxQUExQ0M1QzEwMEZBMUExMDA3OERFQkMgLyogUXVh
cnR6Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ekNvcmUuZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTFBQTFDRDA2MTAwRkExQkEwMDc4REVC
QyAvKiBDYXJib24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3b3Jr
OyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMUFBMjBENTAxOEFENTBFMDAwNUQxRUQ0IC8q
IFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENHVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGll
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDR1V0aWxpdGllcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQTJFNTFCMTJFNEMwNUUwMEJDNDk2
NiAvKiBJbWFnZVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bWFnZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUEyRTUxQzEy
RTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXNDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZVV0aWxpdGllc0NHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFBMkU1NjQxOEQ3NzUwODAwMzgxNEJEIC8qIFdLV2ViUHJvY2Vzc0J1
bmRsZVBhcmFtZXRlcnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUEyRTU2NTE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFy
YW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NC
dW5kbGVQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTNENzU5
MTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5NDgsOCArNTk0OCw3IEBACiAJCTFBQTJFNTFBMTJF
NEMwNTYwMEJDNDk2NiAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMUFBMkU1MUMxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmNwcCAq
LywKLQkJCQkxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuaCAqLywKKwkJ
CQkxQUEyRTUxQzEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXNDRy5jcHAgKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGNnOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1NzUs
NiArOTU3NCw3IEBACiAJCQkJNTFCMTVBN0QxMzg0MzlCMjAwMzIxQUQ4IC8qIHVuaXggKi8sCiAJ
CQkJRUNBNjgwRDMxRTY5MDRCNTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJ
LmggKi8sCiAJCQkJRUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9s
c0ZvclRBUEkuaCAqLywKKwkJCQkxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGls
aXRpZXMuaCAqLywKIAkJCQk1MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAg
Ki8sCiAJCQkJNTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCAqLywKIAkJCQkw
RkRDRDdGNjFENDdFOTJBMDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCAqLywKQEAgLTEw
NzU0LDcgKzEwNzU0LDYgQEAKIAkJCQk0MTg5N0VEODFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVT
dG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZBQkQyQTFGNERFMDAxMDA2QTZD
OTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3
RURBMUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQkxQUEyRTUxRDEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRD
ZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQ4MjczNDcyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTA4MzMsNiArMTA4MzIsNyBAQAogCQkJCTUxQzBDOTc0MURERDc2MDAwMDMyQ0FE
MyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4
MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NG
NkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQUEyRTUxRDEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMUVDNjlFMTg3MjA5MjEwMEI5NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNEVFMzExQzgzRTk4MDA4RjMzNzUgLyogSW5qZWN0
ZWRCdW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUU3REM1MTI4QjY0NUQwMDk4MjdEQSAv
KiBJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDliNWVjMGFkNTE0NTgzYjhmMzUz
YThhZjBhOGI2ODY3MmEwZTA4YS4uOTA5NDRiNjFiZTM1MjMwMjVkMmYyODZmNTc1YjhlZGVkMDc2
ZjNlNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogQSBIRUlGIGltYWdlLCBzZWxlY3Rl
ZCBmcm9tIHRoZSBPcGVuUGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQg
TUlNRSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnJ1bk9wZW5QYW5lbCk6CisKIDIwMjAt
MDctMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
TW92ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMueGNjb25maWcgdG8g
UGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDJiZDc5MTg2MjZjMDhmNDNjN2YzNGZiYzZmYzc5OTMwNTlhMzJhZDkuLjhm
ODI1MDk5NzJlYThhMTJjNDllZjA0ZWJjMzA1OTM2OWVjNzRjYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjMsMTIgKzIyMywxNCBAQCBzdGF0aWMg
dm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLT3Bl
blBhbmVsUGFyYW1ldGVycwogICAgIH0KICNlbmRpZgogCisgICAgV0tBcnJheVJlZiBhbGxvd2Vk
TWltZVR5cGVzID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMocGFy
YW1ldGVycyk7CisKICAgICBpZiAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlw
bGVGaWxlcyhwYXJhbWV0ZXJzKSkgewotICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
Q2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJSZWYsIGZpbGVVUkxzKTsKKyAgICAgICAgV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVyUmVmLCBmaWxlVVJM
cywgYWxsb3dlZE1pbWVUeXBlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJSZWYsIGFkb3B0
V0soV0tBcnJheUNyZWF0ZSgmZmlyc3RJdGVtLCAxKSkuZ2V0KCkpOworICAgIFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwgYWRvcHRXSyhXS0Fy
cmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEpKS5nZXQoKSwgYWxsb3dlZE1pbWVUeXBlcyk7CiB9CiAK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnJ1bk1vZGFsKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3ZDMwZTNkNzY1NzhmMTliYzI2Y2E1ODhhMmI2YTYxYjA4
MjUyNTguLmU3NTljNDg4N2JiYWNlODg2YmQ3MzBlMDg4OWFjNmFlMWZmYTBjMGUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAyMC0wNy0wNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IEEgSEVJRiBpbWFnZSwgc2VsZWN0ZWQg
ZnJvbSB0aGUgT3BlblBhbmVsLCBzaG91bGQgYmUgY29udmVydGVkIHRvIGFuIGFjY2VwdGVkIE1J
TUUgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1ODQ2ND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgdGhlIEhFSUYgaW1hZ2Ug
aXMgY29udmVydGVkIHRvIGFuIGFjY2VwdGVkIE1JTUUgdHlwZSB3aGVuIGl0IGlzIAorICAgICAg
ICBzZWxlY3RlZCBmcm9tIHRoZSBPcGVuUGFuZWwgYW5kIHRoZSAnYWNjZXB0JyBhdHRyaWJ1dGUg
b2YgdGhlIDxpbnB1dD4KKyAgICAgICAgZG9lcyBhbGxvdyB0aGUgSEVJRiBNSU1FIHR5cGUuCisK
KyAgICAgICAgTm8gbmVlZCB0byB0ZXN0IHRoaXMgZnVuY3Rpb25hbGl0eSBvbiBXSzEgc2luY2Ug
dGhlIGltYWdlIHRyYW5zY29kaW5nIAorICAgICAgICBzaG91bGQgaGFwcGVuIGluIHRoZSBVSSBw
cm9jZXNzLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1h
Z2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdl
LXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzL2dyZWVuLTQwMHg0MDAuaGVpYzogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTA3LTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRp
YVJlY29yZGVyIHNob3VsZCBzdXBwb3J0IHBlZXIgY29ubmVjdGlvbiByZW1vdGUgdmlkZW8gdHJh
Y2tzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMmIzZDg4NmU4MzI2NjQ1Mzc0MDQxYzI5NzMwMTM4
YmFjMmE3NzdmLi4yZTc2NTVkNzlkMWM0OWYyYTE2OGY3ZGQ2MzBjYjNjMjg1MzcxMzg0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTg2Niw2ICs4NjYsOCBAQCBodHRwL3dwdC9jcm9zcy1vcmlnaW4t
cmVzb3VyY2UtcG9saWN5LyBbIFNraXAgXQogCiAjIHRlc3RSdW5uZXIudGVybWluYXRlTmV0d29y
a1Byb2Nlc3MoKSBvbmx5IHdvcmtzIGluIFdlYktpdDIKIGZhc3QvZmlsZXMvYmxvYi1uZXR3b3Jr
LXByb2Nlc3MtY3Jhc2guaHRtbCBbIFNraXAgXQorZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBp
L2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBTa2lwIF0KK2Zhc3QvZm9ybXMvZmls
ZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgU2tpcCBd
CiAKICMgVGhpcyB0ZXN0IGlzIGN1cnJlbnRseSBvbmx5IHJlbGV2YW50IG9uIG1hYy13azIKIGZh
c3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5o
dG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1v
cGVuLXBhbmVsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTVlYTg2MDhmMDgyMGVkMTQ2Y2Yw
ODg1NmU2Njg0OTg0ZGIwMDFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitPUEVOIEZJTEUgUEFORUwKK1Rlc3RzIGEgSEVJQyBp
bWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBIRUlDLCB3aWxs
IG5vdCBiZSBjb252ZXJ0ZWQgdG8gYW55IHN1cHBvcnRlZCBNSU1FIHR5cGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZpbGVMaXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZp
bGUudHlwZSBpcyAiaW1hZ2UvaGVpYyIKK1BBU1MgZmlsZS5zaXplIGlzIG5vbi16ZXJvLgorSW1h
Z2UgY291bGQgbm90IGJlIGxvYWRlZC4KK1BBU1MgaW1nLndpZHRoIGlzIG5vdCA0MDAKK1BBU1Mg
aW1nLmhlaWdodCBpcyBub3QgNDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKyAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
bGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Bl
bi1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjNTQyZWRkNzc0NDQzNGJkZGFkNWE1MzNiMjliYTFj
YmEwYzZmMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUv
ZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApAQCAtMCwwICsx
LDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIuaGVpYyIgb25jaGFu
Z2U9ImNoYW5nZWQoZXZlbnQpIj48L2lucHV0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2Ny
aXB0aW9uKCJUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdo
aWNoIGFjY2VwdHMgSEVJQywgd2lsbCBub3QgYmUgY29udmVydGVkIHRvIGFueSBzdXBwb3J0ZWQg
TUlNRSB0eXBlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBm
dW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRP
cGVuUGFuZWxGaWxlcyhbJ3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWljJ10pOwor
CisgICAgICAgICAgICBpbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnaW5wdXQnKVswXTsKKyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoaW5wdXRFbGVt
ZW50Lm9mZnNldExlZnQgKyBpbnB1dEVsZW1lbnQub2Zmc2V0V2lkdGggLyAyLAorICAgICAgICAg
ICAgICAgIGlucHV0RWxlbWVudC5vZmZzZXRUb3AgKyBpbnB1dEVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICBmaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlczsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJmaWxlTGlzdC5sZW5ndGgiLCAiMSIpOworCisgICAgICAgICAgICBm
aWxlID0gZmlsZUxpc3RbMF07CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZp
bGUudHlwZSIsICJpbWFnZS9oZWljIik7CisgICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZp
bGUuc2l6ZSIpOworCisgICAgICAgICAgICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
bWciKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAg
ICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFk
ZXIub25sb2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJJbWFnZSB3YXMgbG9hZGVkLiIpOworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgiaW1nLndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgiaW1nLmhlaWdodCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBp
bWcub25lcnJvciA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIGNv
dWxkIG5vdCBiZSBsb2FkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJp
bWcud2lkdGgiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJpbWcu
aGVpZ2h0IiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVzdWx0
OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUp
OworICAgICAgICB9CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMTQ2MGJhYjg4YzNmYzYyMmY2ZmIzYTE2MDY3OTI2
NzM0MzRhYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUv
ZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKK09QRU4gRklMRSBQQU5FTAorVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4g
dmlhIHRoZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywgd2lsbCBiZSBjb252ZXJ0ZWQg
dG8gYSBQTkcgaW1hZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZp
bGVMaXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvcG5nIgorUEFTUyBm
aWxlLnNpemUgaXMgbm9uLXplcm8uCitJbWFnZSB3YXMgbG9hZGVkLgorUEFTUyBpbWcud2lkdGgg
aXMgNDAwCitQQVNTIGltZy5oZWlnaHQgaXMgNDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUt
b3Blbi1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NWEyOWE3M2I4MzVhNTEyYjM2MmFhYjMyM2Zm
ZjhiOWJiZTczNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
bGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApAQCAtMCwwICsx
LDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIucG5nIiBvbmNoYW5n
ZT0iY2hhbmdlZChldmVudCkiPjwvaW5wdXQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3Jp
cHRpb24oIlRlc3RzIGEgSEVJQyBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hp
Y2ggYWNjZXB0cyBQTkcsIHdpbGwgYmUgY29udmVydGVkIHRvIGEgUE5HIGltYWdlLiIpOworICAg
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkK
KyAgICAgICAgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhbJ3Jl
c291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWljJ10pOworCisgICAgICAgICAgICBpbnB1
dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKyAg
ICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoaW5wdXRFbGVtZW50Lm9mZnNldExlZnQgKyBp
bnB1dEVsZW1lbnQub2Zmc2V0V2lkdGggLyAyLAorICAgICAgICAgICAgICAgIGlucHV0RWxlbWVu
dC5vZmZzZXRUb3AgKyBpbnB1dEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICBmaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlczsKKyAgICAgICAgICAgIHNob3VsZEJlKCJm
aWxlTGlzdC5sZW5ndGgiLCAiMSIpOworCisgICAgICAgICAgICBmaWxlID0gZmlsZUxpc3RbMF07
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUudHlwZSIsICJpbWFnZS9w
bmciKTsKKyAgICAgICAgICAgIHNob3VsZEJlTm9uWmVybygiZmlsZS5zaXplIik7CisKKyAgICAg
ICAgICAgIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOworCisgICAgICAgICAgICB2YXIgcmVhZGVy
ID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7
CisgICAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgZGVidWcoIkltYWdlIHdhcyBsb2FkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJpbWcud2lkdGgiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJp
bWcuaGVpZ2h0IiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4g
eworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4i
KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoImltZy53aWR0aCIsICI0MDAiKTsK
KyAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoImltZy5oZWlnaHQiLCAiNDAwIik7Cisg
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgaW1nLnNyYyA9IHJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CisgICAgICAgIH0KKyAgICAg
ICAgcnVuVGVzdCgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFn
ZXMvZ3JlZW4tNDAweDQwMC5oZWljIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJp
ZXMtYXBpL3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWljCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdj
Zjg1OWQ4ZGExZGYxMTYyNTRkYTYzOTM1NTllNTllOTY5Y2E3YjYKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDcxMAp6Y21Zak9PS1RIUjZoM0VXOGREbGxRITNUIUI0YGpQaDEhKl9ZJjVBbCNmWntI
d1gxfWczQXZhdCpYZ0xPMih+RUoKemckcktgN2hTeyRERU9jWUh6Rz1QRkFDfiFzUDBfMj0pd31l
R24yRik9SHZVJD4peUhONVloSChJSHpsI2F0SjJ1Cnp0TGk4Ynp3b2BWQX5EJFJucCtRSU51LXEl
Y0p2MTRUeT8kKlo8aVoqIWVSYGhFKFl+JVRjQD1PZWRzdUlQe2tjWQp6MXxyK3djcHt7JGNGRG1Y
WXpBM00jJUVQQEBTeGhmQT8+JmA0dzQrKl47emphcXdUZlFQNklyTGF8K0M1JFlwP04Kej5eSj5n
VXQxJlVISmopZCRhOUtZRWgjWGkhanh9cHhjZD11ZHlhNl9gQ3A9JHh8SkFUZFloWkRGQn53OCM4
Y3hqCno+TX0pTXNxfiVifENQeik/N3JnTnAqLSZDUzJObEohfXZ9Tj5RK0dgOHJ4UV9XfGdHT1dI
SmRGUH09WHo4U2soYgp6ak8hTXshPlpuaFIjS0QhJHRWRzEzZnpiVzI5TGtOeUNFNmh0K1pGZGNt
eVRsUyhRcE8xVFJTejRebyVaMGYlXyEKemhDYSZzPGs1JkB6S2U/RlVhMl89aCNkI1NrRDJlP3El
SDd2MEErdjxQWm4kJlRuTX5NPSgqWDtEeShJWCpgLXNHCnpKaHp1JEVxJUUxe1h6YT9fUyQ7eXlW
bHFEVTthIzhvdGB9WD5GbXFxJG42b2ImTG49MG4mfkkyJm5EKG1FOXFzZAppJSVtVWxfaTRjQE42
WUFXeEVMe2h2RmxBb1clanB+RzJJcUQmO0oxX1IoTlV2CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZjU1MDNmOGE4ZmM4YTI5MDY1MTg0ZDYxZjEzODNlMGIxMzdmYjc3OS4uMjc1MTViM2Q3MDMzM2Q3
ZWEzZmY5OTUxYjAyNjUyODlhY2VhMWFiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODUsNiArODUsOSBAQCBmYXN0L2V2ZW50cy9pbmFj
dGl2ZS13aW5kb3ctbm8tbW91c2UtZXZlbnQuaHRtbCBbIFBhc3MgXQogCiBmYXN0L2FuaW1hdGlv
bi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1pbi10d28tcGFnZXMuaHRtbCBbIFBhc3MgXQogCitm
YXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRt
bCBbIFBhc3MgXQorZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403709</attachid>
            <date>2020-07-07 12:04:07 -0700</date>
            <delta_ts>2020-07-09 01:05:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200707120406.patch</filename>
            <type>text/plain</type>
            <size>50164</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTBjM2FiMjFiZTgwMWVhYTBjNmI3
NmMzOTlkODQxNzU2ZTYzMzEuLmVkOTM4NzEzZjhkNzU4NDVjZTgxZmU5ZWVjOTU5NTRkMDU2ODU2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2Us
IHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBh
Y2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYSBzdWZm
aXggdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIFRoZSBnb2FsIGlz
IHRvCisgICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbWFnZSBm
aWxlcyB3aXRoIHZhbGlkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5o
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFy
eUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAtMDctMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIGFsbW9zdCBldmVyeXRoaW5nIGZyb20gRmVh
dHVyZURlZmluZXMueGNjb25maWcgdG8gUGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggODhlM2ExN2IxZjc2NGZjMzMxOGQxMWM0ZjZlZjZiMDJiYmI3ZDNlZi4uZmMyYWQ5MDc5ZDk3
NzUxMGE1NDJlMjEwZmViNTllNzJkYmZlOTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBA
CisyMDIwLTA3LTA3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgW21hY09TXTogQSBIRUlGIGltYWdlLCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVu
UGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
aW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6YWxsb3dlZE1JTUVUeXBlcyk6CisgICAgICAgIE1ha2Ugc3Vy
ZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMgbG93ZXJjYXNlIE1JTUUgdHlwZXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisKIDIwMjAt
MDctMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
TW92ZSBhbG1vc3QgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURlZmluZXMueGNjb25maWcgdG8g
UGxhdGZvcm1FbmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkY2Q1ZWFjYjkzMzJlZTQwMzkzODVj
ZjA0NDg0MDk5YWRjZjgzMGQuLmU2ZDVlYWNmMTRhNTBjOWRjODI5YTljMzhhZjk2NTRiMTZjZjA4
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDctMDYgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYg
aW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0
byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuICAgICAgICAKKworICAgICAg
ICAqIFBsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmguCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5o
OgorICAgICAgICAqIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OnRyYW5zY29kZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlSW1hZ2Vz
KToKKyAgICAgICAgSW1wbGVtZW50IGEgZnVuY3Rpb24gdGhhdCB0cmFuc2NvZGVzIGltYWdlcyBh
bW9uZyBhIHNldCBvZiBmaWxlcyBnaXZlbgorICAgICAgICB0aGUgYWxsb3dlZE1JTUVUeXBlcy4g
VGhlIGRlc3RpbmF0aW9uIE1JTUUgdHlwZSBvZiB0aGVzZSBpbWFnZXMgaXMgdGhlCisgICAgICAg
IGZpcnN0IE1JTUUgdHlwZSBpbiB0aGUgYWxsb3dlZE1JTUVUeXBlcyB3aGljaCBDRyBzdXBwb3J0
cyBlbmNvZGluZyB0by4KKworICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cGFpbnQpOgorICAgICAgICBD
YWxsIGRyYXdOYXRpdmVJbWFnZSgpIGFmdGVyIHJlbmFtaW5nIHBhaW50SW1hZ2UoKSB0byBkcmF3
TmF0aXZlSW1hZ2UoKS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcDoKKyAgICAgICAg
KFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOgorICAgICAgICBUcmFuc2ZlciB0aGUg
bGlzdCBvZiB0aGUgYWxsb3dlZCBNSU1FIHR5cGVzIGZyb20gdGhlIE9wZW5QYW5lbCB0byB0aGUK
KyAgICAgICAgZmlsZSBjaG9vc2VyIGxpc3RlbmVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICBUcmFuc2NvZGUgdGhlIGltYWdlcyBnaXZlbiB0
aGUgbGlzdCBvZiB0aGUgc2VsZWN0ZWQgZmlsZSBhbmQgdGhlIGFsbG93ZWQKKyAgICAgICAgTUlN
RSB0eXBlcy4gT25seSBzZWxlY3RlZCBmaWxlcyB3aG9zZSBNSU1FIHR5cGVzIGRvIG5vdCBleGlz
dCBpbiB0aGUgYWxsb3dlZAorICAgICAgICBNSU1FIHR5cGVzIHdpbGwgYmUgdHJhbnNjb2RlZC4g
UmlnaHQgbm93LCB0aGlzIG9ubHkgd2lsbCBhcHBseSB0byB0aGUgSEVJRgorICAgICAgICBpbWFn
ZXMgb24gbWFjT1MuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMC0wNy0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvY29hXSBNb3ZlIGFsbW9zdCBhbGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyB0byBQbGF0Zm9ybUVuYWJsZUNvY29hLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCA2MGIz
MmU0NmZjNDI5MDgyM2E2MjliZGEzZWQyNzJhODNiNmFiNGE2Li5iZmU4NDEyOTZkM2M2ZDUyYThh
OGFmMTU1ZTZlOGVlOGY5MTIwMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDUsNyArMTQ1LDcg
QEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQg
YmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYg
c3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3Bl
bkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNz
aW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0g
ZmFsc2UpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5p
bmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYv
Y29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGFjZWRmNWZkZDFiMmU3NjgyNGZmYTg5ZDRk
Y2RmNDBhYzFiMWI4N2QuLmRmZDgyMjU0MGVhNjJjNTdkNTAzYTUzNzZkYWNmN2RhZjBhMzQxOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTkzLDcgKzkzLDcg
QEAgU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKICAgICByZXR1cm4gTlNIb21lRGlyZWN0b3J5
KCk7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwg
UGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5kbGUpCitTdHJpbmcgb3BlblRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgcGxhdGZv
cm1GaWxlSGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKIHsKICAgICBwbGF0Zm9ybUZpbGVI
YW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCkBAIC0xMTMsOSArMTEzLDEzIEBA
IFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVICiAgICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0gcHJlZml4
LnV0ZjgoKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5kYXRhKCks
IHByZWZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgiWFhY
WFhYIiwgNik7CisgICAgCisgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUgc3VmZml4LgorICAg
IENTdHJpbmcgc3VmZml4VXRmOCA9IHN1ZmZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBh
dGguYXBwZW5kKHN1ZmZpeFV0ZjguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0aCgpKTsKICAgICB0
ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7CiAKLSAgICBwbGF0Zm9ybUZpbGVIYW5kbGUg
PSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7CisgICAgcGxhdGZvcm1GaWxlSGFu
ZGxlID0gbWtzdGVtcHModGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpLCBzdWZmaXhVdGY4Lmxlbmd0
aCgpKTsKICAgICBpZiAocGxhdGZvcm1GaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCBlNGFiMDBmYmRhZDlmZmI3MWI1MDIyY2NlYzQxYzEwYjVjYTBm
NWRmLi5mYTBiNTMxZmUxMGZmNzRlYmFiODY1ZjNjYTA5MTVkYTFkOTU3NTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIFZlY3RvcjxT
dHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZp
bHRlcikKICAgICByZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmlu
ZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFu
ZGxlJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmls
ZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1l
LmdldCgpLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cAppbmRleCBjOWY1MDE0MzZhYmNjODA5NGU4NDE0ODBkMjFmZTM2YTQ3MWU4MWZmLi5iM2MwNDAx
YjUwNmZkY2UzMjMyZWQ2ZmVmYmJiZjBlNTJkMTAwM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIGdldFZvbHVtZUZy
ZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29u
c3QgU3RyaW5nJikKIHsKICAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CiAgICAgY29uc3QgY2hh
ciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAppbmRleCA2NTlkZmQ1MjcyN2RjOWVmNjk5YjdmOTI0ZDVkMmU3MmQ4NGUwYWU3Li5iNjMx
NDk1NzNhNDg0MWZlNjAwMWVlZmFmZGQwMDkyY2ZjNzQxYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0
ZVRlbXBvcmFyeVBhdGgoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGFjdGlv
bikKICAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IFN0cmluZyYpCiB7CiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggOWUw
ZTE2ZDFhZTQyNTA3ZDExYWIzZjQyMGVkMTJiMTQ0YzFjYjEyMS4uN2RkZjkyZDQ2MjgxNDNjMWNh
ZGI5YTg4MDg3OGUyMjIyMmRhNWE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAKQEAgLTgxNCwxMyArODE0LDEzIEBAIFZlY3RvcjxTdHJpbmc+IE1J
TUVUeXBlUmVnaXN0cnk6OmFsbG93ZWRNSU1FVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG1p
bWVUeXBlCiAgICAgVmVjdG9yPFN0cmluZz4gYWxsb3dlZE1JTUVUeXBlczsKIAogICAgIGZvciAo
YXV0byYgbWltZVR5cGUgOiBtaW1lVHlwZXMpCi0gICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBw
ZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBw
ZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKIAog
ICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykgewogICAgICAgICBhdXRvIG1p
bWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24odHJpbW1lZEV4
dGVuc2lvbihleHRlbnNpb24pKTsKICAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhbGxvd2VkTUlNRVR5cGVzLmFwcGVuZElmTm90
Q29udGFpbnMobWltZVR5cGUpOworICAgICAgICBhbGxvd2VkTUlNRVR5cGVzLmFwcGVuZElmTm90
Q29udGFpbnMobWltZVR5cGUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGFsbG93ZWRNSU1FVHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmgKaW5kZXggMjE5ZWUxOTU5NzEzNDIxZWNkMGNkMjllMjJkNWIxN2E1NTVm
MTgwMy4uMjMzN2IwZjNmODY4MGU3YzllZjQxYmNkOTg3MTU4ZmYyMDIzNTFjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNp
b25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1JTUVU
eXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhPiBjcmVhdGVNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFk
R2xvYmFsRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaAppbmRleCBmNWRmZTQ3NTc5OTRjNjlhZTM0MjBhMzU0ZGY2OGM1YTY2YTYwMTU3
Li42YjJkODFlMzViMDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTY2LDYgKzY2LDgg
QEAgYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OwogCiB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNp
emUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBm
bG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2UpOworCiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKIAogY2xhc3MgTmF0aXZlSW1hZ2VIYW5kbGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRl
eCA2ZmQ3N2U5YTk3ZWFkZGY3NTAzNGZjZWI0NjE0NWU0NTMwOGQzNjc0Li5jODZhZWUxYTI1Yzk2
YmYxZGQ3MzcwYjFmZmI5MzJlMThhODIwODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtODQsNiArODQsMjUg
QEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0
aW9ucyk7CiB9CiAKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3Qg
SW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCit7CisgICAgQ0dD
b250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dD
b250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChj
Z0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24ueCgpLCBkZXN0aW5hdGlvbi55KCksIHNv
dXJjZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShj
Z0NvbnRleHQsIDEsIC0xKTsKKworICAgIENHRmxvYXQgaW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworICAgIENHRmxvYXQgaW1hZ2VXaWR0
aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgLyBzY2FsZUZhY3RvcjsKKworICAgIENH
RmxvYXQgZGVzdFggPSBkZXN0aW5hdGlvbi54KCkgLSBzb3VyY2UueCgpOworICAgIENHRmxvYXQg
ZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkZXN0aW5hdGlvbi55KCkgKyBzb3VyY2UueSgpOworCisg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0WCwgZGVzdFks
IGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOworCisgICAgQ0dDb250ZXh0
UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworfQorCiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJp
bWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogewogI2lmIENBQ0hFX1NVQklNQUdF
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JbWFnZVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JbWFnZVV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3OTZh
NDVhMTU3ZjhlM2Y5MzgyNjJiMjEzZTI2MDM3MjA1YzU1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitW
ZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVJbWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyk7CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBmMWMwNTliYmY4MjI3YjAx
N2U0ODMwNzA4ZDIyZDI0ZGI0ZDA0MGRiLi43MjkzMTMyMzlkNWQ1YTFiOWFmMDhhZDdmNDU0ZDZm
Yjk0ZWFhZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNTcsNiArNTcsNyBAQCBl
eHRlcm4gIkMiIHsKICAgICBNKElQQykgXAogICAgIE0oSVRQRGVidWcpIFwKICAgICBNKEljb25E
YXRhYmFzZSkgXAorICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERikgXAogICAg
IE0oSW5jcmVtZW50YWxQREZWZXJib3NlKSBcCiAgICAgTShJbmRleGVkREIpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGFmMDhmNmQ1ZWZiNGFhYTg2YjEwNGE0OWM5ODU1ZjIwNzI1YjY4MDguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVz
dGluYXRpb24sIENHUmVjdCBzb3VyY2UpCi17Ci0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250
ZXh0KTsKLQotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShkZXN0
aW5hdGlvbi54LCBkZXN0aW5hdGlvbi55LCBzb3VyY2Uuc2l6ZS53aWR0aCwgc291cmNlLnNpemUu
aGVpZ2h0KSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwotCi0gICAg
Q0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpIC8gc2NhbGVGYWN0
b3I7Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAvIHNj
YWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLnggLSBzb3VyY2Uu
b3JpZ2luLng7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9u
LnkgKyBzb3VyY2Uub3JpZ2luLnk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwg
Q0dSZWN0TWFrZShkZXN0WCwgZGVzdFksIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2Up
OwotCi0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MWQxODFhOGZjNzU3M2M5MzBjZmM2MDNiMGY0MTQy
ODc0N2IyMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ0dVdGlsaXRpZXNfaAotI2RlZmlu
ZSBDR1V0aWxpdGllc19oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50SW1hZ2Uo
Q0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBDR1BvaW50IGRl
c3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBDR1V0aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9JbWFn
ZVV0aWxpdGllc0NHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzQyZTVhOTUwNzUzYzA5ZTllNjdjYjFkOWU3
MDViZDk1NDZkN2JmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
Zy9JbWFnZVV0aWxpdGllc0NHLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5oIgorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJVXRpbGl0aWVz
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgU3RyaW5nIHRyYW5zY29kZUlt
YWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBB
U1NFUlQobWltZVR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIl9zKSk7CisKKyAgICAvLyBUaGlzIGZ1
bmN0aW9uIHRyYW5zY29kZXMgZmlsZXMgb25seS4KKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlz
RGlyZWN0b3J5KHBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olll
cykpCisgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisKKyAgICAvLyBFbnN1cmUgdGhlICdw
YXRoJyBpcyBhY3R1YWxseSBhbiBpbWFnZSBmaWxlLgorICAgIGF1dG8gc291cmNlVVJMID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkp
OworICAgIGF1dG8gc291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTChz
b3VyY2VVUkwuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0
dXJuIG51bGxTdHJpbmcoKTsKKworICAgIC8vIEVuc3VyZSB0aGUgZm9ybWF0IG9mIHRoZSBpbWFn
ZSBzb3VyY2UgaXMgZGlmZmVyZW50IGZyb20gJ21pbWVUeXBlJy4KKyAgICBhdXRvIHNvdXJjZVVU
SSA9IFN0cmluZyhDR0ltYWdlU291cmNlR2V0VHlwZShzb3VyY2UuZ2V0KCkpKTsKKyAgICBhdXRv
IHJlcGxhY2VtZW50VVRJID0gV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKKyAg
ICBpZiAoc291cmNlVVRJID09IHJlcGxhY2VtZW50VVRJKQorICAgICAgICByZXR1cm4gbnVsbFN0
cmluZygpOworCisgICAgLy8gVGhlIGZpbGUgZXh0ZW5zaW9uIGlzIGltcG9ydGFudCBiZWNhdXNl
IGl0IHJldmVhbHMgdGhlIE1JTUUgdHlwZSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUuCisgICAgYXV0
byBzdWZmaXggPSBtYWtlU3RyaW5nKCcuJywgV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cHJl
ZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpKTsKKworICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSByZXBsYWNlbWVudEZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHJl
cGxhY2VtZW50UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wSW1hZ2Ui
X3MsIHJlcGxhY2VtZW50RmlsZUhhbmRsZSwgc3VmZml4KTsKKyAgICBpZiAocmVwbGFjZW1lbnRG
aWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSW1hZ2VzLCAidHJhbnNjb2RlSW1hZ2U6IFJlcGxhY2Vt
ZW50IGltYWdlIGNvdWxkIG5vdCBiZSBjcmVhdGVkOiAlcyAlc1xuIiwgcGF0aC51dGY4KCkuZGF0
YSgpLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmco
KTsKKyAgICB9CisKKyAgICBDR0RhdGFDb25zdW1lckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7Cisg
ICAgICAgIFtdKHZvaWQqIGluZm8sIGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50KSAt
PiBzaXplX3QgeworICAgICAgICAgICAgYXV0byBoYW5kbGUgPSAqc3RhdGljX2Nhc3Q8RmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKj4oaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVm
ZmVyKSwgY291bnQpOworICAgICAgICB9LAorICAgICAgICBudWxscHRyCisgICAgfTsKKworICAg
IGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlKCZyZXBsYWNlbWVu
dEZpbGVIYW5kbGUsICZjYWxsYmFja3MpKTsKKyAgICBhdXRvIHJlcGxhY2VtZW50ID0gYWRvcHRD
RihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YUNvbnN1bWVyKGNvbnN1bWVyLmdldCgp
LCByZXBsYWNlbWVudFVUSS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAxLCBudWxscHRyKSk7CisK
KyAgICAvLyBXcml0ZSB0aGUgc291cmNlIGltYWdlIHRvIHRoZSByZXBsYWNlbWVudCBpbWFnZS4K
KyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3VyY2UocmVwbGFjZW1lbnQuZ2V0
KCksIHNvdXJjZS5nZXQoKSwgMCwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmlu
YWxpemUocmVwbGFjZW1lbnQuZ2V0KCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXBs
YWNlbWVudEZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIHJlcGxhY2VtZW50UGF0aDsKK30KKwor
VmVjdG9yPFN0cmluZz4gdHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRo
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCit7CisgICAgU3RyaW5n
IG1pbWVUeXBlRm9yRW5jb2RpbmcgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJy
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoYWxsb3dlZE1JTUVUeXBlcywgeyB9KTsKKyAgICBp
ZiAobWltZVR5cGVGb3JFbmNvZGluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlcGxhY2VtZW50UGF0aHM7CisgICAgcmVwbGFjZW1lbnRQYXRo
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhdGhzLnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8m
IHBhdGggOiBwYXRocykgeworICAgICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5jb250YWlucyhX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocGF0aCkpKQorICAgICAg
ICAgICAgcmVwbGFjZW1lbnRQYXRocy51bmNoZWNrZWRBcHBlbmQobnVsbFN0cmluZygpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXRocy51bmNoZWNrZWRBcHBlbmQo
dHJhbnNjb2RlSW1hZ2UocGF0aCwgbWltZVR5cGVGb3JFbmNvZGluZykpOworICAgIH0KKworICAg
IHJldHVybiByZXBsYWNlbWVudFBhdGhzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA1YzRj
MzYyMDBkY2E2YWQ1ZGQwZTRkZmY3NjIxOTlmOWNkY2JjNDBjLi43MzBkYTY0OGYyYjJmZTllNzg0
ZmQwNDA1MmUxOTBmMGQwYmYyMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+
CiAjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxwYWwv
c3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlICJDR1V0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtMTA2LDEyICsxMDYsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogCiB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkK
IHsKLSAgICBwYWludEltYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1ha2VDR0ltYWdl
Q29weSgpLmdldCgpLCAxLCBkZXN0aW5hdGlvbiwgc291cmNlKTsKKyAgICBkcmF3TmF0aXZlSW1h
Z2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwog
fQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCiB7Ci0gICAgcGFpbnRJbWFnZShjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpLCBtYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKSwgc2NhbGVGYWN0b3IsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UpOworICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwg
Y29udGV4dCwgc2NhbGVGYWN0b3IsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGFiNjJhOTQwNDkyMTg3ZGY1OGZiNjE1MjMzZTIyMDRjMDU0NzBk
ZTYuLmMwMzBmYWNmYzgyODMyYzNmYTc2ZDBmYWRmZTgxOTY1NjNkNTI4Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTY1LDcgKzY1LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkubW0KIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKLVBsYXRmb3JtL2Nn
L0NHVXRpbGl0aWVzLmNwcAorUGxhdGZvcm0vY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKIAogUGxh
dGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNv
Y29hLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
Zmllci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1JlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCmluZGV4IGFmYWY2ZTQ4YmMzNmE5NTc3MmMxM2U1
N2MyYjJhODJkMThkZDM0NzQuLmZhMDYzMjA2MThhNDZlOTFkODI3ZDUwNjcwYzIwNWMxNzE3NmIz
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcApAQCAtNTgsNiArNTgsMTEgQEAgV0tBcnJheVJlZiBX
S09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKICAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChwYXJhbWV0ZXJzUmVmKS0+YWNj
ZXB0RmlsZUV4dGVuc2lvbnMoKS5sZWFrUmVmKCkpOwogfQogCitXS0FycmF5UmVmIFdLT3BlblBh
bmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1Jl
ZiBwYXJhbWV0ZXJzUmVmKQoreworICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhcmFtZXRlcnNS
ZWYpLT5hbGxvd2VkTUlNRVR5cGVzKCkubGVha1JlZigpKTsKK30KKwogLy8gRGVwcmVjYXRlZC4K
IFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlDYXB0dXJlKFdLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKaW5kZXggMDU5ZjdjZmMwNjFlZmM0YmVl
ZmY1OTEzMmUwZTZmNDlkOTBmZmM2OC4uN2QxMzI5ODRiYTc1Njc2ZjU2NGNhY2YwNDY5ZGQxOWU2
ODM0ZjVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKQEAgLTQ1LDYgKzQ1LDggQEAgV0tfRVhQT1JUIGJv
b2wgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlBY2NlcHRlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7
CiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRG
aWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CiAKK1dL
X0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5
cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKKwogLyogREVQUkVDQVRF
RCAtIFBsZWFzZSB1c2UgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0Q2FwdHVyZUVuYWJsZWQoKSBp
bnN0ZWFkLiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlDYXB0dXJlKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcAppbmRleCAyYjM5NGZjOGJkYTc0MjE3YzE3MzUxMjc2MzY1NjU5OGE0Yjg0
MmI5Li5iNjExODgxNzE4ODUyYjUwMzU5ODRmMzUwNzAyZjE3OTFhMmVlZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcApAQCAtNjMsOSArNjMsOSBAQCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJDaG9vc2VNZWRpYUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdAog
fQogI2VuZGlmCiAKLXZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVS
THNSZWYpCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVm
LCBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXNSZWYpCiB7Ci0gICAgdG9JbXBsKGxpc3RlbmVy
UmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNS
ZWYpKSk7CisgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJv
bUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNSZWYpKSwgdG9JbXBsKGFsbG93ZWRNaW1lVHlwZXNS
ZWYpLT50b1N0cmluZ1ZlY3RvcigpKTsKIH0KIAogdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyQ2FuY2VsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmgKaW5kZXggNjk5OTc2ZmFhMmFkZGU0NzhjZWY2YzRlMWIwZmVmODQ1MDk4YWVh
OC4uYWFiYmUxOWQ3MjJlZjY0MTQyNmNjMTU5MWEzNTZiYTA3MzQ0ZDdhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaApAQCAtMzUsNyArMzUsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyR2V0VHlwZUlEKHZvaWQpOwogCiBXS19FWFBPUlQg
dm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlTWVkaWFGaWxlcyhXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVmLCBX
S1N0cmluZ1JlZiBkaXNwbGF5U3RyaW5nLCBXS0RhdGFSZWYgaWNvbkltYWdlRGF0YVJlZik7Ci1X
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcyk7CitX
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcywgV0tB
cnJheVJlZiBhbGxvd2VkTWltZVR5cGVzUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
cik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMWQxMmE1ODBlNWEwNDk1ZWY2YWVhNWFkMzI3N2I4NzViZTdiZTgxOC4u
Y2I2NWQ3ZTlkOTg4ZjVkNTc1MTViYTNlMzlhOGEwYzdkN2ExYTAzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAi
RXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC02NjkwLDE3ICs2NjkxLDI3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3Ry
aW5nQW5kSWNvbihjb25zdCBWZWN0CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byByZXBs
YWNlbWVudFVSTHMgPSB0cmFuc2NvZGVJbWFnZXMoZmlsZVVSTHMsIGFsbG93ZWRNSU1FVHlwZXMp
OworI2Vsc2UKKyAgICBWZWN0b3I8U3RyaW5nPiByZXBsYWNlbWVudFVSTHM7CisgICAgVU5VU0VE
X1BBUkFNKGFsbG93ZWRNSU1FVHlwZXMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoU0FOREJPWF9F
WFRFTlNJT05TKQotICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgZmlsZVVSTHMpOworICAgIFZlY3RvcjxTdHJpbmc+
IHNhbmRib3hFeHRlbnNpb25GaWxlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZp
bGVVUkxzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZp
bGVzLmFwcGVuZChpIDwgcmVwbGFjZW1lbnRVUkxzLnNpemUoKSAmJiAhcmVwbGFjZW1lbnRVUkxz
W2ldLmlzTnVsbCgpID8gcmVwbGFjZW1lbnRVUkxzW2ldIDogZmlsZVVSTHNbaV0pOworICAgIGF1
dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFk
T25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbCJfcywgc2FuZGJveEV4dGVuc2lvbkZpbGVzKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZXMpKSk7CiAjZW5kaWYKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzLCB7IH0pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgcmVw
bGFjZW1lbnRVUkxzKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlk
YXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Yzk0OGFj
YzMxYzU5MmNmMmRhNzliY2QzZDkxMTA3YTkwYmI5NDgyLi41M2Q3Zjg1NGYyY2ExOGQ0Mzk0ZDMx
NjMxMTdlODdmMTIxNjRiMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MCw3ICsyOTAsNyBAQAogCQkxQTlGQkE4RDEzRkYwNEU2
MDBERUVENjcgLyogUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGQkE4QzEzRkYwNEU2MDBERUVENjcg
LyogUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmggKi87IH07CiAJCTFBQTEzMjEyMTkxRDU5
MjQwMDlDMTQ4OSAvKiBXS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTEzMjExMTkxRDU5MjQwMDlDMTQ4
OSAvKiBXS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUEyMEQ1MTE4QUQ1MEUwMDA1RDFFRDQgLyog
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyMEQ1MDE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMUFBMkU1MUQxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyRTUxQjEy
RTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuaCAqLzsgfTsKKwkJMUFBMkU1MUQxMkU0QzA1
RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGls
aXRpZXMuaCAqLzsgfTsKIAkJMUFBMkU1NjcxOEQ3NzUwODAwMzgxNEJEIC8qIFdLV2ViUHJvY2Vz
c0J1bmRsZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQTJFNTY1MThENzc1MDgwMDM4MTRCRCAvKiBXS1dlYlByb2Nlc3NCdW5kbGVQ
YXJhbWV0ZXJzLmggKi87IH07CiAJCTFBQTNENzVDMTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVM
YXllclRyZWVIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUEzRDc1QTE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5oICov
OyB9OwogCQkxQUE0MTdDQjEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTQxN0M5MTJDMDBDQ0Ew
MDJCRTY3QiAvKiBUZXh0Q2hlY2tlci5oICovOyB9OwpAQCAtMjUwOSw4ICsyNTA5LDggQEAKIAkJ
MUFBMUNDNUMxMDBGQTFBMTAwNzhERUJDIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdv
cms7IG5hbWUgPSBRdWFydHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4i
OyB9OwogCQkxQUExQ0QwNjEwMEZBMUJBMDA3OERFQkMgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJh
bWV3b3JrOyBuYW1lID0gQ2FyYm9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07
CiAJCTFBQTIwRDUwMThBRDUwRTAwMDVEMUVENCAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQTJFNTFCMTJFNEMw
NUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDR1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUEyRTUx
QzEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ0dVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFBMkU1MUMxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRp
bGl0aWVzQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VV
dGlsaXRpZXNDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTJFNTY0MThE
Nzc1MDgwMDM4MTRCRCAvKiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1l
dGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBMkU1NjUxOEQ3NzUwODAw
MzgxNEJEIC8qIFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUEzRDc1OTE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlbW90ZUxheWVyVHJlZUhvc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
OTQ4LDggKzU5NDgsNyBAQAogCQkxQUEyRTUxQTEyRTRDMDU2MDBCQzQ5NjYgLyogY2cgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTFBQTJFNTFDMTJFNEMw
NUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5jcHAgKi8sCi0JCQkJMUFBMkU1MUIxMkU0QzA1RTAw
QkM0OTY2IC8qIENHVXRpbGl0aWVzLmggKi8sCisJCQkJMUFBMkU1MUMxMkU0QzA1RTAwQkM0OTY2
IC8qIEltYWdlVXRpbGl0aWVzQ0cuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05NTc1LDYgKzk1NzQsNyBAQAogCQkJCTUxQjE1QTdE
MTM4NDM5QjIwMDMyMUFEOCAvKiB1bml4ICovLAogCQkJCUVDQTY4MEQzMUU2OTA0QjUwMDczMUQy
MCAvKiBFeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oICovLAogCQkJCUVDQkZDMURCMUU2QTRE
NjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8sCisJCQkJMUFBMkU1
MUIxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0aWVzLmggKi8sCiAJCQkJNTFBN0YyRjQx
MjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwICovLAogCQkJCTUxQTdGMkYyMTI1QkY4MjAw
MDhBRUIxRCAvKiBMb2dnaW5nLmggKi8sCiAJCQkJMEZEQ0Q3RjYxRDQ3RTkyQTAwOUYwOEJDIC8q
IExvZ0luaXRpYWxpemF0aW9uLmggKi8sCkBAIC0xMDc1NCw3ICsxMDc1NCw2IEBACiAJCQkJNDE4
OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5N0VEQTFGNDE1RDhBMDAxNkZBNDIgLyogQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFBMkU1MUQx
MkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I0
QjQ2MDIwQjUwNEFDMDBENEFENzkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQ
Q0NvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRGRTBBM0IyNDYzMkI2MDAwMjYzMUUx
IC8qIENvY29hQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0ODI3MzQ3MjQ1MjhGNjAwMEE5
NTQ5MyAvKiBDb2NvYUltYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwODMzLDYgKzEwODMyLDcg
QEAKIAkJCQk1MUMwQzk3NDFEREQ3NjAwMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMzUxQ0IxODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZCMjUxMkM5M0U3QTAwOEY5QzM1IC8qIElt
YWdlT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFBMkU1MUQxMkU0QzA1RTAwQkM0OTY2
IC8qIEltYWdlVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFFQzY5RTE4NzIwOTIx
MDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMy
MDRFRTMxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0VFN0RDNTEyOEI2NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDA5YjVlYzBhZDUxNDU4M2I4ZjM1M2E4YWYwYThiNjg2NzJhMGUwOGEuLjkwOTQ0
YjYxYmUzNTIzMDI1ZDJmMjg2ZjU3NWI4ZWRlZDA3NmYzZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNy0w
NiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IFttYWNPU106IEEgSEVJRiBpbWFnZSwgc2VsZWN0ZWQgZnJvbSB0aGUgT3BlblBhbmVsLCBzaG91
bGQgYmUgY29udmVydGVkIHRvIGFuIGFjY2VwdGVkIE1JTUUgdHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81NzI1ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpydW5PcGVuUGFuZWwpOgorCiAyMDIwLTA3LTA1ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIE1vdmUgYWxtb3N0IGFsbCBmZWF0dXJlcyBm
cm9tIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRvIFBsYXRmb3JtRW5hYmxlQ29jb2EuaApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAyYmQ3OTE4NjI2YzA4
ZjQzYzdmMzRmYmM2ZmM3OTkzMDU5YTMyYWQ5Li44ZjgyNTA5OTcyZWE4YTEyYzQ5ZWYwNGViYzMw
NTkzNjllYzc0Y2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtMjIzLDEyICsyMjMsMTQgQEAgc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnMKICAgICB9CiAj
ZW5kaWYKIAorICAgIFdLQXJyYXlSZWYgYWxsb3dlZE1pbWVUeXBlcyA9IFdLT3BlblBhbmVsUGFy
YW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKHBhcmFtZXRlcnMpOworCiAgICAgaWYgKFdLT3Bl
blBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxlRmlsZXMocGFyYW1ldGVycykpIHsKLSAg
ICAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVy
UmVmLCBmaWxlVVJMcyk7CisgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VG
aWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwgZmlsZVVSTHMsIGFsbG93ZWRNaW1lVHlwZXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29z
ZUZpbGVzKHJlc3VsdExpc3RlbmVyUmVmLCBhZG9wdFdLKFdLQXJyYXlDcmVhdGUoJmZpcnN0SXRl
bSwgMSkpLmdldCgpKTsKKyAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMo
cmVzdWx0TGlzdGVuZXJSZWYsIGFkb3B0V0soV0tBcnJheUNyZWF0ZSgmZmlyc3RJdGVtLCAxKSku
Z2V0KCksIGFsbG93ZWRNaW1lVHlwZXMpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpydW5N
b2RhbChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxN2Qz
MGUzZDc2NTc4ZjE5YmMyNmNhNTg4YTJiNmE2MWIwODI1MjU4Li5lNzU5YzQ4ODdiYmFjZTg4NmJk
NzMwZTA4ODlhYzZhZTFmZmEwYzBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDctMDYg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxk
IGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5zdXJlIHRoZSBIRUlGIGltYWdlIGlzIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRl
ZCBNSU1FIHR5cGUgd2hlbiBpdCBpcyAKKyAgICAgICAgc2VsZWN0ZWQgZnJvbSB0aGUgT3BlblBh
bmVsIGFuZCB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlIG9mIHRoZSA8aW5wdXQ+CisgICAgICAgIGRv
ZXMgYWxsb3cgdGhlIEhFSUYgTUlNRSB0eXBlLgorCisgICAgICAgIE5vIG5lZWQgdG8gdGVzdCB0
aGlzIGZ1bmN0aW9uYWxpdHkgb24gV0sxIHNpbmNlIHRoZSBpbWFnZSB0cmFuc2NvZGluZyAKKyAg
ICAgICAgc2hvdWxkIGhhcHBlbiBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdl
LW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFn
ZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2Vz
L2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNy0wMyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBzaG91bGQgc3VwcG9ydCBw
ZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNrcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MzJiM2Q4ODZlODMyNjY0NTM3NDA0MWMyOTczMDEzOGJhYzJhNzc3Zi4uMmU3NjU1ZDc5ZDFjNDlm
MmExNjhmN2RkNjMwY2IzYzI4NTM3MTM4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC04NjYsNiAr
ODY2LDggQEAgaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLXJlc291cmNlLXBvbGljeS8gWyBTa2lwIF0K
IAogIyB0ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkgb25seSB3b3JrcyBpbiBX
ZWJLaXQyCiBmYXN0L2ZpbGVzL2Jsb2ItbmV0d29yay1wcm9jZXNzLWNyYXNoLmh0bWwgWyBTa2lw
IF0KK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5l
bC5odG1sIFsgU2tpcCBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJh
bnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFNraXAgXQogCiAjIFRoaXMgdGVzdCBpcyBjdXJyZW50
bHkgb25seSByZWxldmFudCBvbiBtYWMtd2syCiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVw
ZGF0ZS1vbi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9l
bnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzk1ZWE4NjA4ZjA4MjBlZDE0NmNmMDg4NTZlNjY4NDk4NGRiMDAxZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFn
ZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAor
T1BFTiBGSUxFIFBBTkVMCitUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUg
cGlja2VyIHdoaWNoIGFjY2VwdHMgSEVJQywgd2lsbCBub3QgYmUgY29udmVydGVkIHRvIGFueSBz
dXBwb3J0ZWQgTUlNRSB0eXBlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBmaWxlTGlzdC5sZW5ndGggaXMgMQorUEFTUyBmaWxlLnR5cGUgaXMgImltYWdlL2hlaWMiCitQ
QVNTIGZpbGUuc2l6ZSBpcyBub24temVyby4KK0ltYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuCitQ
QVNTIGltZy53aWR0aCBpcyBub3QgNDAwCitQQVNTIGltZy5oZWlnaHQgaXMgbm90IDQwMAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRy
YW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NTg0ZDU1OTQzNGZhNzk0MjdlNmZkZDZlODAzNDMwMjQ1MzVhYzIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5z
Y29kZS1vcGVuLXBhbmVsLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5
cGU9ImZpbGUiIGFjY2VwdD0iSU1BR0UvSEVJQyIgb25jaGFuZ2U9ImNoYW5nZWQoZXZlbnQpIj48
L2lucHV0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBhIEhFSUMg
aW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgSEVJQywgd2ls
bCBub3QgYmUgY29udmVydGVkIHRvIGFueSBzdXBwb3J0ZWQgTUlNRSB0eXBlLiIpOworICAgICAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhbJ3Jlc291
cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWljJ10pOworCisgICAgICAgICAgICBpbnB1dEVs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKyAgICAg
ICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoaW5wdXRFbGVtZW50Lm9mZnNldExlZnQgKyBpbnB1
dEVsZW1lbnQub2Zmc2V0V2lkdGggLyAyLAorICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudC5v
ZmZzZXRUb3AgKyBpbnB1dEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBm
aWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlczsKKyAgICAgICAgICAgIHNob3VsZEJlKCJmaWxl
TGlzdC5sZW5ndGgiLCAiMSIpOworCisgICAgICAgICAgICBmaWxlID0gZmlsZUxpc3RbMF07Cisg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUudHlwZSIsICJpbWFnZS9oZWlj
Iik7CisgICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZpbGUuc2l6ZSIpOworCisgICAgICAg
ICAgICBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgICAgICAgICAgdmFyIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gewor
ICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGRlYnVnKCJJbWFnZSB3YXMgbG9hZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZSgiaW1nLndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1n
LmhlaWdodCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcub25lcnJvciA9ICgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJpbWcud2lkdGgiLCAiNDAwIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJpbWcuaGVpZ2h0IiwgIjQwMCIpOworICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVzdWx0OworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOworICAgICAgICB9CisgICAgICAg
IHJ1blRlc3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUt
b3Blbi1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50
cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUxMTQ2MGJhYjg4YzNmYzYyMmY2ZmIzYTE2MDY3OTI2NzM0MzRhYzgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJh
bnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK09QRU4gRklM
RSBQQU5FTAorVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlhIHRoZSBmaWxlIHBpY2tlciB3
aGljaCBhY2NlcHRzIFBORywgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBQTkcgaW1hZ2UuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZpbGVMaXN0Lmxlbmd0aCBpcyAxCitQ
QVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvcG5nIgorUEFTUyBmaWxlLnNpemUgaXMgbm9uLXplcm8u
CitJbWFnZSB3YXMgbG9hZGVkLgorUEFTUyBpbWcud2lkdGggaXMgNDAwCitQQVNTIGltZy5oZWln
aHQgaXMgNDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKyAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1h
cGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE5NWEyOWE3M2I4MzVhNTEyYjM2MmFhYjMyM2ZmZjhiOWJiZTczNmIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Ut
dHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW5w
dXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIucG5nIiBvbmNoYW5nZT0iY2hhbmdlZChldmVudCkiPjwv
aW5wdXQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIGEgSEVJQyBp
bWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBQTkcsIHdpbGwg
YmUgY29udmVydGVkIHRvIGEgUE5HIGltYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhbJ3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4t
NDAweDQwMC5oZWljJ10pOworCisgICAgICAgICAgICBpbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKyAgICAgICAgICAgIFVJSGVscGVyLmFj
dGl2YXRlQXQoaW5wdXRFbGVtZW50Lm9mZnNldExlZnQgKyBpbnB1dEVsZW1lbnQub2Zmc2V0V2lk
dGggLyAyLAorICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudC5vZmZzZXRUb3AgKyBpbnB1dEVs
ZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGFuZ2VkKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlTGlzdCA9IGV2ZW50LnRh
cmdldC5maWxlczsKKyAgICAgICAgICAgIHNob3VsZEJlKCJmaWxlTGlzdC5sZW5ndGgiLCAiMSIp
OworCisgICAgICAgICAgICBmaWxlID0gZmlsZUxpc3RbMF07CisgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImZpbGUudHlwZSIsICJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlTm9uWmVybygiZmlsZS5zaXplIik7CisKKyAgICAgICAgICAgIGltZyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChpbWcpOworCisgICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsK
KyAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgaW1n
Lm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIHdhcyBs
b2FkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcud2lkdGgiLCAiNDAw
Iik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcuaGVpZ2h0IiwgIjQwMCIpOwor
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4geworICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkTm90QmUoImltZy53aWR0aCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAg
c2hvdWxkTm90QmUoImltZy5oZWlnaHQiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgaW1nLnNy
YyA9IHJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgcmVhZGVyLnJl
YWRBc0RhdGFVUkwoZmlsZSk7CisgICAgICAgIH0KKyAgICAgICAgcnVuVGVzdCgpOworICAgIDwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWlj
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFn
ZXMvZ3JlZW4tNDAweDQwMC5oZWljCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZjg1OWQ4ZGExZGYxMTYyNTRkYTYz
OTM1NTllNTllOTY5Y2E3YjYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDcxMAp6Y21Zak9PS1RI
UjZoM0VXOGREbGxRITNUIUI0YGpQaDEhKl9ZJjVBbCNmWntId1gxfWczQXZhdCpYZ0xPMih+RUoK
emckcktgN2hTeyRERU9jWUh6Rz1QRkFDfiFzUDBfMj0pd31lR24yRik9SHZVJD4peUhONVloSChJ
SHpsI2F0SjJ1Cnp0TGk4Ynp3b2BWQX5EJFJucCtRSU51LXElY0p2MTRUeT8kKlo8aVoqIWVSYGhF
KFl+JVRjQD1PZWRzdUlQe2tjWQp6MXxyK3djcHt7JGNGRG1YWXpBM00jJUVQQEBTeGhmQT8+JmA0
dzQrKl47emphcXdUZlFQNklyTGF8K0M1JFlwP04Kej5eSj5nVXQxJlVISmopZCRhOUtZRWgjWGkh
anh9cHhjZD11ZHlhNl9gQ3A9JHh8SkFUZFloWkRGQn53OCM4Y3hqCno+TX0pTXNxfiVifENQeik/
N3JnTnAqLSZDUzJObEohfXZ9Tj5RK0dgOHJ4UV9XfGdHT1dISmRGUH09WHo4U2soYgp6ak8hTXsh
PlpuaFIjS0QhJHRWRzEzZnpiVzI5TGtOeUNFNmh0K1pGZGNteVRsUyhRcE8xVFJTejRebyVaMGYl
XyEKemhDYSZzPGs1JkB6S2U/RlVhMl89aCNkI1NrRDJlP3ElSDd2MEErdjxQWm4kJlRuTX5NPSgq
WDtEeShJWCpgLXNHCnpKaHp1JEVxJUUxe1h6YT9fUyQ7eXlWbHFEVTthIzhvdGB9WD5GbXFxJG42
b2ImTG49MG4mfkkyJm5EKG1FOXFzZAppJSVtVWxfaTRjQE42WUFXeEVMe2h2RmxBb1clanB+RzJJ
cUQmO0oxX1IoTlV2CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjU1MDNmOGE4ZmM4YTI5MDY1MTg0
ZDYxZjEzODNlMGIxMzdmYjc3OS4uMjc1MTViM2Q3MDMzM2Q3ZWEzZmY5OTUxYjAyNjUyODlhY2Vh
MWFiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtODUsNiArODUsOSBAQCBmYXN0L2V2ZW50cy9pbmFjdGl2ZS13aW5kb3ctbm8tbW91c2Ut
ZXZlbnQuaHRtbCBbIFBhc3MgXQogCiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1m
cmFtZS1pbi10d28tcGFnZXMuaHRtbCBbIFBhc3MgXQogCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmll
cy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQorZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQ
YXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZv
cm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403849</attachid>
            <date>2020-07-09 01:05:49 -0700</date>
            <delta_ts>2020-07-09 01:28:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200709010548.patch</filename>
            <type>text/plain</type>
            <size>55117</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA3MGFkMTgyYjliNzBkMTU2MjhkY2Yw
MzkwMmM2YTIxZDkzOTVjMzkuLjdlNTFlYzNiOWY2MGUxZjY3YTBmMTI5YjAxMTFmNmI2NGY1YTUz
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2Us
IHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBh
Y2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYSBzdWZm
aXggdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIFRoZSBnb2FsIGlz
IHRvCisgICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbWFnZSBm
aWxlcyB3aXRoIHZhbGlkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5o
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFy
eUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAtMDctMDggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBwb3NzaWJsZSB0byBlc3Rh
Ymxpc2ggZGlyZWN0IFhQQyBjb25uZWN0aW9ucyBiZXR3ZWVuIFdlYktpdCBwcm9jZXNzZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYTVlZmJhYjExMzI5NjhjYmFkZTRhY2RiMDMyNmU4MDUwZDJjMmQ5Li4wYWJh
MjE4NjM5MWI4YzQwYjc2Mjk4NDc5ZTAyNmVkMGU5NzBhMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20g
dGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphbGxvd2VkTUlNRVR5cGVzKToKKyAgICAgICAg
TWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBsb3dlcmNhc2UgTUlNRSB0eXBlcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToK
KwogMjAyMC0wNy0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
UGFydCAzIG9mIFNpbXBsZUNvbG9yIGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkg
dGhlIHNhbWUgLSBsZXQncyBjb252ZXJnZSB0aGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNDczMjBhZDI1MTcy
MzgxNWI2MGZjZTAwMjMzNTcwYWViZTIwYzUuLmUyM2VlZDBjOWVmYThmYzgxODE5OTQyZGRmOGQ5
OTU3OTUzZTNlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDctMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1Nd
OiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNv
bnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgZ2l2ZW4gdGhlIGxpc3Qgb2YgdGhlIHNlbGVjdGVkIGZp
bGUgYW5kIHRoZSBhbGxvd2VkCisgICAgICAgIE1JTUUgdHlwZXMuIE9ubHkgc2VsZWN0ZWQgZmls
ZXMgd2hvc2UgTUlNRSB0eXBlcyBkbyBub3QgZXhpc3QgaW4gdGhlIGFsbG93ZWQKKyAgICAgICAg
TUlNRSB0eXBlcyB3aWxsIGJlIHRyYW5zY29kZWQuIFJpZ2h0IG5vdywgdGhpcyBvbmx5IHdpbGwg
YXBwbHkgdG8gdGhlIEhFSUYKKyAgICAgICAgaW1hZ2VzIG9uIG1hY09TLgorCisgICAgICAgICog
UGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY2cvQ0dVdGlsaXRpZXMuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFBsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpmaW5kSW1hZ2VzRm9yVHJhbnNj
b2RpbmcpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZXMpOgorICAgICAgICBJbXBs
ZW1lbnQgYSBmdW5jdGlvbiB0aGF0IHRyYW5zY29kZXMgaW1hZ2VzIGFtb25nIGEgc2V0IG9mIGZp
bGVzIGdpdmVuCisgICAgICAgIHRoZSBhbGxvd2VkTUlNRVR5cGVzLiBUaGUgZGVzdGluYXRpb24g
TUlNRSB0eXBlIG9mIHRoZXNlIGltYWdlcyBpcyB0aGUKKyAgICAgICAgZmlyc3QgTUlNRSB0eXBl
IGluIHRoZSBhbGxvd2VkTUlNRVR5cGVzIHdoaWNoIENHIHN1cHBvcnRzIGVuY29kaW5nIHRvLgor
CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisgICAgICAgIENhbGwgZHJhd05hdGl2ZUlt
YWdlKCkgYWZ0ZXIgcmVuYW1pbmcgcGFpbnRJbWFnZSgpIHRvIGRyYXdOYXRpdmVJbWFnZSgpLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwOgorICAgICAgICAoV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyQ2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgIFRyYW5zZmVyIHRoZSBsaXN0IG9mIHRoZSBhbGxv
d2VkIE1JTUUgdHlwZXMgZnJvbSB0aGUgT3BlblBhbmVsIHRvIHRoZQorICAgICAgICBmaWxlIGNo
b29zZXIgbGlzdGVuZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV90cmFuc2NvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29k
aW5nKToKKyAgICAgICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgaW4gYSB3b3JrIHF1ZXVlIHNvIHRo
ZSBVSSBwcm9jZXNzIGlzIG5vdCBibG9ja2VkLiAKKyAgICAgICAgT25jZSB0aGUgdHJhbnNjb2Rp
bmcgZmluaXNoZXMsIHRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCB0byB0aGUgV2ViUGFnZS4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDctMDggIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGlu
ZyByMjY0MTMyIGFuZCByMjY0MTM5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDYwYjMyZTQ2ZmM0Mjkw
ODIzYTYyOWJkYTNlZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQzYzZkNTJhOGE4YWYxNTVlNmU4
ZWU4ZjkxMjAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhl
ZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYp
OworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7
IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxl
QWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSBmYWxzZSk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiAv
LyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
ZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0ZmZhODlkNGRjZGY0MGFjMWIx
Yjg3ZC4uZGZkODIyNTQwZWE2MmM1N2Q1MDNhNTM3NmRhY2Y3ZGFmMGEzNDE5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcg
aG9tZURpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKIH0KIAot
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5k
bGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKQEAgLTExMyw5ICsxMTMsMTMgQEAgU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IHBsYXRmb3JtRmlsZUgKICAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgpOwog
ICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4VXRm
OC5sZW5ndGgoKSk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2KTsK
KyAgICAKKyAgICAvLyBBcHBlbmQgdGhlIGZpbGUgbmFtZSBzdWZmaXguCisgICAgQ1N0cmluZyBz
dWZmaXhVdGY4ID0gc3VmZml4LnV0ZjgoKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQo
c3VmZml4VXRmOC5kYXRhKCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZCgnXDAnKTsKIAotICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAo
dGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKKyAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0
ZW1wcyh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAg
IGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwCmluZGV4IGU0YWIwMGZiZGFkOWZmYjcxYjUwMjJjY2VjNDFjMTBiNWNhMGY1ZGYuLmZhMGI1
MzFmZTEwZmY3NGViYWI4NjVmM2NhMDkxNWRhMWQ5NTc1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgVmVjdG9yPFN0cmluZz4gbGlz
dERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAg
IHJldHVybiBlbnRyaWVzOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0
cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1w
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIG51
bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGM5
ZjUwMTQzNmFiY2M4MDk0ZTg0MTQ4MGQyMWZlMzZhNDcxZTgxZmYuLmIzYzA0MDFiNTA2ZmRjZTMy
MzJlZDZmZWZiYmJmMGU1MmQxMDAzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNv
bnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcm
KQogewogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBEaXIg
PSBnZXRlbnYoIlRNUERJUiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4
IDY1OWRmZDUyNzI3ZGM5ZWY2OTliN2Y5MjRkNWQyZTcyZDg0ZTBhZTcuLmI2MzE0OTU3M2E0ODQx
ZmU2MDAxZWVmYWZkZDAwOTJjZmM3NDFhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5
UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAgIHJl
dHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICBoYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA5ZTBlMTZkMWFlNDI1
MDdkMTFhYjNmNDIwZWQxMmIxNDRjMWNiMTIxLi43ZGRmOTJkNDYyODE0M2MxY2FkYjlhODgwODc4
ZTIyMjIyZGE1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcApAQCAtODE0LDEzICs4MTQsMTMgQEAgVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdp
c3RyeTo6YWxsb3dlZE1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWltZVR5cGUKICAg
ICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOwogCiAgICAgZm9yIChhdXRvJiBtaW1l
VHlwZSA6IG1pbWVUeXBlcykKLSAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJZk5vdENv
bnRhaW5zKG1pbWVUeXBlKTsKKyAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJZk5vdENv
bnRhaW5zKG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwogCiAgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKSB7CiAgICAgICAgIGF1dG8gbWltZVR5cGUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbih0cmltbWVkRXh0ZW5zaW9uKGV4
dGVuc2lvbikpOwogICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyht
aW1lVHlwZSk7CisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyht
aW1lVHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4g
YWxsb3dlZE1JTUVUeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAppbmRleCAyMTllZTE5NTk3MTM0MjFlY2QwY2QyOWUyMmQ1YjE3YTU1NWYxODAzLi4yMzM3
YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5ODcxNThmZjIwMjM1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAot
ICAgIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBtaW1lVHlwZUZvclBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3Ry
eVRocmVhZEdsb2JhbERhdGE+IGNyZWF0ZU1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
CmluZGV4IGY1ZGZlNDc1Nzk5NGM2OWFlMzQyMGEzNTRkZjY4YzVhNjZhNjAxNTcuLjZiMmQ4MWUz
NWIwOGNmNzRmNGYzNjFhZWJjNzRmMzEyOWM3ZDliN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtNjYsNiArNjYsOCBAQCBib29sIG5h
dGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxl
RmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJj
ZSk7CisKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0
ciYpOwogCiBjbGFzcyBOYXRpdmVJbWFnZUhhbmRsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IDZmZDc3ZTlh
OTdlYWRkZjc1MDM0ZmNlYjQ2MTQ1ZTQ1MzA4ZDM2NzQuLmM4NmFlZTFhMjVjOTZiZjFkZDczNzBi
MWZmYjkzMmUxOGE4MjA4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC04NCw2ICs4NCwyNSBAQCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29ucwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJz
YW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKK3sKKyAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZl
R1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwg
Q0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRo
KCksIHNvdXJjZS5oZWlnaHQoKSkpOworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwg
MSwgLTEpOworCisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworCisgICAgQ0dGbG9hdCBkZXN0
WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7CisgICAgQ0dGbG9hdCBkZXN0WSA9IC1p
bWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55KCk7CisKKyAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0
aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0
YXRlKGNnQ29udGV4dCk7Cit9CisKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE1MDgyZTgwNGMzMmE5
Y2I1NzU3YWFiZDU2YWYzMmY1ZjJjMzg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1ZlY3RvcjxTdHJp
bmc+IGZpbmRJbWFnZXNGb3JUcmFuc2NvZGluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKK1ZlY3RvcjxTdHJpbmc+
IHRyYW5zY29kZUltYWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFN0cmlu
ZyYgdXRpLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBmMWMwNTliYmY4MjI3YjAxN2U0ODMwNzA4
ZDIyZDI0ZGI0ZDA0MGRiLi43MjkzMTMyMzlkNWQ1YTFiOWFmMDhhZDdmNDU0ZDZmYjk0ZWFhZDYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNTcsNiArNTcsNyBAQCBleHRlcm4gIkMi
IHsKICAgICBNKElQQykgXAogICAgIE0oSVRQRGVidWcpIFwKICAgICBNKEljb25EYXRhYmFzZSkg
XAorICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERikgXAogICAgIE0oSW5jcmVt
ZW50YWxQREZWZXJib3NlKSBcCiAgICAgTShJbmRleGVkREIpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFm
MDhmNmQ1ZWZiNGFhYTg2YjEwNGE0OWM5ODU1ZjIwNzI1YjY4MDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9D
R1V0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENH
SW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24s
IENHUmVjdCBzb3VyY2UpCi17Ci0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLQot
ICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54
LCBkZXN0aW5hdGlvbi55LCBzb3VyY2Uuc2l6ZS53aWR0aCwgc291cmNlLnNpemUuaGVpZ2h0KSk7
Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBp
bWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpIC8gc2NhbGVGYWN0b3I7Ci0gICAg
Q0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAvIHNjYWxlRmFjdG9y
OwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLnggLSBzb3VyY2Uub3JpZ2luLng7
Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkgKyBzb3Vy
Y2Uub3JpZ2luLnk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFr
ZShkZXN0WCwgZGVzdFksIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2UpOwotCi0gICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg1MWQxODFhOGZjNzU3M2M5MzBjZmM2MDNiMGY0MTQyODc0N2IyMmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ0dVdGlsaXRpZXNfaAotI2RlZmluZSBDR1V0aWxp
dGllc19oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0
UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBDR1BvaW50IGRlc3RpbmF0aW9u
LCBDR1JlY3Qgc291cmNlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBD
R1V0aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdl
VXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGll
c0NHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40N2RmOWU3MjUyYTA1ODcwOGU5Zjg2ODc0MTIxZTVmNThmNWYz
OWZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0
aWxpdGllc0NHLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5oIgorCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlN
RVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFN0cmlu
ZyB0cmFuc2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25VVEksIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25FeHRlbnNpb24pCit7CisgICAgLy8g
VGhpcyBmdW5jdGlvbiB0cmFuc2NvZGVzIGZpbGVzIG9ubHkuCisgICAgaWYgKEZpbGVTeXN0ZW06
OmZpbGVJc0RpcmVjdG9yeShwYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpZZXMpKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAgLy8gRW5zdXJl
IHRoZSAncGF0aCcgaXMgYWN0dWFsbHkgYW4gaW1hZ2UgZmlsZS4KKyAgICBhdXRvIHNvdXJjZVVS
TCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwg
ZmFsc2UpKTsKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdp
dGhVUkwoc291cmNlVVJMLmdldCgpLCBudWxscHRyKSk7CisgICAgaWYgKCFzb3VyY2UpCisgICAg
ICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisKKyAgICAvLyBFbnN1cmUgdGhlIGZvcm1hdCBvZiB0
aGUgaW1hZ2Ugc291cmNlIGlzIGRpZmZlcmVudCBmcm9tICdtaW1lVHlwZScuCisgICAgYXV0byBz
b3VyY2VVVEkgPSBTdHJpbmcoQ0dJbWFnZVNvdXJjZUdldFR5cGUoc291cmNlLmdldCgpKSk7Cisg
ICAgaWYgKHNvdXJjZVVUSSA9PSBkZXN0aW5hdGlvblVUSSkKKyAgICAgICAgcmV0dXJuIG51bGxT
dHJpbmcoKTsKKworICAgIC8vIFRoZSBmaWxlIGV4dGVuc2lvbiBpcyBpbXBvcnRhbnQgYmVjYXVz
ZSBpdCByZXZlYWxzIHRoZSBNSU1FIHR5cGUgb2YgdGhlIHRlbXBvcmFyeSBmaWxlLgorICAgIGF1
dG8gc3VmZml4ID0gbWFrZVN0cmluZygnLicsIGRlc3RpbmF0aW9uRXh0ZW5zaW9uKTsKKworICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBkZXN0aW5hdGlvbkZpbGVIYW5kbGU7Cisg
ICAgU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wSW1hZ2UiX3MsIGRlc3RpbmF0aW9uRmlsZUhhbmRsZSwgc3VmZml4KTsKKyAgICBpZiAo
ZGVzdGluYXRpb25GaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSW1hZ2VzLCAidHJhbnNjb2RlSW1h
Z2U6IERlc3RpbmF0aW9uIGltYWdlIGNvdWxkIG5vdCBiZSBjcmVhdGVkOiAlcyAlc1xuIiwgcGF0
aC51dGY4KCkuZGF0YSgpLCBkZXN0aW5hdGlvblVUSS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIG51bGxTdHJpbmcoKTsKKyAgICB9CisKKyAgICBDR0RhdGFDb25zdW1lckNhbGxiYWNr
cyBjYWxsYmFja3MgPSB7CisgICAgICAgIFtdKHZvaWQqIGluZm8sIGNvbnN0IHZvaWQqIGJ1ZmZl
ciwgc2l6ZV90IGNvdW50KSAtPiBzaXplX3QgeworICAgICAgICAgICAgYXV0byBoYW5kbGUgPSAq
c3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKj4oaW5mbyk7CisgICAg
ICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAgICB9LAorICAgICAgICBudWxs
cHRyCisgICAgfTsKKworICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVy
Q3JlYXRlKCZkZXN0aW5hdGlvbkZpbGVIYW5kbGUsICZjYWxsYmFja3MpKTsKKyAgICBhdXRvIGRl
c3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YUNvbnN1
bWVyKGNvbnN1bWVyLmdldCgpLCBkZXN0aW5hdGlvblVUSS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCAxLCBudWxscHRyKSk7CisKKyAgICAvLyBXcml0ZSB0aGUgc291cmNlIGltYWdlIHRvIHRoZSBk
ZXN0aW5hdGlvbiBpbWFnZS4KKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3Vy
Y2UoZGVzdGluYXRpb24uZ2V0KCksIHNvdXJjZS5nZXQoKSwgMCwgbnVsbHB0cik7CisgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOworICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShkZXN0aW5hdGlvbkZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIGRlc3Rp
bmF0aW9uUGF0aDsKK30KKworVmVjdG9yPFN0cmluZz4gZmluZEltYWdlc0ZvclRyYW5zY29kaW5n
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93
ZWRNSU1FVHlwZXMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdHJhbnNjb2RpbmdQYXRoczsKKyAg
ICB0cmFuc2NvZGluZ1BhdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGF0aHMuc2l6ZSgpKTsK
KworICAgIGJvb2wgbmVlZHNUcmFuc2NvZGluZyA9IGZhbHNlOworCisgICAgZm9yIChhdXRvJiBw
YXRoIDogcGF0aHMpIHsKKyAgICAgICAgLy8gQXBwZW5kIGEgcGF0aCBvZiB0aGUgaW1hZ2Ugd2hp
Y2ggbmVlZHMgdHJhbnNjb2RpbmcuIE90aGVyd2lzZSBhcHBlbmQgYSBudWxsIHN0cmluZy4KKyAg
ICAgICAgaWYgKCFhbGxvd2VkTUlNRVR5cGVzLmNvbnRhaW5zKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6Om1pbWVUeXBlRm9yUGF0aChwYXRoKSkpIHsKKyAgICAgICAgICAgIHRyYW5zY29kaW5n
UGF0aHMudW5jaGVja2VkQXBwZW5kKHBhdGgpOworICAgICAgICAgICAgbmVlZHNUcmFuc2NvZGlu
ZyA9IHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdHJhbnNjb2RpbmdQYXRocy51
bmNoZWNrZWRBcHBlbmQobnVsbFN0cmluZygpKTsKKyAgICB9CisKKyAgICAvLyBJZiBub25lIG9m
IHRoZSBmaWxlcyBuZWVkcyBpbWFnZSB0cmFuc2NvZGluZywgcmV0dXJuIGFuIGVtcHR5IFZlY3Rv
ci4KKyAgICByZXR1cm4gbmVlZHNUcmFuc2NvZGluZyA/IHRyYW5zY29kaW5nUGF0aHMgOiBWZWN0
b3I8U3RyaW5nPigpOworfQorCitWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVJbWFnZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTdHJpbmcmIHV0aSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pCit7CisgICAgQVNTRVJUKCF1dGkuaXNOdWxsKCkpOworICAgIEFTU0VSVCghZXh0
ZW5zaW9uLmlzTnVsbCgpKTsKKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVkUGF0
aHM7CisgICAgdHJhbnNjb2RlZFBhdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGF0aHMuc2l6
ZSgpKTsKKworICAgIGZvciAoYXV0byYgcGF0aCA6IHBhdGhzKSB7CisgICAgICAgIC8vIEFwcGVu
ZCB0aGUgdHJhbnNjb2RlZCBwYXRoIGlmIHRoZSBpbWFnZSBuZWVkcyB0cmFuc2NvZGluZy4gT3Ro
ZXJ3aXNlIGFwcGVuZCBhIG51bGwgc3RyaW5nLgorICAgICAgICBpZiAoIXBhdGguaXNOdWxsKCkp
CisgICAgICAgICAgICB0cmFuc2NvZGVkUGF0aHMudW5jaGVja2VkQXBwZW5kKHRyYW5zY29kZUlt
YWdlKHBhdGgsIHV0aSwgZXh0ZW5zaW9uKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRy
YW5zY29kZWRQYXRocy51bmNoZWNrZWRBcHBlbmQobnVsbFN0cmluZygpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJhbnNjb2RlZFBhdGhzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA1YzRj
MzYyMDBkY2E2YWQ1ZGQwZTRkZmY3NjIxOTlmOWNkY2JjNDBjLi43MzBkYTY0OGYyYjJmZTllNzg0
ZmQwNDA1MmUxOTBmMGQwYmYyMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+
CiAjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxwYWwv
c3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlICJDR1V0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtMTA2LDEyICsxMDYsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogCiB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkK
IHsKLSAgICBwYWludEltYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1ha2VDR0ltYWdl
Q29weSgpLmdldCgpLCAxLCBkZXN0aW5hdGlvbiwgc291cmNlKTsKKyAgICBkcmF3TmF0aXZlSW1h
Z2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwog
fQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCiB7Ci0gICAgcGFpbnRJbWFnZShjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpLCBtYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKSwgc2NhbGVGYWN0b3IsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UpOworICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwg
Y29udGV4dCwgc2NhbGVGYWN0b3IsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGFiNjJhOTQwNDkyMTg3ZGY1OGZiNjE1MjMzZTIyMDRjMDU0NzBk
ZTYuLmMwMzBmYWNmYzgyODMyYzNmYTc2ZDBmYWRmZTgxOTY1NjNkNTI4Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTY1LDcgKzY1LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkubW0KIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKLVBsYXRmb3JtL2Nn
L0NHVXRpbGl0aWVzLmNwcAorUGxhdGZvcm0vY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKIAogUGxh
dGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNv
Y29hLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
Zmllci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1JlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCmluZGV4IGFmYWY2ZTQ4YmMzNmE5NTc3MmMxM2U1
N2MyYjJhODJkMThkZDM0NzQuLmZhMDYzMjA2MThhNDZlOTFkODI3ZDUwNjcwYzIwNWMxNzE3NmIz
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcApAQCAtNTgsNiArNTgsMTEgQEAgV0tBcnJheVJlZiBX
S09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKICAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChwYXJhbWV0ZXJzUmVmKS0+YWNj
ZXB0RmlsZUV4dGVuc2lvbnMoKS5sZWFrUmVmKCkpOwogfQogCitXS0FycmF5UmVmIFdLT3BlblBh
bmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1Jl
ZiBwYXJhbWV0ZXJzUmVmKQoreworICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhcmFtZXRlcnNS
ZWYpLT5hbGxvd2VkTUlNRVR5cGVzKCkubGVha1JlZigpKTsKK30KKwogLy8gRGVwcmVjYXRlZC4K
IFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlDYXB0dXJlKFdLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKaW5kZXggMDU5ZjdjZmMwNjFlZmM0YmVl
ZmY1OTEzMmUwZTZmNDlkOTBmZmM2OC4uN2QxMzI5ODRiYTc1Njc2ZjU2NGNhY2YwNDY5ZGQxOWU2
ODM0ZjVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKQEAgLTQ1LDYgKzQ1LDggQEAgV0tfRVhQT1JUIGJv
b2wgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlBY2NlcHRlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7
CiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRG
aWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CiAKK1dL
X0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5
cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKKwogLyogREVQUkVDQVRF
RCAtIFBsZWFzZSB1c2UgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0Q2FwdHVyZUVuYWJsZWQoKSBp
bnN0ZWFkLiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlDYXB0dXJlKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcAppbmRleCAyYjM5NGZjOGJkYTc0MjE3YzE3MzUxMjc2MzY1NjU5OGE0Yjg0
MmI5Li5iNjExODgxNzE4ODUyYjUwMzU5ODRmMzUwNzAyZjE3OTFhMmVlZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcApAQCAtNjMsOSArNjMsOSBAQCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJDaG9vc2VNZWRpYUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdAog
fQogI2VuZGlmCiAKLXZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVS
THNSZWYpCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVm
LCBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXNSZWYpCiB7Ci0gICAgdG9JbXBsKGxpc3RlbmVy
UmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNS
ZWYpKSk7CisgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJv
bUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNSZWYpKSwgdG9JbXBsKGFsbG93ZWRNaW1lVHlwZXNS
ZWYpLT50b1N0cmluZ1ZlY3RvcigpKTsKIH0KIAogdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyQ2FuY2VsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmgKaW5kZXggNjk5OTc2ZmFhMmFkZGU0NzhjZWY2YzRlMWIwZmVmODQ1MDk4YWVh
OC4uYWFiYmUxOWQ3MjJlZjY0MTQyNmNjMTU5MWEzNTZiYTA3MzQ0ZDdhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaApAQCAtMzUsNyArMzUsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyR2V0VHlwZUlEKHZvaWQpOwogCiBXS19FWFBPUlQg
dm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlTWVkaWFGaWxlcyhXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVmLCBX
S1N0cmluZ1JlZiBkaXNwbGF5U3RyaW5nLCBXS0RhdGFSZWYgaWNvbkltYWdlRGF0YVJlZik7Ci1X
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcyk7CitX
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcywgV0tB
cnJheVJlZiBhbGxvd2VkTWltZVR5cGVzUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
cik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggODY3NzBiZTM4MDBjNWFlYmIyODEwMjJlNmIwY2FhZTdjNmRiMWI0MC4u
NGEyOGIxY2E1Mzg1ZDg3MTc5NDMzZTdiNWNhMDFmMTEwY2UyNDU4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAi
RXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xNzUsNiArMTc2LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9W
YWxpZGF0aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5oPgpAQCAtNDg4LDYgKzQ5MCw5IEBA
IFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMo
bV9jb25maWd1cmF0aW9uLT5pZ25vcmVzQXBwQm91bmREb21haW5zKCkpCiAgICAgLCBtX2xpbWl0
c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkpCiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgLCBtX3RyYW5zY29kaW5nUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJL
aXQuSW1hZ2VUcmFuc2NvZGluZyIpKQorI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CiAKQEAgLTY2NjksMTcgKzY2NzQsNTggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlT
dHJpbmdBbmRJY29uKGNvbnN0IFZlY3QKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitib29sIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQoreworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIHRyYW5zY29kaW5nTUlNRVR5cGUgPSBXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoYWxsb3dl
ZE1JTUVUeXBlcywgeyB9KTsKKyAgICBpZiAodHJhbnNjb2RpbmdNSU1FVHlwZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byB0cmFuc2NvZGluZ1VSTHMgPSBmaW5k
SW1hZ2VzRm9yVHJhbnNjb2RpbmcoZmlsZVVSTHMsIGFsbG93ZWRNSU1FVHlwZXMpOworICAgIGlm
ICh0cmFuc2NvZGluZ1VSTHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhdXRvIHRyYW5zY29kaW5nVVRJID0gV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKHRyYW5zY29k
aW5nTUlNRVR5cGUpOworICAgIGF1dG8gdHJhbnNjb2RpbmdFeHRlbnNpb24gPSBXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSh0cmFuc2NvZGlu
Z01JTUVUeXBlKTsKKworICAgIG1fdHJhbnNjb2RpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZmlsZVVSTHMgPSBmaWxlVVJMcywgdHJhbnNj
b2RpbmdVUkxzID0gV1RGTW92ZSh0cmFuc2NvZGluZ1VSTHMpLCB0cmFuc2NvZGluZ1VUSSA9IHRy
YW5zY29kaW5nVVRJLCB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9IHRyYW5zY29kaW5nRXh0ZW5zaW9u
XSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
ICAgICBhdXRvIHRyYW5zY29kZWRVUkxzID0gdHJhbnNjb2RlSW1hZ2VzKHRyYW5zY29kaW5nVVJM
cywgdHJhbnNjb2RpbmdVVEksIHRyYW5zY29kaW5nRXh0ZW5zaW9uKTsKKyAgICAgICAgQVNTRVJU
KHRyYW5zY29kaW5nVVJMcy5zaXplKCkgPT0gdHJhbnNjb2RlZFVSTHMuc2l6ZSgpKTsKKworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGZpbGVVUkxzID0gZmlsZVVSTHMs
IHRyYW5zY29kZWRVUkxzID0gV1RGTW92ZSh0cmFuc2NvZGVkVVJMcyldKCkgbXV0YWJsZSB7Cisj
aWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHNhbmRib3hFeHRlbnNpb25GaWxlczsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gZmlsZVVSTHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIHNh
bmRib3hFeHRlbnNpb25GaWxlcy5hcHBlbmQoIXRyYW5zY29kZWRVUkxzW2ldLmlzTnVsbCgpID8g
dHJhbnNjb2RlZFVSTHNbaV0gOiBmaWxlVVJMc1tpXSk7CisgICAgICAgICAgICBhdXRvIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5k
bGVzRm9yRmlsZXMoIldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwiX3Ms
IHNhbmRib3hFeHRlbnNpb25GaWxlcyk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZXMpKSk7CisjZW5kaWYKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzLCB0cmFuc2NvZGVkVVJM
cykpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oZmlsZVVSTHMpOworICAgIFVOVVNFRF9QQVJBTShhbGxvd2VkTUlNRVR5
cGVzKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJM
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIWRpZENob29z
ZUZpbGVzRm9yT3BlblBhbmVsV2l0aEltYWdlVHJhbnNjb2RpbmcoZmlsZVVSTHMsIGFsbG93ZWRN
SU1FVHlwZXMpKSB7CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICBhdXRvIHNh
bmRib3hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlI
YW5kbGVzRm9yRmlsZXMoIldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwi
X3MsIGZpbGVVUkxzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94
Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKSk7
CisgICAgICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbCJfcywgZmlsZVVSTHMpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZXMpKSk7CiAjZW5kaWYKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzLCB7IH0pKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVS
THMsIHsgfSkpOworICAgIH0KIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFs
aWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2EyNmQxNzBmYTUwNTJmZDIzYmE2
ZTcxMDE4YmU4NWU1MWM3OGM4NS4uYzljMzBkNTM0Y2FmNWUyNTY0MTAxNDcxZWIwMDc0NDAzNDEx
MDNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE5MjQsNiAr
MTkyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMo
Y29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBwYWdlRGlkU2Ny
b2xsKCk7CiAgICAgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBG
cmFtZUluZm9EYXRhJiYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKKyAg
ICBib29sIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aEltYWdlVHJhbnNjb2RpbmcoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dl
ZE1JTUVUeXBlcyk7CiAgICAgdm9pZCBzaG93U2hhcmVTaGVldChjb25zdCBXZWJDb3JlOjpTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgdm9pZCBwcmludEZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90
IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJy
ZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhRGVsYXllZFJlcGx5JiYpOwpAQCAtMjg0MSw2
ICsyODQyLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlclNjcmlwdHNOb3RpZmllZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZp
Z2F0aW9uIHsgZmFsc2UgfTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmVmPFdvcmtRdWV1ZT4g
bV90cmFuc2NvZGluZ1F1ZXVlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDRjOTQ4YWNjMzFjNTkyY2YyZGE3OWJjZDNkOTExMDdhOTBiYjk0ODIuLjUzZDdmODU0ZjJjYTE4
ZDQzOTRkMzE2MzExN2U4N2YxMjE2NGIyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkwLDcgKzI5MCw3IEBACiAJCTFBOUZCQThE
MTNGRjA0RTYwMERFRUQ2NyAvKiBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUZCQThDMTNGRjA0RTYw
MERFRUQ2NyAvKiBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCAqLzsgfTsKIAkJMUFBMTMy
MTIxOTFENTkyNDAwOUMxNDg5IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMTMyMTExOTFENTky
NDAwOUMxNDg5IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQTIwRDUxMThBRDUwRTAwMDVE
MUVENCAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTIwRDUwMThBRDUwRTAwMDVEMUVENCAvKiBX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQkxQUEyRTUxRDEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QTJFNTFCMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oICovOyB9OworCQkxQUEyRTUx
RDEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTJFNTFCMTJFNEMwNUUwMEJDNDk2NiAvKiBJ
bWFnZVV0aWxpdGllcy5oICovOyB9OwogCQkxQUEyRTU2NzE4RDc3NTA4MDAzODE0QkQgLyogV0tX
ZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFBMkU1NjUxOEQ3NzUwODAwMzgxNEJEIC8qIFdLV2ViUHJvY2Vz
c0J1bmRsZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJMUFBM0Q3NUMxNjUxQjQ0RjAwODcxM0QwIC8q
IFJlbW90ZUxheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQTNENzVBMTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVI
b3N0LmggKi87IH07CiAJCTFBQTQxN0NCMTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBNDE3Qzkx
MkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggKi87IH07CkBAIC0yNTA5LDggKzI1MDks
OCBAQAogCQkxQUExQ0M1QzEwMEZBMUExMDA3OERFQkMgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ekNvcmUuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CiAJCTFBQTFDRDA2MTAwRkExQkEwMDc4REVCQyAvKiBDYXJib24uZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKIAkJMUFBMjBENTAxOEFENTBFMDAwNUQxRUQ0IC8qIFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFBMkU1
MUIxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENHVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDR1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFBQTJFNTFCMTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVV0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUEyRTUxQzEyRTRDMDVFMDBCQzQ5NjYgLyog
SW1hZ2VVdGlsaXRpZXNDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZVV0aWxpdGllc0NHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFB
MkU1NjQxOEQ3NzUwODAwMzgxNEJEIC8qIFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlByb2Nlc3NCdW5k
bGVQYXJhbWV0ZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUEyRTU2NTE4
RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTNENzU5MTY1MUI0NEYwMDg3MTNEMCAv
KiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU5NDgsOCArNTk0OCw3IEBACiAJCTFBQTJFNTFBMTJFNEMwNTYwMEJDNDk2NiAvKiBj
ZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUFBMkU1
MUMxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmNwcCAqLywKLQkJCQkxQUEyRTUxQjEy
RTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuaCAqLywKKwkJCQkxQUEyRTUxQzEyRTRDMDVF
MDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXNDRy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNn
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1NzUsNiArOTU3NCw3IEBACiAJCQkJ
NTFCMTVBN0QxMzg0MzlCMjAwMzIxQUQ4IC8qIHVuaXggKi8sCiAJCQkJRUNBNjgwRDMxRTY5MDRC
NTAwNzMxRDIwIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggKi8sCiAJCQkJRUNCRkMx
REIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAqLywKKwkJ
CQkxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCAqLywKIAkJCQk1
MUE3RjJGNDEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJNTFBN0YyRjIx
MjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCAqLywKIAkJCQkwRkRDRDdGNjFENDdFOTJBMDA5
RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCAqLywKQEAgLTEwNzU0LDcgKzEwNzU0LDYgQEAK
IAkJCQk0MTg5N0VEODFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUZBQkQyQTFGNERFMDAxMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3RURBMUY0MTVEOEEwMDE2RkE0
MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkx
QUEyRTUxRDEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRp
Y2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEZFMEEzQjI0NjMyQjYw
MDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4MjczNDcyNDUy
OEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4MzMsNiAr
MTA4MzIsNyBAQAogCQkJCTUxQzBDOTc0MURERDc2MDAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0Rl
bGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyog
SURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlD
MzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUEyRTUxRDEyRTRDMDVF
MDBCQzQ5NjYgLyogSW1hZ2VVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUVDNjlF
MTg3MjA5MjEwMEI5NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzIwNEVFMzExQzgzRTk4MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRUU3REM1MTI4QjY0NUQwMDk4MjdEQSAvKiBJbmplY3RlZEJ1bmRsZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNTkxZTE5NmFiNzk2NjhiY2FiNGJlYTg5YTQ2MTlmZWY5NWJiZGZk
Ni4uZmJjNThiYTIwMGVlNDAwZDlkMWYxZmMxYWM4NTZmOTExOGM4YjdjNSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDIwLTA3LTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY09TXTogQSBIRUlGIGltYWdlLCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVuUGFu
ZWwsIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OnJ1bk9wZW5QYW5lbCk6CisKIDIwMjAtMDctMDggIFN0ZXBoYW4gU3ph
Ym8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5kb3dzXSBGaXggZXJy
b3JzIGZyb20gY2FsbHMgdG8gdW5hbWUgd2hlbiBub3QgYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDEzYmUxZThmOTcwNTRiMzlhMDVkMTcw
NTc2NGFiNDg0YjRiZTM4YmYuLjU4MjYxYTM2MWRhY2I5NDEyMmEwODk5NzIxNTMyZjU4YTQ2MTQx
NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjMs
MTIgKzIyMywxNCBAQCBzdGF0aWMgdm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLT3BlblBhbmVsUGFyYW1ldGVycwogICAgIH0KICNlbmRpZgogCisg
ICAgV0tBcnJheVJlZiBhbGxvd2VkTWltZVR5cGVzID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29w
eUFsbG93ZWRNSU1FVHlwZXMocGFyYW1ldGVycyk7CisKICAgICBpZiAoV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhwYXJhbWV0ZXJzKSkgewotICAgICAgICBXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJSZWYsIGZpbGVV
UkxzKTsKKyAgICAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3Vs
dExpc3RlbmVyUmVmLCBmaWxlVVJMcywgYWxsb3dlZE1pbWVUeXBlcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVz
dWx0TGlzdGVuZXJSZWYsIGFkb3B0V0soV0tBcnJheUNyZWF0ZSgmZmlyc3RJdGVtLCAxKSkuZ2V0
KCkpOworICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0
ZW5lclJlZiwgYWRvcHRXSyhXS0FycmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEpKS5nZXQoKSwgYWxs
b3dlZE1pbWVUeXBlcyk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJ1bk1vZGFsKFdLUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkyZWM4ZGY2ZTAwNzY3
YWUyZmYyOTQ0NGFiMTZkOGVmNGM5ZGY0M2QuLjAxOWZiZDBmMmU5MzZjODg4NjYwOGI5ZDIxM2Nl
MGUzMmUwOWYyZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wNy0wOSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IEEg
SEVJRiBpbWFnZSwgc2VsZWN0ZWQgZnJvbSB0aGUgT3BlblBhbmVsLCBzaG91bGQgYmUgY29udmVy
dGVkIHRvIGFuIGFjY2VwdGVkIE1JTUUgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzI1
ODQ2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bnN1cmUgdGhlIEhFSUYgaW1hZ2UgaXMgY29udmVydGVkIHRvIGFuIGFjY2VwdGVkIE1JTUUgdHlw
ZSB3aGVuIGl0IGlzIAorICAgICAgICBzZWxlY3RlZCBmcm9tIHRoZSBPcGVuUGFuZWwgYW5kIHRo
ZSAnYWNjZXB0JyBhdHRyaWJ1dGUgb2YgdGhlIDxpbnB1dD4KKyAgICAgICAgZG9lcyBhbGxvdyB0
aGUgSEVJRiBNSU1FIHR5cGUuCisKKyAgICAgICAgTm8gbmVlZCB0byB0ZXN0IHRoaXMgZnVuY3Rp
b25hbGl0eSBvbiBXSzEgc2luY2UgdGhlIGltYWdlIHRyYW5zY29kaW5nIAorICAgICAgICBzaG91
bGQgaGFwcGVuIGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNj
b2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9m
aWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9yZXNvdXJjZXMvaW1hZ2VzL2dy
ZWVuLTQwMHg0MDAuaGVpYzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIwLTA3LTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiBSZW1vdmUgc29tZSBtZW50aW9ucyBvZiBub24tZXhp
c3RhbnQgZmlsZXMgaW4gZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzNhZGE1
NTVhOTM4NTBhYzQ4MmE1Y2Q5OGRhMzk3NDViMTI2MjY1NS4uNjE5YmM0ZTQyMmIyZWUxNGI0Nzhi
OTJiODk3YzFjMTljNTZjYjg0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC04OTgsNiArODk4LDgg
QEAgaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLXJlc291cmNlLXBvbGljeS8gWyBTa2lwIF0KIAogIyB0
ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkgb25seSB3b3JrcyBpbiBXZWJLaXQy
CiBmYXN0L2ZpbGVzL2Jsb2ItbmV0d29yay1wcm9jZXNzLWNyYXNoLmh0bWwgWyBTa2lwIF0KK2Zh
c3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1s
IFsgU2tpcCBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2Rl
LW9wZW4tcGFuZWwuaHRtbCBbIFNraXAgXQogCiAjIFRoaXMgdGVzdCBpcyBjdXJyZW50bHkgb25s
eSByZWxldmFudCBvbiBtYWMtd2syCiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXVwZGF0ZS1v
bi1kaXNwbGF5LWNvbmZpZ3VyYXRpb24uaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVu
LXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzk1ZWE4NjA4ZjA4MjBlZDE0NmNmMDg4NTZlNjY4NDk4NGRiMDAxZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10
cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorT1BFTiBG
SUxFIFBBTkVMCitUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2Vy
IHdoaWNoIGFjY2VwdHMgSEVJQywgd2lsbCBub3QgYmUgY29udmVydGVkIHRvIGFueSBzdXBwb3J0
ZWQgTUlNRSB0eXBlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBmaWxl
TGlzdC5sZW5ndGggaXMgMQorUEFTUyBmaWxlLnR5cGUgaXMgImltYWdlL2hlaWMiCitQQVNTIGZp
bGUuc2l6ZSBpcyBub24temVyby4KK0ltYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuCitQQVNTIGlt
Zy53aWR0aCBpcyBub3QgNDAwCitQQVNTIGltZy5oZWlnaHQgaXMgbm90IDQwMAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29k
ZS1vcGVuLXBhbmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1h
cGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTg0ZDU1
OTQzNGZhNzk0MjdlNmZkZDZlODAzNDMwMjQ1MzVhYzIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1v
cGVuLXBhbmVsLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlucHV0IHR5cGU9ImZp
bGUiIGFjY2VwdD0iSU1BR0UvSEVJQyIgb25jaGFuZ2U9ImNoYW5nZWQoZXZlbnQpIj48L2lucHV0
PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBhIEhFSUMgaW1hZ2Us
IGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgSEVJQywgd2lsbCBub3Qg
YmUgY29udmVydGVkIHRvIGFueSBzdXBwb3J0ZWQgTUlNRSB0eXBlLiIpOworICAgICAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhbJ3Jlc291cmNlcy9p
bWFnZXMvZ3JlZW4tNDAweDQwMC5oZWljJ10pOworCisgICAgICAgICAgICBpbnB1dEVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKyAgICAgICAgICAg
IFVJSGVscGVyLmFjdGl2YXRlQXQoaW5wdXRFbGVtZW50Lm9mZnNldExlZnQgKyBpbnB1dEVsZW1l
bnQub2Zmc2V0V2lkdGggLyAyLAorICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudC5vZmZzZXRU
b3AgKyBpbnB1dEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGFuZ2VkKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlTGlz
dCA9IGV2ZW50LnRhcmdldC5maWxlczsKKyAgICAgICAgICAgIHNob3VsZEJlKCJmaWxlTGlzdC5s
ZW5ndGgiLCAiMSIpOworCisgICAgICAgICAgICBmaWxlID0gZmlsZUxpc3RbMF07CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUudHlwZSIsICJpbWFnZS9oZWljIik7Cisg
ICAgICAgICAgICBzaG91bGRCZU5vblplcm8oImZpbGUuc2l6ZSIpOworCisgICAgICAgICAgICBp
bWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKworICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBG
aWxlUmVhZGVyKCk7CisgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4geworICAgICAg
ICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCJJbWFnZSB3YXMgbG9hZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1n
LndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaW1nLmhlaWdo
dCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcub25lcnJvciA9ICgpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIik7CisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJpbWcud2lkdGgiLCAiNDAwIik7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZE5vdEJlKCJpbWcuaGVpZ2h0IiwgIjQwMCIpOworICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVzdWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOworICAgICAgICB9CisgICAgICAgIHJ1blRl
c3QoKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1w
YW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1h
cGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUx
MTQ2MGJhYjg4YzNmYzYyMmY2ZmIzYTE2MDY3OTI2NzM0MzRhYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2Rl
LW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK09QRU4gRklMRSBQQU5F
TAorVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlhIHRoZSBmaWxlIHBpY2tlciB3aGljaCBh
Y2NlcHRzIFBORywgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBQTkcgaW1hZ2UuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZpbGVMaXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZp
bGUudHlwZSBpcyAiaW1hZ2UvcG5nIgorUEFTUyBmaWxlLnNpemUgaXMgbm9uLXplcm8uCitJbWFn
ZSB3YXMgbG9hZGVkLgorUEFTUyBpbWcud2lkdGggaXMgNDAwCitQQVNTIGltZy5oZWlnaHQgaXMg
NDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAg
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1h
Z2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmls
ZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE5NWEyOWE3M2I4MzVhNTEyYjM2MmFhYjMyM2ZmZjhiOWJiZTczNmIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNj
b2RlLW9wZW4tcGFuZWwuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW5wdXQgdHlw
ZT0iZmlsZSIgYWNjZXB0PSIucG5nIiBvbmNoYW5nZT0iY2hhbmdlZChldmVudCkiPjwvaW5wdXQ+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIGEgSEVJQyBpbWFnZSwg
Y2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBQTkcsIHdpbGwgYmUgY29u
dmVydGVkIHRvIGEgUE5HIGltYWdlLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRPcGVuUGFuZWxGaWxlcyhbJ3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQw
MC5oZWljJ10pOworCisgICAgICAgICAgICBpbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKyAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRl
QXQoaW5wdXRFbGVtZW50Lm9mZnNldExlZnQgKyBpbnB1dEVsZW1lbnQub2Zmc2V0V2lkdGggLyAy
LAorICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudC5vZmZzZXRUb3AgKyBpbnB1dEVsZW1lbnQu
b2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGFuZ2Vk
KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5m
aWxlczsKKyAgICAgICAgICAgIHNob3VsZEJlKCJmaWxlTGlzdC5sZW5ndGgiLCAiMSIpOworCisg
ICAgICAgICAgICBmaWxlID0gZmlsZUxpc3RbMF07CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImZpbGUudHlwZSIsICJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgIHNob3VsZEJl
Tm9uWmVybygiZmlsZS5zaXplIik7CisKKyAgICAgICAgICAgIGltZyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
bWcpOworCisgICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICAg
ICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgaW1nLm9ubG9h
ZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIHdhcyBsb2FkZWQu
Iik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcud2lkdGgiLCAiNDAwIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcuaGVpZ2h0IiwgIjQwMCIpOworICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4geworICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hv
dWxkTm90QmUoImltZy53aWR0aCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxk
Tm90QmUoImltZy5oZWlnaHQiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgaW1nLnNyYyA9IHJl
YWRlci5yZXN1bHQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0Rh
dGFVUkwoZmlsZSk7CisgICAgICAgIH0KKyAgICAgICAgcnVuVGVzdCgpOworICAgIDwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWljIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFnZXMvZ3Jl
ZW4tNDAweDQwMC5oZWljCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZjg1OWQ4ZGExZGYxMTYyNTRkYTYzOTM1NTll
NTllOTY5Y2E3YjYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDcxMAp6Y21Zak9PS1RIUjZoM0VX
OGREbGxRITNUIUI0YGpQaDEhKl9ZJjVBbCNmWntId1gxfWczQXZhdCpYZ0xPMih+RUoKemckcktg
N2hTeyRERU9jWUh6Rz1QRkFDfiFzUDBfMj0pd31lR24yRik9SHZVJD4peUhONVloSChJSHpsI2F0
SjJ1Cnp0TGk4Ynp3b2BWQX5EJFJucCtRSU51LXElY0p2MTRUeT8kKlo8aVoqIWVSYGhFKFl+JVRj
QD1PZWRzdUlQe2tjWQp6MXxyK3djcHt7JGNGRG1YWXpBM00jJUVQQEBTeGhmQT8+JmA0dzQrKl47
emphcXdUZlFQNklyTGF8K0M1JFlwP04Kej5eSj5nVXQxJlVISmopZCRhOUtZRWgjWGkhanh9cHhj
ZD11ZHlhNl9gQ3A9JHh8SkFUZFloWkRGQn53OCM4Y3hqCno+TX0pTXNxfiVifENQeik/N3JnTnAq
LSZDUzJObEohfXZ9Tj5RK0dgOHJ4UV9XfGdHT1dISmRGUH09WHo4U2soYgp6ak8hTXshPlpuaFIj
S0QhJHRWRzEzZnpiVzI5TGtOeUNFNmh0K1pGZGNteVRsUyhRcE8xVFJTejRebyVaMGYlXyEKemhD
YSZzPGs1JkB6S2U/RlVhMl89aCNkI1NrRDJlP3ElSDd2MEErdjxQWm4kJlRuTX5NPSgqWDtEeShJ
WCpgLXNHCnpKaHp1JEVxJUUxe1h6YT9fUyQ7eXlWbHFEVTthIzhvdGB9WD5GbXFxJG42b2ImTG49
MG4mfkkyJm5EKG1FOXFzZAppJSVtVWxfaTRjQE42WUFXeEVMe2h2RmxBb1clanB+RzJJcUQmO0ox
X1IoTlV2CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWYwNWU0NmY3ZWFiMjYxNGIxODMyMThjODIx
M2Y4Y2FiMTMwMThkNi4uZmY1OTUzMGI3ZjJhZmNlNzFjYWMwZjg4MGI4ZWM1YjA4OGVmMTkwMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
ODUsNiArODUsOSBAQCBmYXN0L2V2ZW50cy9pbmFjdGl2ZS13aW5kb3ctbm8tbW91c2UtZXZlbnQu
aHRtbCBbIFBhc3MgXQogCiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1p
bi10d28tcGFnZXMuaHRtbCBbIFBhc3MgXQogCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
aW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQorZmFzdC9mb3Jtcy9maWxl
L2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBQYXNzIF0K
KwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3Bl
Y2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403850</attachid>
            <date>2020-07-09 01:28:33 -0700</date>
            <delta_ts>2020-07-11 02:23:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200709012831.patch</filename>
            <type>text/plain</type>
            <size>55044</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA3MGFkMTgyYjliNzBkMTU2MjhkY2Yw
MzkwMmM2YTIxZDkzOTVjMzkuLjdlNTFlYzNiOWY2MGUxZjY3YTBmMTI5YjAxMTFmNmI2NGY1YTUz
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2Us
IHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBh
Y2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYSBzdWZm
aXggdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIFRoZSBnb2FsIGlz
IHRvCisgICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbWFnZSBm
aWxlcyB3aXRoIHZhbGlkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5o
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFy
eUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAtMDctMDggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBwb3NzaWJsZSB0byBlc3Rh
Ymxpc2ggZGlyZWN0IFhQQyBjb25uZWN0aW9ucyBiZXR3ZWVuIFdlYktpdCBwcm9jZXNzZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYTVlZmJhYjExMzI5NjhjYmFkZTRhY2RiMDMyNmU4MDUwZDJjMmQ5Li4wYWJh
MjE4NjM5MWI4YzQwYjc2Mjk4NDc5ZTAyNmVkMGU5NzBhMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20g
dGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphbGxvd2VkTUlNRVR5cGVzKToKKyAgICAgICAg
TWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBsb3dlcmNhc2UgTUlNRSB0eXBlcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToK
KwogMjAyMC0wNy0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
UGFydCAzIG9mIFNpbXBsZUNvbG9yIGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkg
dGhlIHNhbWUgLSBsZXQncyBjb252ZXJnZSB0aGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNDczMjBhZDI1MTcy
MzgxNWI2MGZjZTAwMjMzNTcwYWViZTIwYzUuLmUyM2VlZDBjOWVmYThmYzgxODE5OTQyZGRmOGQ5
OTU3OTUzZTNlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDctMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1Nd
OiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNv
bnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgZ2l2ZW4gdGhlIGxpc3Qgb2YgdGhlIHNlbGVjdGVkIGZp
bGUgYW5kIHRoZSBhbGxvd2VkCisgICAgICAgIE1JTUUgdHlwZXMuIE9ubHkgc2VsZWN0ZWQgZmls
ZXMgd2hvc2UgTUlNRSB0eXBlcyBkbyBub3QgZXhpc3QgaW4gdGhlIGFsbG93ZWQKKyAgICAgICAg
TUlNRSB0eXBlcyB3aWxsIGJlIHRyYW5zY29kZWQuIFJpZ2h0IG5vdywgdGhpcyBvbmx5IHdpbGwg
YXBwbHkgdG8gdGhlIEhFSUYKKyAgICAgICAgaW1hZ2VzIG9uIG1hY09TLgorCisgICAgICAgICog
UGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY2cvQ0dVdGlsaXRpZXMuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFBsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpmaW5kSW1hZ2VzRm9yVHJhbnNj
b2RpbmcpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZXMpOgorICAgICAgICBJbXBs
ZW1lbnQgYSBmdW5jdGlvbiB0aGF0IHRyYW5zY29kZXMgaW1hZ2VzIGFtb25nIGEgc2V0IG9mIGZp
bGVzIGdpdmVuCisgICAgICAgIHRoZSBhbGxvd2VkTUlNRVR5cGVzLiBUaGUgZGVzdGluYXRpb24g
TUlNRSB0eXBlIG9mIHRoZXNlIGltYWdlcyBpcyB0aGUKKyAgICAgICAgZmlyc3QgTUlNRSB0eXBl
IGluIHRoZSBhbGxvd2VkTUlNRVR5cGVzIHdoaWNoIENHIHN1cHBvcnRzIGVuY29kaW5nIHRvLgor
CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisgICAgICAgIENhbGwgZHJhd05hdGl2ZUlt
YWdlKCkgYWZ0ZXIgcmVuYW1pbmcgcGFpbnRJbWFnZSgpIHRvIGRyYXdOYXRpdmVJbWFnZSgpLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwOgorICAgICAgICAoV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyQ2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgIFRyYW5zZmVyIHRoZSBsaXN0IG9mIHRoZSBhbGxv
d2VkIE1JTUUgdHlwZXMgZnJvbSB0aGUgT3BlblBhbmVsIHRvIHRoZQorICAgICAgICBmaWxlIGNo
b29zZXIgbGlzdGVuZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV90cmFuc2NvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29k
aW5nKToKKyAgICAgICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgaW4gYSB3b3JrIHF1ZXVlIHNvIHRo
ZSBVSSBwcm9jZXNzIGlzIG5vdCBibG9ja2VkLiAKKyAgICAgICAgT25jZSB0aGUgdHJhbnNjb2Rp
bmcgZmluaXNoZXMsIHRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCB0byB0aGUgV2ViUGFnZS4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDctMDggIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGlu
ZyByMjY0MTMyIGFuZCByMjY0MTM5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDYwYjMyZTQ2ZmM0Mjkw
ODIzYTYyOWJkYTNlZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQzYzZkNTJhOGE4YWYxNTVlNmU4
ZWU4ZjkxMjAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhl
ZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYp
OworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7
IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxl
QWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSBmYWxzZSk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiAv
LyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
ZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0ZmZhODlkNGRjZGY0MGFjMWIx
Yjg3ZC4uZGZkODIyNTQwZWE2MmM1N2Q1MDNhNTM3NmRhY2Y3ZGFmMGEzNDE5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcg
aG9tZURpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKIH0KIAot
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5k
bGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKQEAgLTExMyw5ICsxMTMsMTMgQEAgU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IHBsYXRmb3JtRmlsZUgKICAgICBDU3RyaW5nIHByZWZpeFV0ZjggPSBwcmVmaXgudXRmOCgpOwog
ICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZChwcmVmaXhVdGY4LmRhdGEoKSwgcHJlZml4VXRm
OC5sZW5ndGgoKSk7CiAgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCJYWFhYWFgiLCA2KTsK
KyAgICAKKyAgICAvLyBBcHBlbmQgdGhlIGZpbGUgbmFtZSBzdWZmaXguCisgICAgQ1N0cmluZyBz
dWZmaXhVdGY4ID0gc3VmZml4LnV0ZjgoKTsKKyAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQo
c3VmZml4VXRmOC5kYXRhKCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZCgnXDAnKTsKIAotICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IG1rc3RlbXAo
dGVtcG9yYXJ5RmlsZVBhdGguZGF0YSgpKTsKKyAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBta3N0
ZW1wcyh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHN1ZmZpeFV0ZjgubGVuZ3RoKCkpOwogICAg
IGlmIChwbGF0Zm9ybUZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwCmluZGV4IGU0YWIwMGZiZGFkOWZmYjcxYjUwMjJjY2VjNDFjMTBiNWNhMGY1ZGYuLmZhMGI1
MzFmZTEwZmY3NGViYWI4NjVmM2NhMDkxNWRhMWQ5NTc1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
RmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgVmVjdG9yPFN0cmluZz4gbGlz
dERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAg
IHJldHVybiBlbnRyaWVzOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIG9wZW5UZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0
cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1w
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIG51
bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGM5
ZjUwMTQzNmFiY2M4MDk0ZTg0MTQ4MGQyMWZlMzZhNDcxZTgxZmYuLmIzYzA0MDFiNTA2ZmRjZTMy
MzJlZDZmZWZiYmJmMGU1MmQxMDAzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNv
bnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcm
KQogewogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBEaXIg
PSBnZXRlbnYoIlRNUERJUiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4
IDY1OWRmZDUyNzI3ZGM5ZWY2OTliN2Y5MjRkNWQyZTcyZDg0ZTBhZTcuLmI2MzE0OTU3M2E0ODQx
ZmU2MDAxZWVmYWZkZDAwOTJjZmM3NDFhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5
UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAgIHJl
dHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICBoYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA5ZTBlMTZkMWFlNDI1
MDdkMTFhYjNmNDIwZWQxMmIxNDRjMWNiMTIxLi43ZGRmOTJkNDYyODE0M2MxY2FkYjlhODgwODc4
ZTIyMjIyZGE1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcApAQCAtODE0LDEzICs4MTQsMTMgQEAgVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdp
c3RyeTo6YWxsb3dlZE1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWltZVR5cGUKICAg
ICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOwogCiAgICAgZm9yIChhdXRvJiBtaW1l
VHlwZSA6IG1pbWVUeXBlcykKLSAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJZk5vdENv
bnRhaW5zKG1pbWVUeXBlKTsKKyAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJZk5vdENv
bnRhaW5zKG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwogCiAgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKSB7CiAgICAgICAgIGF1dG8gbWltZVR5cGUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbih0cmltbWVkRXh0ZW5zaW9uKGV4
dGVuc2lvbikpOwogICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyht
aW1lVHlwZSk7CisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyht
aW1lVHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4g
YWxsb3dlZE1JTUVUeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAppbmRleCAyMTllZTE5NTk3MTM0MjFlY2QwY2QyOWUyMmQ1YjE3YTU1NWYxODAzLi4yMzM3
YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5ODcxNThmZjIwMjM1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAot
ICAgIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBtaW1lVHlwZUZvclBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TUlNRVR5cGVSZWdpc3Ry
eVRocmVhZEdsb2JhbERhdGE+IGNyZWF0ZU1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
CmluZGV4IGY1ZGZlNDc1Nzk5NGM2OWFlMzQyMGEzNTRkZjY4YzVhNjZhNjAxNTcuLjZiMmQ4MWUz
NWIwOGNmNzRmNGYzNjFhZWJjNzRmMzEyOWM3ZDliN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtNjYsNiArNjYsOCBAQCBib29sIG5h
dGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxl
RmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJj
ZSk7CisKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0
ciYpOwogCiBjbGFzcyBOYXRpdmVJbWFnZUhhbmRsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IDZmZDc3ZTlh
OTdlYWRkZjc1MDM0ZmNlYjQ2MTQ1ZTQ1MzA4ZDM2NzQuLmM4NmFlZTFhMjVjOTZiZjFkZDczNzBi
MWZmYjkzMmUxOGE4MjA4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC04NCw2ICs4NCwyNSBAQCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29ucwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJz
YW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKK3sKKyAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZl
R1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwg
Q0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRo
KCksIHNvdXJjZS5oZWlnaHQoKSkpOworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwg
MSwgLTEpOworCisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOworCisgICAgQ0dGbG9hdCBkZXN0
WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7CisgICAgQ0dGbG9hdCBkZXN0WSA9IC1p
bWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55KCk7CisKKyAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0
aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0
YXRlKGNnQ29udGV4dCk7Cit9CisKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE1MDgyZTgwNGMzMmE5
Y2I1NzU3YWFiZDU2YWYzMmY1ZjJjMzg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1ZlY3RvcjxTdHJp
bmc+IGZpbmRJbWFnZXNGb3JUcmFuc2NvZGluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKK1ZlY3RvcjxTdHJpbmc+
IHRyYW5zY29kZUltYWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFN0cmlu
ZyYgdXRpLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBmMWMwNTliYmY4MjI3YjAxN2U0ODMwNzA4
ZDIyZDI0ZGI0ZDA0MGRiLi43MjkzMTMyMzlkNWQ1YTFiOWFmMDhhZDdmNDU0ZDZmYjk0ZWFhZDYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNTcsNiArNTcsNyBAQCBleHRlcm4gIkMi
IHsKICAgICBNKElQQykgXAogICAgIE0oSVRQRGVidWcpIFwKICAgICBNKEljb25EYXRhYmFzZSkg
XAorICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJbmNyZW1lbnRhbFBERikgXAogICAgIE0oSW5jcmVt
ZW50YWxQREZWZXJib3NlKSBcCiAgICAgTShJbmRleGVkREIpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFm
MDhmNmQ1ZWZiNGFhYTg2YjEwNGE0OWM5ODU1ZjIwNzI1YjY4MDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9D
R1V0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENH
SW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2NhbGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24s
IENHUmVjdCBzb3VyY2UpCi17Ci0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLQot
ICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54
LCBkZXN0aW5hdGlvbi55LCBzb3VyY2Uuc2l6ZS53aWR0aCwgc291cmNlLnNpemUuaGVpZ2h0KSk7
Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBp
bWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpIC8gc2NhbGVGYWN0b3I7Ci0gICAg
Q0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAvIHNjYWxlRmFjdG9y
OwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLnggLSBzb3VyY2Uub3JpZ2luLng7
Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkgKyBzb3Vy
Y2Uub3JpZ2luLnk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFr
ZShkZXN0WCwgZGVzdFksIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSwgaW1hZ2UpOwotCi0gICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg1MWQxODFhOGZjNzU3M2M5MzBjZmM2MDNiMGY0MTQyODc0N2IyMmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ0dVdGlsaXRpZXNfaAotI2RlZmluZSBDR1V0aWxp
dGllc19oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0
UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNjYWxlRmFjdG9yLCBDR1BvaW50IGRlc3RpbmF0aW9u
LCBDR1JlY3Qgc291cmNlKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBD
R1V0aWxpdGllc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdl
VXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGll
c0NHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40N2RmOWU3MjUyYTA1ODcwOGU5Zjg2ODc0MTIxZTVmNThmNWYz
OWZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0
aWxpdGllc0NHLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5oIgorCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlN
RVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFN0cmlu
ZyB0cmFuc2NvZGVJbWFnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25VVEksIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25FeHRlbnNpb24pCit7CisgICAgLy8g
VGhpcyBmdW5jdGlvbiB0cmFuc2NvZGVzIGZpbGVzIG9ubHkuCisgICAgaWYgKEZpbGVTeXN0ZW06
OmZpbGVJc0RpcmVjdG9yeShwYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpZZXMpKQorICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOworCisgICAgLy8gRW5zdXJl
IHRoZSAncGF0aCcgaXMgYWN0dWFsbHkgYW4gaW1hZ2UgZmlsZS4KKyAgICBhdXRvIHNvdXJjZVVS
TCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwg
ZmFsc2UpKTsKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdp
dGhVUkwoc291cmNlVVJMLmdldCgpLCBudWxscHRyKSk7CisgICAgaWYgKCFzb3VyY2UpCisgICAg
ICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisKKyAgICAvLyBFbnN1cmUgdGhlIGZvcm1hdCBvZiB0
aGUgaW1hZ2Ugc291cmNlIGlzIGRpZmZlcmVudCBmcm9tICdtaW1lVHlwZScuCisgICAgYXV0byBz
b3VyY2VVVEkgPSBTdHJpbmcoQ0dJbWFnZVNvdXJjZUdldFR5cGUoc291cmNlLmdldCgpKSk7Cisg
ICAgaWYgKHNvdXJjZVVUSSA9PSBkZXN0aW5hdGlvblVUSSkKKyAgICAgICAgcmV0dXJuIG51bGxT
dHJpbmcoKTsKKworICAgIC8vIFRoZSBmaWxlIGV4dGVuc2lvbiBpcyBpbXBvcnRhbnQgYmVjYXVz
ZSBpdCByZXZlYWxzIHRoZSBNSU1FIHR5cGUgb2YgdGhlIHRlbXBvcmFyeSBmaWxlLgorICAgIGF1
dG8gc3VmZml4ID0gbWFrZVN0cmluZygnLicsIGRlc3RpbmF0aW9uRXh0ZW5zaW9uKTsKKworICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBkZXN0aW5hdGlvbkZpbGVIYW5kbGU7Cisg
ICAgU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wSW1hZ2UiX3MsIGRlc3RpbmF0aW9uRmlsZUhhbmRsZSwgc3VmZml4KTsKKyAgICBpZiAo
ZGVzdGluYXRpb25GaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSW1hZ2VzLCAidHJhbnNjb2RlSW1h
Z2U6IERlc3RpbmF0aW9uIGltYWdlIGNvdWxkIG5vdCBiZSBjcmVhdGVkOiAlcyAlc1xuIiwgcGF0
aC51dGY4KCkuZGF0YSgpLCBkZXN0aW5hdGlvblVUSS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIG51bGxTdHJpbmcoKTsKKyAgICB9CisKKyAgICBDR0RhdGFDb25zdW1lckNhbGxiYWNr
cyBjYWxsYmFja3MgPSB7CisgICAgICAgIFtdKHZvaWQqIGluZm8sIGNvbnN0IHZvaWQqIGJ1ZmZl
ciwgc2l6ZV90IGNvdW50KSAtPiBzaXplX3QgeworICAgICAgICAgICAgYXV0byBoYW5kbGUgPSAq
c3RhdGljX2Nhc3Q8RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKj4oaW5mbyk7CisgICAg
ICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAgICB9LAorICAgICAgICBudWxs
cHRyCisgICAgfTsKKworICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVy
Q3JlYXRlKCZkZXN0aW5hdGlvbkZpbGVIYW5kbGUsICZjYWxsYmFja3MpKTsKKyAgICBhdXRvIGRl
c3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YUNvbnN1
bWVyKGNvbnN1bWVyLmdldCgpLCBkZXN0aW5hdGlvblVUSS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCAxLCBudWxscHRyKSk7CisKKyAgICAvLyBXcml0ZSB0aGUgc291cmNlIGltYWdlIHRvIHRoZSBk
ZXN0aW5hdGlvbiBpbWFnZS4KKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZUZyb21Tb3Vy
Y2UoZGVzdGluYXRpb24uZ2V0KCksIHNvdXJjZS5nZXQoKSwgMCwgbnVsbHB0cik7CisgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOworICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShkZXN0aW5hdGlvbkZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIGRlc3Rp
bmF0aW9uUGF0aDsKK30KKworVmVjdG9yPFN0cmluZz4gZmluZEltYWdlc0ZvclRyYW5zY29kaW5n
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93
ZWRNSU1FVHlwZXMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdHJhbnNjb2RpbmdQYXRoczsKKyAg
ICB0cmFuc2NvZGluZ1BhdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGF0aHMuc2l6ZSgpKTsK
KworICAgIGJvb2wgbmVlZHNUcmFuc2NvZGluZyA9IGZhbHNlOworCisgICAgZm9yIChhdXRvJiBw
YXRoIDogcGF0aHMpIHsKKyAgICAgICAgLy8gQXBwZW5kIGEgcGF0aCBvZiB0aGUgaW1hZ2Ugd2hp
Y2ggbmVlZHMgdHJhbnNjb2RpbmcuIE90aGVyd2lzZSBhcHBlbmQgYSBudWxsIHN0cmluZy4KKyAg
ICAgICAgaWYgKCFhbGxvd2VkTUlNRVR5cGVzLmNvbnRhaW5zKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6Om1pbWVUeXBlRm9yUGF0aChwYXRoKSkpIHsKKyAgICAgICAgICAgIHRyYW5zY29kaW5n
UGF0aHMudW5jaGVja2VkQXBwZW5kKHBhdGgpOworICAgICAgICAgICAgbmVlZHNUcmFuc2NvZGlu
ZyA9IHRydWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdHJhbnNjb2RpbmdQYXRocy51
bmNoZWNrZWRBcHBlbmQobnVsbFN0cmluZygpKTsKKyAgICB9CisKKyAgICAvLyBJZiBub25lIG9m
IHRoZSBmaWxlcyBuZWVkcyBpbWFnZSB0cmFuc2NvZGluZywgcmV0dXJuIGFuIGVtcHR5IFZlY3Rv
ci4KKyAgICByZXR1cm4gbmVlZHNUcmFuc2NvZGluZyA/IHRyYW5zY29kaW5nUGF0aHMgOiBWZWN0
b3I8U3RyaW5nPigpOworfQorCitWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVJbWFnZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBTdHJpbmcmIHV0aSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pCit7CisgICAgQVNTRVJUKCF1dGkuaXNOdWxsKCkpOworICAgIEFTU0VSVCghZXh0
ZW5zaW9uLmlzTnVsbCgpKTsKKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGVkUGF0
aHM7CisgICAgdHJhbnNjb2RlZFBhdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGF0aHMuc2l6
ZSgpKTsKKworICAgIGZvciAoYXV0byYgcGF0aCA6IHBhdGhzKSB7CisgICAgICAgIC8vIEFwcGVu
ZCB0aGUgdHJhbnNjb2RlZCBwYXRoIGlmIHRoZSBpbWFnZSBuZWVkcyB0cmFuc2NvZGluZy4gT3Ro
ZXJ3aXNlIGFwcGVuZCBhIG51bGwgc3RyaW5nLgorICAgICAgICBpZiAoIXBhdGguaXNOdWxsKCkp
CisgICAgICAgICAgICB0cmFuc2NvZGVkUGF0aHMudW5jaGVja2VkQXBwZW5kKHRyYW5zY29kZUlt
YWdlKHBhdGgsIHV0aSwgZXh0ZW5zaW9uKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRy
YW5zY29kZWRQYXRocy51bmNoZWNrZWRBcHBlbmQobnVsbFN0cmluZygpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJhbnNjb2RlZFBhdGhzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA1YzRj
MzYyMDBkY2E2YWQ1ZGQwZTRkZmY3NjIxOTlmOWNkY2JjNDBjLi43MzBkYTY0OGYyYjJmZTllNzg0
ZmQwNDA1MmUxOTBmMGQwYmYyMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+
CiAjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDxwYWwv
c3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlICJDR1V0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtMTA2LDEyICsxMDYsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogCiB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkK
IHsKLSAgICBwYWludEltYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1ha2VDR0ltYWdl
Q29weSgpLmdldCgpLCAxLCBkZXN0aW5hdGlvbiwgc291cmNlKTsKKyAgICBkcmF3TmF0aXZlSW1h
Z2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwog
fQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCiB7Ci0gICAgcGFpbnRJbWFnZShjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpLCBtYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKSwgc2NhbGVGYWN0b3IsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UpOworICAgIGRyYXdOYXRpdmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwg
Y29udGV4dCwgc2NhbGVGYWN0b3IsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZUNvcHkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGFiNjJhOTQwNDkyMTg3ZGY1OGZiNjE1MjMzZTIyMDRjMDU0NzBk
ZTYuLmMwMzBmYWNmYzgyODMyYzNmYTc2ZDBmYWRmZTgxOTY1NjNkNTI4Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTY1LDcgKzY1LDcgQEAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRD
Q29kZWNzUHJveHkubW0KIAogUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwCiAKLVBsYXRmb3JtL2Nn
L0NHVXRpbGl0aWVzLmNwcAorUGxhdGZvcm0vY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKIAogUGxh
dGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNv
Y29hLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
Zmllci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1JlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCmluZGV4IGFmYWY2ZTQ4YmMzNmE5NTc3MmMxM2U1
N2MyYjJhODJkMThkZDM0NzQuLmZhMDYzMjA2MThhNDZlOTFkODI3ZDUwNjcwYzIwNWMxNzE3NmIz
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcApAQCAtNTgsNiArNTgsMTEgQEAgV0tBcnJheVJlZiBX
S09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKICAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChwYXJhbWV0ZXJzUmVmKS0+YWNj
ZXB0RmlsZUV4dGVuc2lvbnMoKS5sZWFrUmVmKCkpOwogfQogCitXS0FycmF5UmVmIFdLT3BlblBh
bmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1Jl
ZiBwYXJhbWV0ZXJzUmVmKQoreworICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhcmFtZXRlcnNS
ZWYpLT5hbGxvd2VkTUlNRVR5cGVzKCkubGVha1JlZigpKTsKK30KKwogLy8gRGVwcmVjYXRlZC4K
IFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlDYXB0dXJlKFdLT3BlblBhbmVs
UGFyYW1ldGVyc1JlZikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKaW5kZXggMDU5ZjdjZmMwNjFlZmM0YmVl
ZmY1OTEzMmUwZTZmNDlkOTBmZmM2OC4uN2QxMzI5ODRiYTc1Njc2ZjU2NGNhY2YwNDY5ZGQxOWU2
ODM0ZjVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmgKQEAgLTQ1LDYgKzQ1LDggQEAgV0tfRVhQT1JUIGJv
b2wgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhXS09wZW5QYW5l
bFBhcmFtZXRlcnMKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlBY2NlcHRlZE1JTUVUeXBlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7
CiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWNjZXB0ZWRG
aWxlRXh0ZW5zaW9ucyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycyk7CiAKK1dL
X0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBbGxvd2VkTUlNRVR5
cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKKwogLyogREVQUkVDQVRF
RCAtIFBsZWFzZSB1c2UgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0Q2FwdHVyZUVuYWJsZWQoKSBp
bnN0ZWFkLiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0Nv
cHlDYXB0dXJlKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcAppbmRleCAyYjM5NGZjOGJkYTc0MjE3YzE3MzUxMjc2MzY1NjU5OGE0Yjg0
MmI5Li5iNjExODgxNzE4ODUyYjUwMzU5ODRmMzUwNzAyZjE3OTFhMmVlZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcApAQCAtNjMsOSArNjMsOSBAQCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJDaG9vc2VNZWRpYUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdAog
fQogI2VuZGlmCiAKLXZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVS
THNSZWYpCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVm
LCBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXNSZWYpCiB7Ci0gICAgdG9JbXBsKGxpc3RlbmVy
UmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNS
ZWYpKSk7CisgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmlsZXMoZmlsZVBhdGhzRnJv
bUZpbGVVUkxzKCp0b0ltcGwoZmlsZVVSTHNSZWYpKSwgdG9JbXBsKGFsbG93ZWRNaW1lVHlwZXNS
ZWYpLT50b1N0cmluZ1ZlY3RvcigpKTsKIH0KIAogdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyQ2FuY2VsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmgKaW5kZXggNjk5OTc2ZmFhMmFkZGU0NzhjZWY2YzRlMWIwZmVmODQ1MDk4YWVh
OC4uYWFiYmUxOWQ3MjJlZjY0MTQyNmNjMTU5MWEzNTZiYTA3MzQ0ZDdhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaApAQCAtMzUsNyArMzUsNyBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyR2V0VHlwZUlEKHZvaWQpOwogCiBXS19FWFBPUlQg
dm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlTWVkaWFGaWxlcyhXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxzUmVmLCBX
S1N0cmluZ1JlZiBkaXNwbGF5U3RyaW5nLCBXS0RhdGFSZWYgaWNvbkltYWdlRGF0YVJlZik7Ci1X
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcyk7CitX
S19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxlVVJMcywgV0tB
cnJheVJlZiBhbGxvd2VkTWltZVR5cGVzUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
cik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggODY3NzBiZTM4MDBjNWFlYmIyODEwMjJlNmIwY2FhZTdjNmRiMWI0MC4u
NDVkZWI2NDdjMzEzMGJjYjY4ZDk5NGE3MzgxN2UzYzRiNzljYzFmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAi
RXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0yMTUsNiArMjE2LDEwIEBACiAjaW5j
bHVkZSA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShN
QUMpCisjaW5jbHVkZSA8V2ViQ29yZS9VVElVdGlsaXRpZXMuaD4KKyNlbmRpZgorCiAjaWYgSEFW
RShUT1VDSF9CQVIpCiAjaW5jbHVkZSAiVG91Y2hCYXJNZW51RGF0YS5oIgogI2luY2x1ZGUgIlRv
dWNoQmFyTWVudUl0ZW1EYXRhLmgiCkBAIC00ODgsNiArNDkzLDkgQEAgV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBSZWYKICAgICAsIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24t
Pmlnbm9yZXNBcHBCb3VuZERvbWFpbnMoKSkKICAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWlucyhtX2NvbmZpZ3VyYXRpb24tPmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMoKSkKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fdHJhbnNjb2Rp
bmdRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5JbWFnZVRyYW5zY29k
aW5nIikpCisjZW5kaWYKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJj
b25zdHJ1Y3RvcjoiKTsKIApAQCAtNjY2OSwxNyArNjY3Nyw1OCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29u
c3QgVmVjdAogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikKK2Jvb2wgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdp
dGhJbWFnZVRyYW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGF1dG8gdHJhbnNjb2RpbmdNSU1FVHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OnByZWZlcnJlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhhbGxvd2VkTUlNRVR5cGVzLCB7IH0p
OworICAgIGlmICh0cmFuc2NvZGluZ01JTUVUeXBlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvIHRyYW5zY29kaW5nVVJMcyA9IGZpbmRJbWFnZXNGb3JUcmFuc2Nv
ZGluZyhmaWxlVVJMcywgYWxsb3dlZE1JTUVUeXBlcyk7CisgICAgaWYgKHRyYW5zY29kaW5nVVJM
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gdHJhbnNjb2Rp
bmdVVEkgPSBXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUodHJhbnNjb2RpbmdNSU1FVHlwZSk7Cisg
ICAgYXV0byB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOworCisg
ICAgbV90cmFuc2NvZGluZ1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBmaWxlVVJMcyA9IGZpbGVVUkxzLCB0cmFuc2NvZGluZ1VSTHMgPSBXVEZN
b3ZlKHRyYW5zY29kaW5nVVJMcyksIHRyYW5zY29kaW5nVVRJID0gdHJhbnNjb2RpbmdVVEksIHRy
YW5zY29kaW5nRXh0ZW5zaW9uID0gdHJhbnNjb2RpbmdFeHRlbnNpb25dKCkgbXV0YWJsZSB7Cisg
ICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgICAgIGF1dG8gdHJhbnNj
b2RlZFVSTHMgPSB0cmFuc2NvZGVJbWFnZXModHJhbnNjb2RpbmdVUkxzLCB0cmFuc2NvZGluZ1VU
SSwgdHJhbnNjb2RpbmdFeHRlbnNpb24pOworICAgICAgICBBU1NFUlQodHJhbnNjb2RpbmdVUkxz
LnNpemUoKSA9PSB0cmFuc2NvZGVkVVJMcy5zaXplKCkpOworCisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgZmlsZVVSTHMgPSBmaWxlVVJMcywgdHJhbnNjb2RlZFVSTHMg
PSBXVEZNb3ZlKHRyYW5zY29kZWRVUkxzKV0oKSBtdXRhYmxlIHsKKyNpZiBFTkFCTEUoU0FOREJP
WF9FWFRFTlNJT05TKQorICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4dGVuc2lv
bkZpbGVzOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmaWxlVVJMcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkZp
bGVzLmFwcGVuZCghdHJhbnNjb2RlZFVSTHNbaV0uaXNOdWxsKCkgPyB0cmFuc2NvZGVkVVJMc1tp
XSA6IGZpbGVVUkxzW2ldKTsKKyAgICAgICAgICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygiV2Vi
UGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgc2FuZGJveEV4dGVuc2lv
bkZpbGVzKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRi
b3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykp
KTsKKyNlbmRpZgorICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMsIHRyYW5zY29kZWRVUkxzKSk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShm
aWxlVVJMcyk7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWRNSU1FVHlwZXMpOworICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFu
ZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhmaWxlVVJMcywgYWxsb3dlZE1JTUVUeXBlcykpIHsKICNp
ZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhh
bmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcygi
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgZmlsZVVSTHMpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVu
UGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsKKyAgICAgICAgYXV0byBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5
SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
Il9zLCBmaWxlVVJMcyk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNh
bmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
cykpKTsKICNlbmRpZgotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMsIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgeyB9KSk7CisgICAg
fQogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1f
b3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCA3YTI2ZDE3MGZhNTA1MmZkMjNiYTZlNzEwMThiZTg1ZTUxYzc4
Yzg1Li5jOWMzMGQ1MzRjYWY1ZTI1NjQxMDE0NzFlYjAwNzQ0MDM0MTEwM2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTkyNCw2ICsxOTI0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKICAgICB2b2lk
IHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwg
Y29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOworICAgIGJvb2wgZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKICAg
ICB2b2lkIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHByaW50RnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1
aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdl
LCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRl
ZERhdGFiYXNlUXVvdGFEZWxheWVkUmVwbHkmJik7CkBAIC0yODQxLDYgKzI4NDIsOSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV91c2VyU2NyaXB0c05vdGlmaWVkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24geyBmYWxzZSB9
OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3RyYW5zY29kaW5nUXVl
dWU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGM5NDhhY2MzMWM1OTJj
ZjJkYTc5YmNkM2Q5MTEwN2E5MGJiOTQ4Mi4uNTNkN2Y4NTRmMmNhMThkNDM5NGQzMTYzMTE3ZTg3
ZjEyMTY0YjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yOTAsNyArMjkwLDcgQEAKIAkJMUE5RkJBOEQxM0ZGMDRFNjAwREVFRDY3
IC8qIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RkJBOEMxM0ZGMDRFNjAwREVFRDY3IC8qIFBsdWdp
bkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oICovOyB9OwogCQkxQUExMzIxMjE5MUQ1OTI0MDA5QzE0
ODkgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUExMzIxMTE5MUQ1OTI0MDA5QzE0ODkgLyogV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBMjBENTExOEFENTBFMDAwNUQxRUQ0IC8qIFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBMjBENTAxOEFENTBFMDAwNUQxRUQ0IC8qIFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMkU1MUIxMkU0QzA1RTAw
QkM0OTY2IC8qIENHVXRpbGl0aWVzLmggKi87IH07CisJCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2
NiAvKiBJbWFnZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0aWVzLmgg
Ki87IH07CiAJCTFBQTJFNTY3MThENzc1MDgwMDM4MTRCRCAvKiBXS1dlYlByb2Nlc3NCdW5kbGVQ
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUEyRTU2NTE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVy
cy5oICovOyB9OwogCQkxQUEzRDc1QzE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVl
SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFB
M0Q3NUExNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCAqLzsgfTsKIAkJ
MUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE0MTdDOTEyQzAwQ0NBMDAyQkU2N0Ig
LyogVGV4dENoZWNrZXIuaCAqLzsgfTsKQEAgLTI1MDksOCArMjUwOSw4IEBACiAJCTFBQTFDQzVD
MTAwRkExQTEwMDc4REVCQyAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gUXVhcnR6Q29yZS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RdWFydHpDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJ
MUFBMUNEMDYxMDBGQTFCQTAwNzhERUJDIC8qIENhcmJvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
bmFtZSA9IENhcmJvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkxQUEy
MEQ1MDE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUEyRTUxQjEyRTRDMDVFMDBCQzQ5
NjYgLyogQ0dVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0dV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFBMkU1MUMxMkU0QzA1
RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENHVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllc0NH
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlVXRpbGl0aWVz
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUEyRTU2NDE4RDc3NTA4MDAz
ODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTJFNTY1MThENzc1MDgwMDM4MTRCRCAv
KiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFBM0Q3NTkxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJl
ZUhvc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVM
YXllclRyZWVIb3N0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk0OCw4ICs1
OTQ4LDcgQEAKIAkJMUFBMkU1MUExMkU0QzA1NjAwQkM0OTY2IC8qIGNnICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkxQUEyRTUxQzEyRTRDMDVFMDBCQzQ5
NjYgLyogQ0dVdGlsaXRpZXMuY3BwICovLAotCQkJCTFBQTJFNTFCMTJFNEMwNUUwMEJDNDk2NiAv
KiBDR1V0aWxpdGllcy5oICovLAorCQkJCTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFn
ZVV0aWxpdGllc0NHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2c7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtOTU3NSw2ICs5NTc0LDcgQEAKIAkJCQk1MUIxNUE3RDEzODQzOUIy
MDAzMjFBRDggLyogdW5peCAqLywKIAkJCQlFQ0E2ODBEMzFFNjkwNEI1MDA3MzFEMjAgLyogRXh0
cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCAqLywKIAkJCQlFQ0JGQzFEQjFFNkE0RDY2MDAwMzAw
QzcgLyogRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oICovLAorCQkJCTFBQTJFNTFCMTJFNEMw
NUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllcy5oICovLAogCQkJCTUxQTdGMkY0MTI1QkY4RDQw
MDhBRUIxRCAvKiBMb2dnaW5nLmNwcCAqLywKIAkJCQk1MUE3RjJGMjEyNUJGODIwMDA4QUVCMUQg
LyogTG9nZ2luZy5oICovLAogCQkJCTBGRENEN0Y2MUQ0N0U5MkEwMDlGMDhCQyAvKiBMb2dJbml0
aWFsaXphdGlvbi5oICovLApAQCAtMTA3NTQsNyArMTA3NTQsNiBAQAogCQkJCTQxODk3RUQ4MUY0
MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFREExRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQTJFNTFEMTJFNEMwNUUw
MEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCNEI0NjAyMEI1
MDRBQzAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RkUwQTNCMjQ2MzJCNjAwMDI2MzFFMSAvKiBDb2Nv
YUNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDgyNzM0NzI0NTI4RjYwMDBBOTU0OTMgLyog
Q29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDgzMyw2ICsxMDgzMiw3IEBACiAJCQkJ
NTFDMEM5NzQxRERENzYwMDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFn
ZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRUM2OUUxODcyMDkyMTAwQjk1MUYw
IC8qIEltcG9ydGFuY2VBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjA0RUUzMTFD
ODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
RTdEQzUxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA1OTFlMTk2YWI3OTY2OGJjYWI0YmVhODlhNDYxOWZlZjk1YmJkZmQ2Li5mYmM1OGJhMjAwZWU0
MDBkOWQxZjFmYzFhYzg1NmY5MTE4YzhiN2M1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1Nd
OiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNv
bnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
cnVuT3BlblBhbmVsKToKKwogMjAyMC0wNy0wOCAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3ph
Ym9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIEZpeCBlcnJvcnMgZnJvbSBjYWxscyB0
byB1bmFtZSB3aGVuIG5vdCBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggMTNiZTFlOGY5NzA1NGIzOWEwNWQxNzA1NzY0YWI0ODRiNGJlMzhi
Zi4uNTgyNjFhMzYxZGFjYjk0MTIyYTA4OTk3MjE1MzJmNThhNDYxNDE1YiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIyMywxMiArMjIzLDE0IEBAIHN0
YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgfQogI2VuZGlmCiAKKyAgICBXS0FycmF5UmVmIGFs
bG93ZWRNaW1lVHlwZXMgPSBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxsb3dlZE1JTUVUeXBl
cyhwYXJhbWV0ZXJzKTsKKwogICAgIGlmIChXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NN
dWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpKSB7Ci0gICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwgZmlsZVVSTHMpOworICAgICAgICBX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJSZWYsIGZp
bGVVUkxzLCBhbGxvd2VkTWltZVR5cGVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwg
YWRvcHRXSyhXS0FycmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEpKS5nZXQoKSk7CisgICAgV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVyUmVmLCBhZG9wdFdL
KFdLQXJyYXlDcmVhdGUoJmZpcnN0SXRlbSwgMSkpLmdldCgpLCBhbGxvd2VkTWltZVR5cGVzKTsK
IH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTJlYzhkZjZlMDA3NjdhZTJmZjI5NDQ0YWIxNmQ4
ZWY0YzlkZjQzZC4uMDE5ZmJkMGYyZTkzNmM4ODg2NjA4YjlkMjEzY2UwZTMyZTA5ZjJkMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA3LTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogQSBIRUlGIGltYWdlLCBzZWxl
Y3RlZCBmcm9tIHRoZSBPcGVuUGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0
ZWQgTUlNRSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSB0aGUgSEVJRiBp
bWFnZSBpcyBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlIHdoZW4gaXQgaXMgCisg
ICAgICAgIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCBhbmQgdGhlICdhY2NlcHQnIGF0dHJp
YnV0ZSBvZiB0aGUgPGlucHV0PgorICAgICAgICBkb2VzIGFsbG93IHRoZSBIRUlGIE1JTUUgdHlw
ZS4KKworICAgICAgICBObyBuZWVkIHRvIHRlc3QgdGhpcyBmdW5jdGlvbmFsaXR5IG9uIFdLMSBz
aW5jZSB0aGUgaW1hZ2UgdHJhbnNjb2RpbmcgCisgICAgICAgIHNob3VsZCBoYXBwZW4gaW4gdGhl
IFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGZh
c3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFw
aS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
aW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQwMC5oZWlj
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjAtMDctMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFJlbW92ZSBzb21lIG1lbnRpb25zIG9mIG5vbi1leGlzdGFudCBmaWxlcyBpbiBl
eHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzM2FkYTU1NWE5Mzg1MGFjNDgyYTVj
ZDk4ZGEzOTc0NWIxMjYyNjU1Li42MTliYzRlNDIyYjJlZTE0YjQ3OGI5MmI4OTdjMWMxOWM1NmNi
ODRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg5OCw2ICs4OTgsOCBAQCBodHRwL3dwdC9jcm9z
cy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5LyBbIFNraXAgXQogCiAjIHRlc3RSdW5uZXIudGVybWlu
YXRlTmV0d29ya1Byb2Nlc3MoKSBvbmx5IHdvcmtzIGluIFdlYktpdDIKIGZhc3QvZmlsZXMvYmxv
Yi1uZXR3b3JrLXByb2Nlc3MtY3Jhc2guaHRtbCBbIFNraXAgXQorZmFzdC9mb3Jtcy9maWxlL2Vu
dHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
Zm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1s
IFsgU2tpcCBdCiAKICMgVGhpcyB0ZXN0IGlzIGN1cnJlbnRseSBvbmx5IHJlbGV2YW50IG9uIG1h
Yy13azIKIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmln
dXJhdGlvbi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRy
YW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTVlYTg2MDhmMDgy
MGVkMTQ2Y2YwODg1NmU2Njg0OTg0ZGIwMDFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBh
bmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitPUEVOIEZJTEUgUEFORUwKK1Rlc3Rz
IGEgSEVJQyBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBI
RUlDLCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYW55IHN1cHBvcnRlZCBNSU1FIHR5cGUuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZpbGVMaXN0Lmxlbmd0aCBpcyAx
CitQQVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvaGVpYyIKK1BBU1MgZmlsZS5zaXplIGlzIG5vbi16
ZXJvLgorSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4KK1BBU1MgaW1nLndpZHRoIGlzIG5vdCA0
MDAKK1BBU1MgaW1nLmhlaWdodCBpcyBub3QgNDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFu
c2NvZGUtb3Blbi1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ODRkNTU5NDM0ZmE3OTQyN2U2ZmRk
NmU4MDM0MzAyNDUzNWFjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbApA
QCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJJTUFH
RS9IRUlDIiBvbmNoYW5nZT0iY2hhbmdlZChldmVudCkiPjwvaW5wdXQ+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIGEgSEVJQyBpbWFnZSwgY2hvc2VuIHZpYSB0aGUg
ZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBIRUlDLCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8g
YW55IHN1cHBvcnRlZCBNSU1FIHR5cGUuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4
NDAwLmhlaWMnXSk7CisKKyAgICAgICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZh
dGVBdChpbnB1dEVsZW1lbnQub2Zmc2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZzZXRXaWR0aCAv
IDIsCisgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlucHV0RWxlbWVu
dC5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoYW5n
ZWQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZlbnQudGFyZ2V0
LmZpbGVzOworICAgICAgICAgICAgc2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIsICIxIik7CisK
KyAgICAgICAgICAgIGZpbGUgPSBmaWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZmlsZS50eXBlIiwgImltYWdlL2hlaWMiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlTm9uWmVybygiZmlsZS5zaXplIik7CisKKyAgICAgICAgICAgIGltZyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpbWcpOworCisgICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAg
ICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgaW1nLm9u
bG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIHdhcyBsb2Fk
ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcud2lkdGgiLCAiNDAwIik7
CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcuaGVpZ2h0IiwgIjQwMCIpOworICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4geworICAgICAgICAgICAgICAgICAgICBk
ZWJ1ZygiSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
c2hvdWxkTm90QmUoImltZy53aWR0aCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hv
dWxkTm90QmUoImltZy5oZWlnaHQiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgaW1nLnNyYyA9
IHJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgcmVhZGVyLnJlYWRB
c0RhdGFVUkwoZmlsZSk7CisgICAgICAgIH0KKyAgICAgICAgcnVuVGVzdCgpOworICAgIDwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2Nv
ZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTExNDYwYmFiODhjM2ZjNjIy
ZjZmYjNhMTYwNjc5MjY3MzQzNGFjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorT1BFTiBGSUxFIFBBTkVMCitUZXN0cyBhIEhFSUMg
aW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgUE5HLCB3aWxs
IGJlIGNvbnZlcnRlZCB0byBhIFBORyBpbWFnZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgZmlsZUxpc3QubGVuZ3RoIGlzIDEKK1BBU1MgZmlsZS50eXBlIGlzICJpbWFn
ZS9wbmciCitQQVNTIGZpbGUuc2l6ZSBpcyBub24temVyby4KK0ltYWdlIHdhcyBsb2FkZWQuCitQ
QVNTIGltZy53aWR0aCBpcyA0MDAKK1BBU1MgaW1nLmhlaWdodCBpcyA0MDAKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Bl
bi1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2lt
YWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk1YTI5YTczYjgzNWE1
MTJiMzYyYWFiMzIzZmZmOGI5YmJlNzM2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5o
dG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9
Ii5wbmciIG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9pbnB1dD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlhIHRoZSBm
aWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBQTkcg
aW1hZ2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldE9wZW5Q
YW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMnXSk7CisKKyAg
ICAgICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdp
bnB1dCcpWzBdOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChpbnB1dEVsZW1lbnQu
b2Zmc2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZzZXRXaWR0aCAvIDIsCisgICAgICAgICAgICAg
ICAgaW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlucHV0RWxlbWVudC5vZmZzZXRIZWlnaHQgLyAy
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoYW5nZWQoZXZlbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzOworICAgICAgICAg
ICAgc2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIsICIxIik7CisKKyAgICAgICAgICAgIGZpbGUg
PSBmaWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZS50
eXBlIiwgImltYWdlL3BuZyIpOworICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJmaWxlLnNp
emUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7
CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7CisKKyAgICAgICAg
ICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgICAgICAgICAgcmVhZGVyLm9u
bG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpbWcub25sb2FkID0gKCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2Ugd2FzIGxvYWRlZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImltZy53aWR0aCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImltZy5oZWlnaHQiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgaW1nLm9u
ZXJyb3IgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJJbWFnZSBjb3VsZCBu
b3QgYmUgbG9hZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgiaW1nLndp
ZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgiaW1nLmhlaWdo
dCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcuc3JjID0gcmVhZGVyLnJlc3VsdDsKKyAg
ICAgICAgICAgIH07CisgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsKKyAg
ICAgICAgfQorICAgICAgICBydW5UZXN0KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkv
cmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2NmODU5ZDhkYTFkZjExNjI1NGRhNjM5MzU1OWU1OWU5NjljYTdiNgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgNzEwCnpjbVlqT09LVEhSNmgzRVc4ZERsbFEhM1QhQjRgalBo
MSEqX1kmNUFsI2Zae0h3WDF9ZzNBdmF0KlhnTE8yKH5FSgp6ZyRyS2A3aFN7JERFT2NZSHpHPVBG
QUN+IXNQMF8yPSl3fWVHbjJGKT1IdlUkPil5SE41WWhIKElIemwjYXRKMnUKenRMaThiendvYFZB
fkQkUm5wK1FJTnUtcSVjSnYxNFR5PyQqWjxpWiohZVJgaEUoWX4lVGNAPU9lZHN1SVB7a2NZCnox
fHIrd2Nwe3skY0ZEbVhZekEzTSMlRVBAQFN4aGZBPz4mYDR3NCsqXjt6amFxd1RmUVA2SXJMYXwr
QzUkWXA/Tgp6Pl5KPmdVdDEmVUhKailkJGE5S1lFaCNYaSFqeH1weGNkPXVkeWE2X2BDcD0keHxK
QVRkWWhaREZCfnc4IzhjeGoKej5NfSlNc3F+JWJ8Q1B6KT83cmdOcCotJkNTMk5sSiF9dn1OPlEr
R2A4cnhRX1d8Z0dPV0hKZEZQfT1YejhTayhiCnpqTyFNeyE+Wm5oUiNLRCEkdFZHMTNmemJXMjlM
a055Q0U2aHQrWkZkY215VGxTKFFwTzFUUlN6NF5vJVowZiVfIQp6aENhJnM8azUmQHpLZT9GVWEy
Xz1oI2QjU2tEMmU/cSVIN3YwQSt2PFBabiQmVG5Nfk09KCpYO0R5KElYKmAtc0cKekpoenUkRXEl
RTF7WHphP19TJDt5eVZscURVO2EjOG90YH1YPkZtcXEkbjZvYiZMbj0wbiZ+STImbkQobUU5cXNk
CmklJW1VbF9pNGNATjZZQVd4RUx7aHZGbEFvVyVqcH5HMklxRCY7SjFfUihOVXYKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA5ZjA1ZTQ2ZjdlYWIyNjE0YjE4MzIxOGM4MjEzZjhjYWIxMzAxOGQ2Li5m
ZjU5NTMwYjdmMmFmY2U3MWNhYzBmODgwYjhlYzViMDg4ZWYxOTAxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04NSw2ICs4NSw5IEBAIGZh
c3QvZXZlbnRzL2luYWN0aXZlLXdpbmRvdy1uby1tb3VzZS1ldmVudC5odG1sIFsgUGFzcyBdCiAK
IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWluLXR3by1wYWdlcy5odG1s
IFsgUGFzcyBdCiAKK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUt
b3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1h
Z2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmll
cy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404048</attachid>
            <date>2020-07-11 02:23:59 -0700</date>
            <delta_ts>2020-07-11 20:06:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200711022358.patch</filename>
            <type>text/plain</type>
            <size>56475</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA3MGFkMTgyYjliNzBkMTU2MjhkY2Yw
MzkwMmM2YTIxZDkzOTVjMzkuLjdlNTFlYzNiOWY2MGUxZjY3YTBmMTI5YjAxMTFmNmI2NGY1YTUz
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2Us
IHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBh
Y2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYSBzdWZm
aXggdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIFRoZSBnb2FsIGlz
IHRvCisgICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbWFnZSBm
aWxlcyB3aXRoIHZhbGlkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5o
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFy
eUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAtMDctMDggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBwb3NzaWJsZSB0byBlc3Rh
Ymxpc2ggZGlyZWN0IFhQQyBjb25uZWN0aW9ucyBiZXR3ZWVuIFdlYktpdCBwcm9jZXNzZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYTVlZmJhYjExMzI5NjhjYmFkZTRhY2RiMDMyNmU4MDUwZDJjMmQ5Li4wYWJh
MjE4NjM5MWI4YzQwYjc2Mjk4NDc5ZTAyNmVkMGU5NzBhMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20g
dGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphbGxvd2VkTUlNRVR5cGVzKToKKyAgICAgICAg
TWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBsb3dlcmNhc2UgTUlNRSB0eXBlcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToK
KwogMjAyMC0wNy0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
UGFydCAzIG9mIFNpbXBsZUNvbG9yIGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkg
dGhlIHNhbWUgLSBsZXQncyBjb252ZXJnZSB0aGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNDczMjBhZDI1MTcy
MzgxNWI2MGZjZTAwMjMzNTcwYWViZTIwYzUuLmUyM2VlZDBjOWVmYThmYzgxODE5OTQyZGRmOGQ5
OTU3OTUzZTNlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDctMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1Nd
OiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNv
bnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgZ2l2ZW4gdGhlIGxpc3Qgb2YgdGhlIHNlbGVjdGVkIGZp
bGUgYW5kIHRoZSBhbGxvd2VkCisgICAgICAgIE1JTUUgdHlwZXMuIE9ubHkgc2VsZWN0ZWQgZmls
ZXMgd2hvc2UgTUlNRSB0eXBlcyBkbyBub3QgZXhpc3QgaW4gdGhlIGFsbG93ZWQKKyAgICAgICAg
TUlNRSB0eXBlcyB3aWxsIGJlIHRyYW5zY29kZWQuIFJpZ2h0IG5vdywgdGhpcyBvbmx5IHdpbGwg
YXBwbHkgdG8gdGhlIEhFSUYKKyAgICAgICAgaW1hZ2VzIG9uIG1hY09TLgorCisgICAgICAgICog
UGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY2cvQ0dVdGlsaXRpZXMuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFBsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpmaW5kSW1hZ2VzRm9yVHJhbnNj
b2RpbmcpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZXMpOgorICAgICAgICBJbXBs
ZW1lbnQgYSBmdW5jdGlvbiB0aGF0IHRyYW5zY29kZXMgaW1hZ2VzIGFtb25nIGEgc2V0IG9mIGZp
bGVzIGdpdmVuCisgICAgICAgIHRoZSBhbGxvd2VkTUlNRVR5cGVzLiBUaGUgZGVzdGluYXRpb24g
TUlNRSB0eXBlIG9mIHRoZXNlIGltYWdlcyBpcyB0aGUKKyAgICAgICAgZmlyc3QgTUlNRSB0eXBl
IGluIHRoZSBhbGxvd2VkTUlNRVR5cGVzIHdoaWNoIENHIHN1cHBvcnRzIGVuY29kaW5nIHRvLgor
CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisgICAgICAgIENhbGwgZHJhd05hdGl2ZUlt
YWdlKCkgYWZ0ZXIgcmVuYW1pbmcgcGFpbnRJbWFnZSgpIHRvIGRyYXdOYXRpdmVJbWFnZSgpLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwOgorICAgICAgICAoV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyQ2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgIFRyYW5zZmVyIHRoZSBsaXN0IG9mIHRoZSBhbGxv
d2VkIE1JTUUgdHlwZXMgZnJvbSB0aGUgT3BlblBhbmVsIHRvIHRoZQorICAgICAgICBmaWxlIGNo
b29zZXIgbGlzdGVuZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV90cmFuc2NvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29k
aW5nKToKKyAgICAgICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgaW4gYSB3b3JrIHF1ZXVlIHNvIHRo
ZSBVSSBwcm9jZXNzIGlzIG5vdCBibG9ja2VkLiAKKyAgICAgICAgT25jZSB0aGUgdHJhbnNjb2Rp
bmcgZmluaXNoZXMsIHRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCB0byB0aGUgV2ViUGFnZS4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDctMDggIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGlu
ZyByMjY0MTMyIGFuZCByMjY0MTM5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDYwYjMyZTQ2ZmM0Mjkw
ODIzYTYyOWJkYTNlZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQzYzZkNTJhOGE4YWYxNTVlNmU4
ZWU4ZjkxMjAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhl
ZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYp
OworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7
IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxl
QWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSBmYWxzZSk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiAv
LyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
ZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0ZmZhODlkNGRjZGY0MGFjMWIx
Yjg3ZC4uMWNjZTE3ZGM1OWUyMzNjNmE1ODAwMWUxYjZjOTA4ZTg0NWE3YzkwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcg
aG9tZURpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKIH0KIAot
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5k
bGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKQEAgLTExMCwxMiArMTEwLDE2IEBAIFN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBwbGF0Zm9ybUZpbGVICiAgICAgICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOwog
CiAgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuCi0gICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0g
cHJlZml4LnV0ZjgoKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5k
YXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOworICAgIENTdHJpbmcgcHJlZml4VVRGOCA9IHBy
ZWZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFVURjguZGF0
YSgpLCBwcmVmaXhVVEY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQo
IlhYWFhYWCIsIDYpOworICAgIAorICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4K
KyAgICBDU3RyaW5nIHN1ZmZpeFVURjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZChzdWZmaXhVVEY4LmRhdGEoKSwgc3VmZml4VVRGOC5sZW5ndGgoKSk7CiAg
ICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFu
ZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBsYXRmb3JtRmls
ZUhhbmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VVRGOC5s
ZW5ndGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1
Y2EwZjVkZi4uYmM2M2U4MWU0Njg1ZDgyZjRjZjhhMGEzMTNkZmM4OTM0MmYwNzJhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTMyNiw4ICszMjYsMTEgQEAgVmVj
dG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQor
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CisgICAgLy8gRklYTUU6
IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1
c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9ubHkuCisgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1
ZmZpeC5pc0VtcHR5KCkpOworCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJk
dXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBh
dGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBudWxs
cHRyKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBjOWY1MDE0MzZhYmNjODA5NGU4NDE0ODBkMjFmZTM2YTQ3MWU4MWZmLi5h
OWJkYjJjMGVhZjI4MjZmOTdjOWVkNjU4OGI0ODMyYjg3ZDQwZWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ0Miw4ICs0NDIsMTEgQEAgYm9vbCBnZXRW
b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVt
cG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogeworICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90
IHN1cHBvcnRlZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFj
T1MtcG9ydC1vbmx5LgorICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgp
KTsKKwogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBEaXIg
PSBnZXRlbnYoIlRNUERJUiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5k
ZXggNjU5ZGZkNTI3MjdkYzllZjY5OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4uYTAzZjhhNDY0NGVk
YjkwNzgxZmU0MzlhZjZjMDM3OWU1YTEyYTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcApAQCAtNDA0LDggKzQwNCwxMSBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9y
YXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAg
IHJldHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBzdWZmaXgpCiB7CisgICAgLy8gRklYTUU6IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVk
LCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9u
bHkuCisgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1ZmZpeC5pc0VtcHR5KCkpOworCiAgICAg
aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAKICAgICBTdHJpbmcgcHJvcG9zZWRQYXRo
ID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2Vk
UGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApp
bmRleCA5ZTBlMTZkMWFlNDI1MDdkMTFhYjNmNDIwZWQxMmIxNDRjMWNiMTIxLi43ZGRmOTJkNDYy
ODE0M2MxY2FkYjlhODgwODc4ZTIyMjIyZGE1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtODE0LDEzICs4MTQsMTMgQEAgVmVjdG9yPFN0
cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6YWxsb3dlZE1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbWltZVR5cGUKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOwogCiAg
ICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IG1pbWVUeXBlcykKLSAgICAgICAgYWxsb3dlZE1JTUVU
eXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICAgICAgYWxsb3dlZE1JTUVU
eXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCkpOwogCiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKSB7CiAgICAgICAg
IGF1dG8gbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbih0
cmltbWVkRXh0ZW5zaW9uKGV4dGVuc2lvbikpOwogICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBw
ZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBw
ZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCAyMTllZTE5NTk3MTM0MjFlY2QwY2QyOWUyMmQ1
YjE3YTU1NWYxODAzLi4yMzM3YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5ODcxNThmZjIwMjM1MWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC01OSw3ICs1
OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHByZWZlcnJl
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBtaW1lVHlw
ZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+IGNyZWF0ZU1JTUVUeXBlUmVnaXN0
cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IGY1ZGZlNDc1Nzk5NGM2OWFlMzQyMGEzNTRkZjY4YzVh
NjZhNjAxNTcuLjZiMmQ4MWUzNWIwOGNmNzRmNGYzNjFhZWJjNzRmMzEyOWM3ZDliN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtNjYs
NiArNjYsOCBAQCBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJik7CiAKIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29u
dGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmIHNvdXJjZSk7CisKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCiBjbGFzcyBOYXRpdmVJbWFnZUhhbmRsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCmluZGV4IDZmZDc3ZTlhOTdlYWRkZjc1MDM0ZmNlYjQ2MTQ1ZTQ1MzA4ZDM2NzQuLmM4NmFl
ZTFhMjVjOTZiZjFkZDczNzBiMWZmYjkzMmUxOGE4MjA4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC04NCw2
ICs4NCwyNSBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9y
LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKK3sK
KyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsK
KyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9u
LnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOworICAgIENHQ29udGV4dFNj
YWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworCisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBp
bWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOwor
CisgICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7CisgICAg
Q0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55
KCk7CisKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RY
LCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBD
R0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Cit9CisKIHZvaWQgY2xlYXJOYXRpdmVJ
bWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAjaWYgQ0FDSEVf
U1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDAyYjQ2MjBmOTNhYTE1OTBmZjdhNDhlNmU4NDFiYmJmNDRlNDAzMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisvLyBHaXZlbiBhIGxpc3Qgb2YgZmlsZXMnICdwYXRocycgYW5kICdhbGxvd2VkTUlNRVR5cGVz
JywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0CisvLyBvZiBzdHJpbmdzIHdob3NlIHNpemUg
aXMgdGhlIHNhbWUgYXMgdGhlIHNpemUgb2YgJ3BhdGhzJyBhbmQgaXRzIGVudHJpZXMgYXJlIGFs
bAorLy8gbnVsbCBzdHJpbmdzIGV4Y2VwdCB0aGUgb25lcyB3aG9zZSBNSU1FIHR5cGVzIGFyZSBu
b3QgaW4gJ2FsbG93ZWRNSU1FVHlwZXMnLgorVmVjdG9yPFN0cmluZz4gZmluZEltYWdlc0ZvclRy
YW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsbG93ZWRNSU1FVHlwZXMpOworCisvLyBHaXZlbiBhIGxpc3Qgb2YgaW1hZ2VzJyAncGF0
aHMnLCB0aGlzIGZ1bmN0aW9uIHRyYW5zY29kZXMgdGhlc2UgaW1hZ2VzIHRvIGEgbmV3CisvLyBm
b3JtYXQgd2hvc2UgVVRJIGlzIGRlc3RpbmF0aW9uVVRJLiBUaGUgcmVzdWx0IG9mIHRoZSB0cmFu
c2NvZGluZyB3aWxsIGJlIHdyaXR0ZW4KKy8vIHRvIHRlbXBvcmFyeSBmaWxlcyB3aG9zZSBleHRl
bnNpb25zIGFyZSAnZGVzdGluYXRpb25FeHRlbnNpb24nLiBJdCByZXR1cm5zIGEgbGlzdAorLy8g
b2YgcGF0aHMgdG8gdGhlIHJlc3VsdCB0ZW1wb3JhcnkgZmlsZXMuIElmIGFuIGVudHJ5IGluICdw
YXRocycgaXMgbnVsbCBvciBhbiBlcnJvcgorLy8gaGFwcGVucyB3aGlsZSB0cmFuc2NvZGluZywg
YSBudWxsIHN0cmluZyB3aWxsIGJlIGFkZGVkIHRvIHRoZSByZXR1cm5lZCBsaXN0LgorVmVjdG9y
PFN0cmluZz4gdHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVUSSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkV4dGVu
c2lvbik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApp
bmRleCBmMWMwNTliYmY4MjI3YjAxN2U0ODMwNzA4ZDIyZDI0ZGI0ZDA0MGRiLi43MjkzMTMyMzlk
NWQ1YTFiOWFmMDhhZDdmNDU0ZDZmYjk0ZWFhZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcu
aApAQCAtNTcsNiArNTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKElQQykgXAogICAgIE0oSVRQ
RGVidWcpIFwKICAgICBNKEljb25EYXRhYmFzZSkgXAorICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJ
bmNyZW1lbnRhbFBERikgXAogICAgIE0oSW5jcmVtZW50YWxQREZWZXJib3NlKSBcCiAgICAgTShJ
bmRleGVkREIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMDhmNmQ1ZWZiNGFhYTg2YjEwNGE0OWM5ODU1
ZjIwNzI1YjY4MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkNHVXRpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50
SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2Nh
bGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24sIENHUmVjdCBzb3VyY2UpCi17Ci0gICAgQ0dD
b250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLQotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29u
dGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54LCBkZXN0aW5hdGlvbi55LCBzb3VyY2Uuc2l6
ZS53aWR0aCwgc291cmNlLnNpemUuaGVpZ2h0KSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29u
dGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpIC8gc2NhbGVGYWN0b3I7Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKSAvIHNjYWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRl
c3RpbmF0aW9uLnggLSBzb3VyY2Uub3JpZ2luLng7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFn
ZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkgKyBzb3VyY2Uub3JpZ2luLnk7Ci0KLSAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZShkZXN0WCwgZGVzdFksIGltYWdlV2lkdGgs
IGltYWdlSGVpZ2h0KSwgaW1hZ2UpOwotCi0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250
ZXh0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2Nn
L0NHVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MWQxODFhOGZj
NzU3M2M5MzBjZmM2MDNiMGY0MTQyODc0N2IyMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGll
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
Q0dVdGlsaXRpZXNfaAotI2RlZmluZSBDR1V0aWxpdGllc19oCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi12b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNj
YWxlRmFjdG9yLCBDR1BvaW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDR1V0aWxpdGllc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGVjNmQz
MDkzZDkxZDgxOGVmZTc0ZTM0MTEzOTMyM2M0ODRjYzYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcApAQCAtMCwwICsxLDEy
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZVV0
aWxpdGllcy5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEltYWdlSU8vSW1h
Z2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25FeHRlbnNpb24pCit7CisgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgYXV0
byBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5n
ZXQoKSwgbnVsbHB0cikpOworICAgIGlmICghc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbFN0
cmluZygpOworCisgICAgYXV0byBzb3VyY2VVVEkgPSBTdHJpbmcoQ0dJbWFnZVNvdXJjZUdldFR5
cGUoc291cmNlLmdldCgpKSk7CisgICAgaWYgKHNvdXJjZVVUSSA9PSBkZXN0aW5hdGlvblVUSSkK
KyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKKworICAgIC8vIEl0IGlzIGltcG9ydGFudCB0
byBhZGQgdGhlIGFwcHJvcHJpYXRlIGZpbGUgZXh0ZW5zaW9uIHRvIHRoZSB0ZW1wb3JhcnkgZmls
ZSBwYXRoLgorICAgIC8vIFRoZSBGaWxlIG9iamVjdCBkZXBlbmRzIHNvbGVseSBvbiB0aGUgZXh0
ZW5zaW9uIHRvIGtub3cgdGhlIE1JTUUgdHlwZSBvZiB0aGUgZmlsZS4KKyAgICBhdXRvIHN1ZmZp
eCA9IG1ha2VTdHJpbmcoJy4nLCBkZXN0aW5hdGlvbkV4dGVuc2lvbik7CisKKyAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZGVzdGluYXRpb25GaWxlSGFuZGxlOworICAgIFN0cmlu
ZyBkZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcElt
YWdlIl9zLCBkZXN0aW5hdGlvbkZpbGVIYW5kbGUsIHN1ZmZpeCk7CisgICAgaWYgKGRlc3RpbmF0
aW9uRmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKEltYWdlcywgInRyYW5zY29kZUltYWdlOiBEZXN0
aW5hdGlvbiBpbWFnZSBjb3VsZCBub3QgYmUgY3JlYXRlZDogJXMgJXNcbiIsIHBhdGgudXRmOCgp
LmRhdGEoKSwgZGVzdGluYXRpb25VVEkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBu
dWxsU3RyaW5nKCk7CisgICAgfQorCisgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJh
Y2tzID0geworICAgICAgICBbXSh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVf
dCBjb3VudCkgLT4gc2l6ZV90IHsKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlID0gKnN0YXRpY19j
YXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAgICAgICAgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICAgICAgfSwKKyAgICAgICAgbnVsbHB0cgorICAg
IH07CisKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgm
ZGVzdGluYXRpb25GaWxlSGFuZGxlLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBkZXN0aW5hdGlv
biA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGFDb25zdW1lcihjb25z
dW1lci5nZXQoKSwgZGVzdGluYXRpb25VVEkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMSwgbnVs
bHB0cikpOworCisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2VGcm9tU291cmNlKGRlc3Rp
bmF0aW9uLmdldCgpLCBzb3VyY2UuZ2V0KCksIDAsIG51bGxwdHIpOworCisgICAgaWYgKCFDR0lt
YWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoSW1hZ2VzLCAidHJhbnNjb2RlSW1hZ2U6IEltYWdlIHRyYW5zY29kaW5n
IGZhaWxzOiAlcyAlc1xuIiwgcGF0aC51dGY4KCkuZGF0YSgpLCBkZXN0aW5hdGlvblVUSS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGRlc3RpbmF0aW9uRmls
ZUhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb25QYXRo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZGVzdGluYXRpb25GaWxlSGFuZGxlKTsKKyAgICByZXR1cm4gZGVzdGluYXRp
b25QYXRoOworfQorCitWZWN0b3I8U3RyaW5nPiBmaW5kSW1hZ2VzRm9yVHJhbnNjb2RpbmcoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1J
TUVUeXBlcykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGluZ1BhdGhzOworICAgIHRy
YW5zY29kaW5nUGF0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwYXRocy5zaXplKCkpOworCisg
ICAgYm9vbCBuZWVkc1RyYW5zY29kaW5nID0gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIHBhdGgg
OiBwYXRocykgeworICAgICAgICAvLyBBcHBlbmQgYSBwYXRoIG9mIHRoZSBpbWFnZSB3aGljaCBu
ZWVkcyB0cmFuc2NvZGluZy4gT3RoZXJ3aXNlIGFwcGVuZCBhIG51bGwgc3RyaW5nLgorICAgICAg
ICBpZiAoIWFsbG93ZWRNSU1FVHlwZXMuY29udGFpbnMoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JQYXRoKHBhdGgpKSkgeworICAgICAgICAgICAgdHJhbnNjb2RpbmdQYXRo
cy51bmNoZWNrZWRBcHBlbmQocGF0aCk7CisgICAgICAgICAgICBuZWVkc1RyYW5zY29kaW5nID0g
dHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0cmFuc2NvZGluZ1BhdGhzLnVuY2hl
Y2tlZEFwcGVuZChudWxsU3RyaW5nKCkpOworICAgIH0KKworICAgIC8vIElmIG5vbmUgb2YgdGhl
IGZpbGVzIG5lZWRzIGltYWdlIHRyYW5zY29kaW5nLCByZXR1cm4gYW4gZW1wdHkgVmVjdG9yLgor
ICAgIHJldHVybiBuZWVkc1RyYW5zY29kaW5nID8gdHJhbnNjb2RpbmdQYXRocyA6IFZlY3RvcjxT
dHJpbmc+KCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHRyYW5zY29kZUltYWdlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25FeHRlbnNpb24pCit7CisgICAgQVNTRVJUKCFkZXN0aW5hdGlvblVU
SS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFkZXN0aW5hdGlvbkV4dGVuc2lvbi5pc051bGwoKSk7
CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gdHJhbnNjb2RlZFBhdGhzOworICAgIHRyYW5zY29k
ZWRQYXRocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhdGhzLnNpemUoKSk7CisKKyAgICBmb3Ig
KGF1dG8mIHBhdGggOiBwYXRocykgeworICAgICAgICAvLyBBcHBlbmQgdGhlIHRyYW5zY29kZWQg
cGF0aCBpZiB0aGUgaW1hZ2UgbmVlZHMgdHJhbnNjb2RpbmcuIE90aGVyd2lzZSBhcHBlbmQgYSBu
dWxsIHN0cmluZy4KKyAgICAgICAgaWYgKCFwYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgdHJh
bnNjb2RlZFBhdGhzLnVuY2hlY2tlZEFwcGVuZCh0cmFuc2NvZGVJbWFnZShwYXRoLCBkZXN0aW5h
dGlvblVUSSwgZGVzdGluYXRpb25FeHRlbnNpb24pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdHJhbnNjb2RlZFBhdGhzLnVuY2hlY2tlZEFwcGVuZChudWxsU3RyaW5nKCkpOworICAgIH0K
KworICAgIHJldHVybiB0cmFuc2NvZGVkUGF0aHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4
IDVjNGMzNjIwMGRjYTZhZDVkZDBlNGRmZjc2MjE5OWY5Y2RjYmM0MGMuLjczMGRhNjQ4ZjJiMmZl
OWU3ODRmZDA0MDUyZTE5MGYwZDBiZjIxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENH
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMDYsMTIgKzEwNiwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291
cmNlKQogewotICAgIHBhaW50SW1hZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbWFrZUNH
SW1hZ2VDb3B5KCkuZ2V0KCksIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOworICAgIGRyYXdOYXRp
dmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwgMSwgZGVzdGluYXRpb24sIHNvdXJj
ZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBwYWludEltYWdlKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIG1ha2VDR0ltYWdlQ29weSgpLmdldCgpLCBzY2FsZUZhY3Rvciwg
ZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgZHJhd05hdGl2ZUltYWdlKG1ha2VDR0ltYWdlQ29w
eSgpLCBjb250ZXh0LCBzY2FsZUZhY3RvciwgZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYWI2MmE5NDA0OTIxODdkZjU4ZmI2MTUyMzNlMjIwNGMw
NTQ3MGRlNi4uYzAzMGZhY2ZjODI4MzJjM2ZhNzZkMGZhZGZlODE5NjU2M2Q1MjhjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNjUsNyArNjUsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKIAotUGxhdGZv
cm0vY2cvQ0dVdGlsaXRpZXMuY3BwCitQbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAog
CiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lm
aWVyQ29jb2EuY3BwCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHAKaW5kZXggYWZhZjZlNDhiYzM2YTk1Nzcy
YzEzZTU3YzJiMmE4MmQxOGRkMzQ3NC4uZmEwNjMyMDYxOGE0NmU5MWQ4MjdkNTA2NzBjMjA1YzE3
MTc2YjNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCkBAIC01OCw2ICs1OCwxMSBAQCBXS0FycmF5
UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBY2NlcHRlZEZpbGVFeHRlbnNpb25zKFdLT3Bl
blBhbmVsUGFyYW1ldGVycwogICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhcmFtZXRlcnNSZWYp
LT5hY2NlcHRGaWxlRXh0ZW5zaW9ucygpLmxlYWtSZWYoKSk7CiB9CiAKK1dLQXJyYXlSZWYgV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMoV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUmVmIHBhcmFtZXRlcnNSZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwocGFyYW1l
dGVyc1JlZiktPmFsbG93ZWRNSU1FVHlwZXMoKS5sZWFrUmVmKCkpOworfQorCiAvLyBEZXByZWNh
dGVkLgogV0tTdHJpbmdSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUNhcHR1cmUoV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaAppbmRleCAwNTlmN2NmYzA2MWVm
YzRiZWVmZjU5MTMyZTBlNmY0OWQ5MGZmYzY4Li43ZDEzMjk4NGJhNzU2NzZmNTY0Y2FjZjA0Njlk
ZDE5ZTY4MzRmNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaApAQCAtNDUsNiArNDUsOCBAQCBXS19FWFBP
UlQgYm9vbCBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKFdLT3Bl
blBhbmVsUGFyYW1ldGVycwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzQ29weUFjY2VwdGVkTUlNRVR5cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0
ZXJzKTsKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBY2Nl
cHRlZEZpbGVFeHRlbnNpb25zKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsK
IAorV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRN
SU1FVHlwZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMpOworCiAvKiBERVBS
RUNBVEVEIC0gUGxlYXNlIHVzZSBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRDYXB0dXJlRW5hYmxl
ZCgpIGluc3RlYWQuICovCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzQ29weUNhcHR1cmUoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwCmluZGV4IDJiMzk0ZmM4YmRhNzQyMTdjMTczNTEyNzYzNjU2NTk4
YTRiODQyYjkuLmI2MTE4ODE3MTg4NTJiNTAzNTk4NGYzNTA3MDJmMTc5MWEyZWVlY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lckNob29zZU1lZGlhRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBs
aXN0CiB9CiAjZW5kaWYKIAotdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tBcnJheVJlZiBm
aWxlVVJMc1JlZikKK3ZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVS
THNSZWYsIFdLQXJyYXlSZWYgYWxsb3dlZE1pbWVUeXBlc1JlZikKIHsKLSAgICB0b0ltcGwobGlz
dGVuZXJSZWYpLT5jaG9vc2VGaWxlcyhmaWxlUGF0aHNGcm9tRmlsZVVSTHMoKnRvSW1wbChmaWxl
VVJMc1JlZikpKTsKKyAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5jaG9vc2VGaWxlcyhmaWxlUGF0
aHNGcm9tRmlsZVVSTHMoKnRvSW1wbChmaWxlVVJMc1JlZikpLCB0b0ltcGwoYWxsb3dlZE1pbWVU
eXBlc1JlZiktPnRvU3RyaW5nVmVjdG9yKCkpOwogfQogCiB2b2lkIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaAppbmRleCA2OTk5NzZmYWEyYWRkZTQ3OGNlZjZjNGUxYjBmZWY4NDUw
OThhZWE4Li5hYWJiZTE5ZDcyMmVmNjQxNDI2Y2MxNTkxYTM1NmJhMDczNDRkN2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5oCkBAIC0zNSw3ICszNSw3IEBAIGV4dGVybiAiQyIgewogV0tfRVhQT1JUIFdL
VHlwZUlEIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJHZXRUeXBlSUQodm9pZCk7CiAKIFdLX0VY
UE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VNZWRpYUZpbGVzKFdLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVSTHNS
ZWYsIFdLU3RyaW5nUmVmIGRpc3BsYXlTdHJpbmcsIFdLRGF0YVJlZiBpY29uSW1hZ2VEYXRhUmVm
KTsKLVdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS0FycmF5UmVmIGZpbGVVUkxz
KTsKK1dLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS0FycmF5UmVmIGZpbGVVUkxz
LCBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXNSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxp
c3RlbmVyKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA4Njc3MGJlMzgwMGM1YWViYjI4MTAyMmU2YjBjYWFlN2M2ZGIx
YjQwLi5jMjE0YjcyNzZhM2MwODM1NzI4YmIyYzgyZTAzYjFiYTFkYjUxMDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIxNSw2ICsyMTUsMTEgQEAKICNp
bmNsdWRlIDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJ
VXRpbGl0aWVzLmg+CisjZW5kaWYKKwogI2lmIEhBVkUoVE9VQ0hfQkFSKQogI2luY2x1ZGUgIlRv
dWNoQmFyTWVudURhdGEuaCIKICNpbmNsdWRlICJUb3VjaEJhck1lbnVJdGVtRGF0YS5oIgpAQCAt
NDg4LDYgKzQ5Myw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX2lnbm9yZXNB
cHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5pZ25vcmVzQXBwQm91bmREb21haW5zKCkp
CiAgICAgLCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0
aW9uLT5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkpCiAjZW5kaWYKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgLCBtX3RyYW5zY29kaW5nUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuSW1hZ2VUcmFuc2NvZGluZyIpKQorI2VuZGlmCiB7CiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CiAKQEAgLTY2Njks
MTcgKzY2NzcsNTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QKIH0KICNlbmRpZgogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitib29sIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlN
RVR5cGVzKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIHRyYW5zY29kaW5nTUlNRVR5
cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRJbWFnZU1JTUVUeXBlRm9y
RW5jb2RpbmcoYWxsb3dlZE1JTUVUeXBlcywgeyB9KTsKKyAgICBpZiAodHJhbnNjb2RpbmdNSU1F
VHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byB0cmFuc2Nv
ZGluZ1VSTHMgPSBmaW5kSW1hZ2VzRm9yVHJhbnNjb2RpbmcoZmlsZVVSTHMsIGFsbG93ZWRNSU1F
VHlwZXMpOworICAgIGlmICh0cmFuc2NvZGluZ1VSTHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvIHRyYW5zY29kaW5nVVRJID0gV2ViQ29yZTo6VVRJRnJvbU1J
TUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOworICAgIGF1dG8gdHJhbnNjb2RpbmdFeHRlbnNp
b24gPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1F
VHlwZSh0cmFuc2NvZGluZ01JTUVUeXBlKTsKKworICAgIG1fdHJhbnNjb2RpbmdRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZmlsZVVSTHMgPSBm
aWxlVVJMcy5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdVUkxzID0gV1RGTW92ZSh0cmFuc2Nv
ZGluZ1VSTHMpLCB0cmFuc2NvZGluZ1VUSSA9IFdURk1vdmUodHJhbnNjb2RpbmdVVEkpLCB0cmFu
c2NvZGluZ0V4dGVuc2lvbiA9IFdURk1vdmUodHJhbnNjb2RpbmdFeHRlbnNpb24pXSgpIHsKKyAg
ICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICAgICAgYXV0byB0cmFuc2Nv
ZGVkVVJMcyA9IHRyYW5zY29kZUltYWdlcyh0cmFuc2NvZGluZ1VSTHMsIHRyYW5zY29kaW5nVVRJ
LCB0cmFuc2NvZGluZ0V4dGVuc2lvbik7CisgICAgICAgIEFTU0VSVCh0cmFuc2NvZGluZ1VSTHMu
c2l6ZSgpID09IHRyYW5zY29kZWRVUkxzLnNpemUoKSk7CisKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFt0aGlzLCBmaWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xhdGVkQ29weSgpLCB0
cmFuc2NvZGVkVVJMcyA9IFdURk1vdmUodHJhbnNjb2RlZFVSTHMpXSgpIHsKKyNpZiBFTkFCTEUo
U0FOREJPWF9FWFRFTlNJT05TKQorICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc2FuZGJveEV4
dGVuc2lvbkZpbGVzOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBmaWxl
VVJMcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVu
c2lvbkZpbGVzLmFwcGVuZCghdHJhbnNjb2RlZFVSTHNbaV0uaXNOdWxsKCkgPyB0cmFuc2NvZGVk
VVJMc1tpXSA6IGZpbGVVUkxzW2ldKTsKKyAgICAgICAgICAgIGF1dG8gc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxl
cygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgc2FuZGJveEV4
dGVuc2lvbkZpbGVzKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVu
ZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlcykpKTsKKyNlbmRpZgorICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMsIHRyYW5zY29kZWRVUkxzKSk7CisgICAg
ICAgIH0pOworICAgIH0pOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShmaWxlVVJMcyk7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWRNSU1FVHlwZXMpOworICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghZGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhmaWxlVVJMcywgYWxsb3dlZE1JTUVUeXBlcykp
IHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgIGF1dG8gc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JG
aWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCJfcywgZmlsZVVS
THMpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zy
b21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsKKyAgICAgICAg
YXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJl
YWRPbmx5SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsIl9zLCBmaWxlVVJMcyk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4
dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlcykpKTsKICNlbmRpZgotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMsIHsgfSkpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcywgeyB9KSk7
CisgICAgfQogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwog
ICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3YTI2ZDE3MGZhNTA1MmZkMjNiYTZlNzEwMThiZTg1
ZTUxYzc4Yzg1Li5jOWMzMGQ1MzRjYWY1ZTI1NjQxMDE0NzFlYjAwNzQ0MDM0MTEwM2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTkyNCw2ICsxOTI0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJD
b3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKICAg
ICB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0Rh
dGEmJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOworICAgIGJvb2wgZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVz
KTsKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHBy
aW50RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGFEZWxheWVkUmVwbHkmJik7CkBAIC0yODQxLDYgKzI4NDIsOSBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VyU2NyaXB0c05vdGlmaWVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24geyBm
YWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3RyYW5zY29k
aW5nUXVldWU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGM5NDhhY2Mz
MWM1OTJjZjJkYTc5YmNkM2Q5MTEwN2E5MGJiOTQ4Mi4uNTNkN2Y4NTRmMmNhMThkNDM5NGQzMTYz
MTE3ZTg3ZjEyMTY0YjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yOTAsNyArMjkwLDcgQEAKIAkJMUE5RkJBOEQxM0ZGMDRFNjAw
REVFRDY3IC8qIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RkJBOEMxM0ZGMDRFNjAwREVFRDY3IC8q
IFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oICovOyB9OwogCQkxQUExMzIxMjE5MUQ1OTI0
MDA5QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUExMzIxMTE5MUQ1OTI0MDA5QzE0ODkg
LyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBMjBENTExOEFENTBFMDAwNUQxRUQ0IC8qIFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFBMjBENTAxOEFENTBFMDAwNUQxRUQ0IC8qIFdLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMkU1MUIxMkU0
QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggKi87IH07CisJCTFBQTJFNTFEMTJFNEMwNUUw
MEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0
aWVzLmggKi87IH07CiAJCTFBQTJFNTY3MThENzc1MDgwMDM4MTRCRCAvKiBXS1dlYlByb2Nlc3NC
dW5kbGVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUEyRTU2NTE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFy
YW1ldGVycy5oICovOyB9OwogCQkxQUEzRDc1QzE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5
ZXJUcmVlSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBM0Q3NUExNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCAqLzsg
fTsKIAkJMUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE0MTdDOTEyQzAwQ0NBMDAy
QkU2N0IgLyogVGV4dENoZWNrZXIuaCAqLzsgfTsKQEAgLTI1MDksOCArMjUwOSw4IEBACiAJCTFB
QTFDQzVDMTAwRkExQTEwMDc4REVCQyAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gUXVhcnR6Q29yZS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+Ijsg
fTsKIAkJMUFBMUNEMDYxMDBGQTFCQTAwNzhERUJDIC8qIENhcmJvbi5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgbmFtZSA9IENhcmJvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9Owog
CQkxQUEyMEQ1MDE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUEyRTUxQjEyRTRDMDVF
MDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0dVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFBMkU1MUMx
MkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENHVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxp
dGllc0NHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlVXRp
bGl0aWVzQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUEyRTU2NDE4RDc3
NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVycy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRl
cnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTJFNTY1MThENzc1MDgwMDM4
MTRCRCAvKiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBM0Q3NTkxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxh
eWVyVHJlZUhvc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk0
OCw4ICs1OTQ4LDcgQEAKIAkJMUFBMkU1MUExMkU0QzA1NjAwQkM0OTY2IC8qIGNnICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkxQUEyRTUxQzEyRTRDMDVF
MDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuY3BwICovLAotCQkJCTFBQTJFNTFCMTJFNEMwNUUwMEJD
NDk2NiAvKiBDR1V0aWxpdGllcy5oICovLAorCQkJCTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2NiAv
KiBJbWFnZVV0aWxpdGllc0NHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2c7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTU3NSw2ICs5NTc0LDcgQEAKIAkJCQk1MUIxNUE3RDEz
ODQzOUIyMDAzMjFBRDggLyogdW5peCAqLywKIAkJCQlFQ0E2ODBEMzFFNjkwNEI1MDA3MzFEMjAg
LyogRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCAqLywKIAkJCQlFQ0JGQzFEQjFFNkE0RDY2
MDAwMzAwQzcgLyogRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oICovLAorCQkJCTFBQTJFNTFC
MTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllcy5oICovLAogCQkJCTUxQTdGMkY0MTI1
QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5nLmNwcCAqLywKIAkJCQk1MUE3RjJGMjEyNUJGODIwMDA4
QUVCMUQgLyogTG9nZ2luZy5oICovLAogCQkJCTBGRENEN0Y2MUQ0N0U5MkEwMDlGMDhCQyAvKiBM
b2dJbml0aWFsaXphdGlvbi5oICovLApAQCAtMTA3NTQsNyArMTA3NTQsNiBAQAogCQkJCTQxODk3
RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFREExRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQTJFNTFEMTJF
NEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCNEI0
NjAyMEI1MDRBQzAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUEND
b25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RkUwQTNCMjQ2MzJCNjAwMDI2MzFFMSAv
KiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDgyNzM0NzI0NTI4RjYwMDBBOTU0
OTMgLyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDgzMyw2ICsxMDgzMiw3IEBA
CiAJCQkJNTFDMEM5NzQxRERENzYwMDAwMzJDQUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFn
ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAv
KiBJbWFnZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRUM2OUUxODcyMDkyMTAw
Qjk1MUYwIC8qIEltcG9ydGFuY2VBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjA0
RUUzMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFRTdEQzUxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1OTFlMTk2YWI3OTY2OGJjYWI0YmVhODlhNDYxOWZlZjk1YmJkZmQ2Li5mYmM1OGJh
MjAwZWU0MDBkOWQxZjFmYzFhYzg1NmY5MTE4YzhiN2M1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMDkg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxk
IGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6cnVuT3BlblBhbmVsKToKKwogMjAyMC0wNy0wOCAgU3RlcGhhbiBTemFibyAgPHN0ZXBo
YW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIEZpeCBlcnJvcnMgZnJvbSBj
YWxscyB0byB1bmFtZSB3aGVuIG5vdCBhdmFpbGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTNiZTFlOGY5NzA1NGIzOWEwNWQxNzA1NzY0YWI0ODRi
NGJlMzhiZi4uNTgyNjFhMzYxZGFjYjk0MTIyYTA4OTk3MjE1MzJmNThhNDYxNDE1YiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIyMywxMiArMjIzLDE0
IEBAIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgfQogI2VuZGlmCiAKKyAgICBXS0FycmF5
UmVmIGFsbG93ZWRNaW1lVHlwZXMgPSBXS09wZW5QYW5lbFBhcmFtZXRlcnNDb3B5QWxsb3dlZE1J
TUVUeXBlcyhwYXJhbWV0ZXJzKTsKKwogICAgIGlmIChXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRB
bGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpKSB7Ci0gICAgICAgIFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwgZmlsZVVSTHMpOworICAg
ICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMocmVzdWx0TGlzdGVuZXJS
ZWYsIGZpbGVVUkxzLCBhbGxvd2VkTWltZVR5cGVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5l
clJlZiwgYWRvcHRXSyhXS0FycmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEpKS5nZXQoKSk7CisgICAg
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3VsdExpc3RlbmVyUmVmLCBh
ZG9wdFdLKFdLQXJyYXlDcmVhdGUoJmZpcnN0SXRlbSwgMSkpLmdldCgpLCBhbGxvd2VkTWltZVR5
cGVzKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTJlYzhkZjZlMDA3NjdhZTJmZjI5NDQ0
YWIxNmQ4ZWY0YzlkZjQzZC4uMDE5ZmJkMGYyZTkzNmM4ODg2NjA4YjlkMjEzY2UwZTMyZTA5ZjJk
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA3LTA5ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogQSBIRUlGIGltYWdl
LCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVuUGFuZWwsIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4g
YWNjZXB0ZWQgTUlNRSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjU4NDY0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSB0aGUg
SEVJRiBpbWFnZSBpcyBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlIHdoZW4gaXQg
aXMgCisgICAgICAgIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCBhbmQgdGhlICdhY2NlcHQn
IGF0dHJpYnV0ZSBvZiB0aGUgPGlucHV0PgorICAgICAgICBkb2VzIGFsbG93IHRoZSBIRUlGIE1J
TUUgdHlwZS4KKworICAgICAgICBObyBuZWVkIHRvIHRlc3QgdGhpcyBmdW5jdGlvbmFsaXR5IG9u
IFdLMSBzaW5jZSB0aGUgaW1hZ2UgdHJhbnNjb2RpbmcgCisgICAgICAgIHNob3VsZCBoYXBwZW4g
aW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1w
YW5lbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFu
ZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmll
cy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFnZXMvZ3JlZW4tNDAweDQw
MC5oZWljOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMjAtMDctMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFJlbW92ZSBzb21lIG1lbnRpb25zIG9mIG5vbi1leGlzdGFudCBmaWxl
cyBpbiBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzM2FkYTU1NWE5Mzg1MGFj
NDgyYTVjZDk4ZGEzOTc0NWIxMjYyNjU1Li42MTliYzRlNDIyYjJlZTE0YjQ3OGI5MmI4OTdjMWMx
OWM1NmNiODRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg5OCw2ICs4OTgsOCBAQCBodHRwL3dw
dC9jcm9zcy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5LyBbIFNraXAgXQogCiAjIHRlc3RSdW5uZXIu
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKSBvbmx5IHdvcmtzIGluIFdlYktpdDIKIGZhc3QvZmls
ZXMvYmxvYi1uZXR3b3JrLXByb2Nlc3MtY3Jhc2guaHRtbCBbIFNraXAgXQorZmFzdC9mb3Jtcy9m
aWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwgWyBTa2lwIF0K
K2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5l
bC5odG1sIFsgU2tpcCBdCiAKICMgVGhpcyB0ZXN0IGlzIGN1cnJlbnRseSBvbmx5IHJlbGV2YW50
IG9uIG1hYy13azIKIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBkYXRlLW9uLWRpc3BsYXkt
Y29uZmlndXJhdGlvbi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdl
LW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTVlYTg2
MDhmMDgyMGVkMTQ2Y2YwODg1NmU2Njg0OTg0ZGIwMDFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1v
cGVuLXBhbmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitPUEVOIEZJTEUgUEFORUwK
K1Rlc3RzIGEgSEVJQyBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNj
ZXB0cyBIRUlDLCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYW55IHN1cHBvcnRlZCBNSU1FIHR5
cGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZpbGVMaXN0Lmxlbmd0
aCBpcyAxCitQQVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvaGVpYyIKK1BBU1MgZmlsZS5zaXplIGlz
IG5vbi16ZXJvLgorSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4KK1BBU1MgaW1nLndpZHRoIGlz
IG5vdCA0MDAKK1BBU1MgaW1nLmhlaWdodCBpcyBub3QgNDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFu
ZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1u
by10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ODRkNTU5NDM0ZmE3OTQy
N2U2ZmRkNmU4MDM0MzAyNDUzNWFjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwu
aHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0
PSJJTUFHRS9IRUlDIiBvbmNoYW5nZT0iY2hhbmdlZChldmVudCkiPjwvaW5wdXQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIGEgSEVJQyBpbWFnZSwgY2hvc2VuIHZp
YSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBIRUlDLCB3aWxsIG5vdCBiZSBjb252ZXJ0
ZWQgdG8gYW55IHN1cHBvcnRlZCBNSU1FIHR5cGUuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy9ncmVl
bi00MDB4NDAwLmhlaWMnXSk7CisKKyAgICAgICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgICAgICAgICAgVUlIZWxwZXIu
YWN0aXZhdGVBdChpbnB1dEVsZW1lbnQub2Zmc2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZzZXRX
aWR0aCAvIDIsCisgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlucHV0
RWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoYW5nZWQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZlbnQu
dGFyZ2V0LmZpbGVzOworICAgICAgICAgICAgc2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIsICIx
Iik7CisKKyAgICAgICAgICAgIGZpbGUgPSBmaWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZmlsZS50eXBlIiwgImltYWdlL2hlaWMiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlTm9uWmVybygiZmlsZS5zaXplIik7CisKKyAgICAgICAgICAgIGltZyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpbWcpOworCisgICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIo
KTsKKyAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAg
aW1nLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIkltYWdlIHdh
cyBsb2FkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcud2lkdGgiLCAi
NDAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcuaGVpZ2h0IiwgIjQwMCIp
OworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4geworICAgICAgICAgICAgICAg
ICAgICBkZWJ1ZygiSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkTm90QmUoImltZy53aWR0aCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkTm90QmUoImltZy5oZWlnaHQiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgaW1n
LnNyYyA9IHJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgcmVhZGVy
LnJlYWRBc0RhdGFVUkwoZmlsZSk7CisgICAgICAgIH0KKyAgICAgICAgcnVuVGVzdCgpOworICAg
IDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10
cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTExNDYwYmFiODhj
M2ZjNjIyZjZmYjNhMTYwNjc5MjY3MzQzNGFjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5l
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorT1BFTiBGSUxFIFBBTkVMCitUZXN0cyBh
IEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdoaWNoIGFjY2VwdHMgUE5H
LCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIFBORyBpbWFnZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZmlsZUxpc3QubGVuZ3RoIGlzIDEKK1BBU1MgZmlsZS50eXBlIGlz
ICJpbWFnZS9wbmciCitQQVNTIGZpbGUuc2l6ZSBpcyBub24temVyby4KK0ltYWdlIHdhcyBsb2Fk
ZWQuCitQQVNTIGltZy53aWR0aCBpcyA0MDAKK1BBU1MgaW1nLmhlaWdodCBpcyA0MDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2Nv
ZGUtb3Blbi1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMt
YXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk1YTI5YTcz
YjgzNWE1MTJiMzYyYWFiMzIzZmZmOGI5YmJlNzM2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1w
YW5lbC5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBh
Y2NlcHQ9Ii5wbmciIG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9pbnB1dD4KKyAgICA8c2Ny
aXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgYSBIRUlDIGltYWdlLCBjaG9zZW4gdmlh
IHRoZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywgd2lsbCBiZSBjb252ZXJ0ZWQgdG8g
YSBQTkcgaW1hZ2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dE9wZW5QYW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMnXSk7
CisKKyAgICAgICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdpbnB1dCcpWzBdOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChpbnB1dEVs
ZW1lbnQub2Zmc2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZzZXRXaWR0aCAvIDIsCisgICAgICAg
ICAgICAgICAgaW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlucHV0RWxlbWVudC5vZmZzZXRIZWln
aHQgLyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoYW5nZWQoZXZlbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzOworICAg
ICAgICAgICAgc2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIsICIxIik7CisKKyAgICAgICAgICAg
IGZpbGUgPSBmaWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZmlsZS50eXBlIiwgImltYWdlL3BuZyIpOworICAgICAgICAgICAgc2hvdWxkQmVOb25aZXJvKCJm
aWxlLnNpemUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIik7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7CisKKyAg
ICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgICAgICAgICAgcmVh
ZGVyLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpbWcub25sb2FkID0gKCkgPT4g
eworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2Ugd2FzIGxvYWRlZC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoImltZy53aWR0aCIsICI0MDAiKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImltZy5oZWlnaHQiLCAiNDAwIik7CisgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
aW1nLm9uZXJyb3IgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJJbWFnZSBj
b3VsZCBub3QgYmUgbG9hZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgi
aW1nLndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgiaW1n
LmhlaWdodCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcuc3JjID0gcmVhZGVyLnJlc3Vs
dDsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxl
KTsKKyAgICAgICAgfQorICAgICAgICBydW5UZXN0KCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmll
cy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAw
LmhlaWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2NmODU5ZDhkYTFkZjExNjI1NGRhNjM5MzU1OWU1OWU5NjljYTdi
NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzEwCnpjbVlqT09LVEhSNmgzRVc4ZERsbFEhM1Qh
QjRgalBoMSEqX1kmNUFsI2Zae0h3WDF9ZzNBdmF0KlhnTE8yKH5FSgp6ZyRyS2A3aFN7JERFT2NZ
SHpHPVBGQUN+IXNQMF8yPSl3fWVHbjJGKT1IdlUkPil5SE41WWhIKElIemwjYXRKMnUKenRMaThi
endvYFZBfkQkUm5wK1FJTnUtcSVjSnYxNFR5PyQqWjxpWiohZVJgaEUoWX4lVGNAPU9lZHN1SVB7
a2NZCnoxfHIrd2Nwe3skY0ZEbVhZekEzTSMlRVBAQFN4aGZBPz4mYDR3NCsqXjt6amFxd1RmUVA2
SXJMYXwrQzUkWXA/Tgp6Pl5KPmdVdDEmVUhKailkJGE5S1lFaCNYaSFqeH1weGNkPXVkeWE2X2BD
cD0keHxKQVRkWWhaREZCfnc4IzhjeGoKej5NfSlNc3F+JWJ8Q1B6KT83cmdOcCotJkNTMk5sSiF9
dn1OPlErR2A4cnhRX1d8Z0dPV0hKZEZQfT1YejhTayhiCnpqTyFNeyE+Wm5oUiNLRCEkdFZHMTNm
emJXMjlMa055Q0U2aHQrWkZkY215VGxTKFFwTzFUUlN6NF5vJVowZiVfIQp6aENhJnM8azUmQHpL
ZT9GVWEyXz1oI2QjU2tEMmU/cSVIN3YwQSt2PFBabiQmVG5Nfk09KCpYO0R5KElYKmAtc0cKekpo
enUkRXElRTF7WHphP19TJDt5eVZscURVO2EjOG90YH1YPkZtcXEkbjZvYiZMbj0wbiZ+STImbkQo
bUU5cXNkCmklJW1VbF9pNGNATjZZQVd4RUx7aHZGbEFvVyVqcH5HMklxRCY7SjFfUihOVXYKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA5ZjA1ZTQ2ZjdlYWIyNjE0YjE4MzIxOGM4MjEzZjhjYWIxMzAx
OGQ2Li5mZjU5NTMwYjdmMmFmY2U3MWNhYzBmODgwYjhlYzViMDg4ZWYxOTAxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04NSw2ICs4NSw5
IEBAIGZhc3QvZXZlbnRzL2luYWN0aXZlLXdpbmRvdy1uby1tb3VzZS1ldmVudC5odG1sIFsgUGFz
cyBdCiAKIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWluLXR3by1wYWdl
cy5odG1sIFsgUGFzcyBdCiAKK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFu
c2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1h
cGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJl
Y3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404084</attachid>
            <date>2020-07-11 20:06:37 -0700</date>
            <delta_ts>2020-07-12 14:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213347-20200711200636.patch</filename>
            <type>text/plain</type>
            <size>56547</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA3MGFkMTgyYjliNzBkMTU2MjhkY2Yw
MzkwMmM2YTIxZDkzOTVjMzkuLjdlNTFlYzNiOWY2MGUxZjY3YTBmMTI5YjAxMTFmNmI2NGY1YTUz
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2Us
IHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBh
Y2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgYSBzdWZm
aXggdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRlbXBvcmFyeSBmaWxlIG5hbWUuIFRoZSBnb2FsIGlz
IHRvCisgICAgICAgIG1ha2UgaXQgcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbWFnZSBm
aWxlcyB3aXRoIHZhbGlkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5o
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHd0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFy
eUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHd0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpv
cGVuVGVtcG9yYXJ5RmlsZSk6CisKIDIwMjAtMDctMDggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBwb3NzaWJsZSB0byBlc3Rh
Ymxpc2ggZGlyZWN0IFhQQyBjb25uZWN0aW9ucyBiZXR3ZWVuIFdlYktpdCBwcm9jZXNzZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYTVlZmJhYjExMzI5NjhjYmFkZTRhY2RiMDMyNmU4MDUwZDJjMmQ5Li4wYWJh
MjE4NjM5MWI4YzQwYjc2Mjk4NDc5ZTAyNmVkMGU5NzBhMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20g
dGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphbGxvd2VkTUlNRVR5cGVzKToKKyAgICAgICAg
TWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBsb3dlcmNhc2UgTUlNRSB0eXBlcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToK
KwogMjAyMC0wNy0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
UGFydCAzIG9mIFNpbXBsZUNvbG9yIGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkg
dGhlIHNhbWUgLSBsZXQncyBjb252ZXJnZSB0aGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNDczMjBhZDI1MTcy
MzgxNWI2MGZjZTAwMjMzNTcwYWViZTIwYzUuLmUyM2VlZDBjOWVmYThmYzgxODE5OTQyZGRmOGQ5
OTU3OTUzZTNlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAtMDctMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1Nd
OiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCwgc2hvdWxkIGJlIGNv
bnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgZ2l2ZW4gdGhlIGxpc3Qgb2YgdGhlIHNlbGVjdGVkIGZp
bGUgYW5kIHRoZSBhbGxvd2VkCisgICAgICAgIE1JTUUgdHlwZXMuIE9ubHkgc2VsZWN0ZWQgZmls
ZXMgd2hvc2UgTUlNRSB0eXBlcyBkbyBub3QgZXhpc3QgaW4gdGhlIGFsbG93ZWQKKyAgICAgICAg
TUlNRSB0eXBlcyB3aWxsIGJlIHRyYW5zY29kZWQuIFJpZ2h0IG5vdywgdGhpcyBvbmx5IHdpbGwg
YXBwbHkgdG8gdGhlIEhFSUYKKyAgICAgICAgaW1hZ2VzIG9uIG1hY09TLgorCisgICAgICAgICog
UGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY2cvQ0dVdGlsaXRpZXMuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFBsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6dHJhbnNjb2RlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpmaW5kSW1hZ2VzRm9yVHJhbnNj
b2RpbmcpOgorICAgICAgICAoV2ViS2l0Ojp0cmFuc2NvZGVJbWFnZXMpOgorICAgICAgICBJbXBs
ZW1lbnQgYSBmdW5jdGlvbiB0aGF0IHRyYW5zY29kZXMgaW1hZ2VzIGFtb25nIGEgc2V0IG9mIGZp
bGVzIGdpdmVuCisgICAgICAgIHRoZSBhbGxvd2VkTUlNRVR5cGVzLiBUaGUgZGVzdGluYXRpb24g
TUlNRSB0eXBlIG9mIHRoZXNlIGltYWdlcyBpcyB0aGUKKyAgICAgICAgZmlyc3QgTUlNRSB0eXBl
IGluIHRoZSBhbGxvd2VkTUlNRVR5cGVzIHdoaWNoIENHIHN1cHBvcnRzIGVuY29kaW5nIHRvLgor
CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisgICAgICAgIENhbGwgZHJhd05hdGl2ZUlt
YWdlKCkgYWZ0ZXIgcmVuYW1pbmcgcGFpbnRJbWFnZSgpIHRvIGRyYXdOYXRpdmVJbWFnZSgpLgor
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwOgorICAgICAgICAoV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyQ2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmg6CisgICAgICAgIFRyYW5zZmVyIHRoZSBsaXN0IG9mIHRoZSBhbGxv
d2VkIE1JTUUgdHlwZXMgZnJvbSB0aGUgT3BlblBhbmVsIHRvIHRoZQorICAgICAgICBmaWxlIGNo
b29zZXIgbGlzdGVuZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV90cmFuc2NvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhJbWFnZVRyYW5zY29k
aW5nKToKKyAgICAgICAgVHJhbnNjb2RlIHRoZSBpbWFnZXMgaW4gYSB3b3JrIHF1ZXVlIHNvIHRo
ZSBVSSBwcm9jZXNzIGlzIG5vdCBibG9ja2VkLiAKKyAgICAgICAgT25jZSB0aGUgdHJhbnNjb2Rp
bmcgZmluaXNoZXMsIHRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCB0byB0aGUgV2ViUGFnZS4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDctMDggIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGlu
ZyByMjY0MTMyIGFuZCByMjY0MTM5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDYwYjMyZTQ2ZmM0Mjkw
ODIzYTYyOWJkYTNlZDI3MmE4M2I2YWI0YTYuLmJmZTg0MTI5NmQzYzZkNTJhOGE4YWYxNTVlNmU4
ZWU4ZjkxMjAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciopOwogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7IH0KIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhl
ZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYp
OworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7
IH0pOwogV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxl
QWNjZXNzUGVybWlzc2lvbjo6QWxsLCBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSBmYWxzZSk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CiAv
LyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUg
ZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KaW5kZXggYWNlZGY1ZmRkMWIyZTc2ODI0ZmZhODlkNGRjZGY0MGFjMWIx
Yjg3ZC4uMWNjZTE3ZGM1OWUyMzNjNmE1ODAwMWUxYjZjOTA4ZTg0NWE3YzkwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcg
aG9tZURpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBOU0hvbWVEaXJlY3RvcnkoKTsKIH0KIAot
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIHBsYXRmb3JtRmlsZUhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBwbGF0Zm9ybUZpbGVIYW5k
bGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogewogICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKQEAgLTExMCwxMiArMTEwLDE2IEBAIFN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBwbGF0Zm9ybUZpbGVICiAgICAgICAgIHRlbXBvcmFyeUZpbGVQYXRoLmFwcGVuZCgnLycpOwog
CiAgICAgLy8gQXBwZW5kIHRoZSBmaWxlIG5hbWUuCi0gICAgQ1N0cmluZyBwcmVmaXhVdGY4ID0g
cHJlZml4LnV0ZjgoKTsKLSAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQocHJlZml4VXRmOC5k
YXRhKCksIHByZWZpeFV0ZjgubGVuZ3RoKCkpOworICAgIENTdHJpbmcgcHJlZml4VVRGOCA9IHBy
ZWZpeC51dGY4KCk7CisgICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKHByZWZpeFVURjguZGF0
YSgpLCBwcmVmaXhVVEY4Lmxlbmd0aCgpKTsKICAgICB0ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQo
IlhYWFhYWCIsIDYpOworICAgIAorICAgIC8vIEFwcGVuZCB0aGUgZmlsZSBuYW1lIHN1ZmZpeC4K
KyAgICBDU3RyaW5nIHN1ZmZpeFVURjggPSBzdWZmaXgudXRmOCgpOworICAgIHRlbXBvcmFyeUZp
bGVQYXRoLmFwcGVuZChzdWZmaXhVVEY4LmRhdGEoKSwgc3VmZml4VVRGOC5sZW5ndGgoKSk7CiAg
ICAgdGVtcG9yYXJ5RmlsZVBhdGguYXBwZW5kKCdcMCcpOwogCi0gICAgcGxhdGZvcm1GaWxlSGFu
ZGxlID0gbWtzdGVtcCh0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCkpOworICAgIHBsYXRmb3JtRmls
ZUhhbmRsZSA9IG1rc3RlbXBzKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSwgc3VmZml4VVRGOC5s
ZW5ndGgoKSk7CiAgICAgaWYgKHBsYXRmb3JtRmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggZTRhYjAwZmJkYWQ5ZmZiNzFiNTAyMmNjZWM0MWMxMGI1
Y2EwZjVkZi4uYmM2M2U4MWU0Njg1ZDgyZjRjZjhhMGEzMTNkZmM4OTM0MmYwNzJhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTMyNiw4ICszMjYsMTEgQEAgVmVj
dG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQor
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCiB7CisgICAgLy8gRklYTUU6
IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVkLCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1
c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9ubHkuCisgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1
ZmZpeC5pc0VtcHR5KCkpOworCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJk
dXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBh
dGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBudWxs
cHRyKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBjOWY1MDE0MzZhYmNjODA5NGU4NDE0ODBkMjFmZTM2YTQ3MWU4MWZmLi5h
OWJkYjJjMGVhZjI4MjZmOTdjOWVkNjU4OGI0ODMyYjg3ZDQwZWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ0Miw4ICs0NDIsMTEgQEAgYm9vbCBnZXRW
b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVt
cG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUsIGNvbnN0IFN0cmluZyYgc3VmZml4KQogeworICAgIC8vIEZJWE1FOiBTdWZmaXggaXMgbm90
IHN1cHBvcnRlZCwgYnV0IE9LIGZvciBub3cgc2luY2UgdGhlIGNvZGUgdXNpbmcgaXQgaXMgbWFj
T1MtcG9ydC1vbmx5LgorICAgIEFTU0VSVF9VTlVTRUQoc3VmZml4LCBzdWZmaXguaXNFbXB0eSgp
KTsKKwogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKICAgICBjb25zdCBjaGFyKiB0bXBEaXIg
PSBnZXRlbnYoIlRNUERJUiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmls
ZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5k
ZXggNjU5ZGZkNTI3MjdkYzllZjY5OWI3ZjkyNGQ1ZDJlNzJkODRlMGFlNy4uYTAzZjhhNDY0NGVk
YjkwNzgxZmU0MzlhZjZjMDM3OWU1YTEyYTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVt
V2luLmNwcApAQCAtNDA0LDggKzQwNCwxMSBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9y
YXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogICAg
IHJldHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBzdWZmaXgpCiB7CisgICAgLy8gRklYTUU6IFN1ZmZpeCBpcyBub3Qgc3VwcG9ydGVk
LCBidXQgT0sgZm9yIG5vdyBzaW5jZSB0aGUgY29kZSB1c2luZyBpdCBpcyBtYWNPUy1wb3J0LW9u
bHkuCisgICAgQVNTRVJUX1VOVVNFRChzdWZmaXgsIHN1ZmZpeC5pc0VtcHR5KCkpOworCiAgICAg
aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAKICAgICBTdHJpbmcgcHJvcG9zZWRQYXRo
ID0gZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2Vk
UGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApp
bmRleCA5ZTBlMTZkMWFlNDI1MDdkMTFhYjNmNDIwZWQxMmIxNDRjMWNiMTIxLi43ZGRmOTJkNDYy
ODE0M2MxY2FkYjlhODgwODc4ZTIyMjIyZGE1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtODE0LDEzICs4MTQsMTMgQEAgVmVjdG9yPFN0
cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6YWxsb3dlZE1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbWltZVR5cGUKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOwogCiAg
ICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IG1pbWVUeXBlcykKLSAgICAgICAgYWxsb3dlZE1JTUVU
eXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICAgICAgYWxsb3dlZE1JTUVU
eXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCkpOwogCiAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBleHRlbnNpb25zKSB7CiAgICAgICAg
IGF1dG8gbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbih0
cmltbWVkRXh0ZW5zaW9uKGV4dGVuc2lvbikpOwogICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBw
ZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBw
ZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCAyMTllZTE5NTk3MTM0MjFlY2QwY2QyOWUyMmQ1
YjE3YTU1NWYxODAzLi4yMzM3YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5ODcxNThmZjIwMjM1MWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC01OSw3ICs1
OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHByZWZlcnJl
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBtaW1lVHlw
ZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGE+IGNyZWF0ZU1JTUVUeXBlUmVnaXN0
cnlUaHJlYWRHbG9iYWxEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCmluZGV4IGY1ZGZlNDc1Nzk5NGM2OWFlMzQyMGEzNTRkZjY4YzVh
NjZhNjAxNTcuLjZiMmQ4MWUzNWIwOGNmNzRmNGYzNjFhZWJjNzRmMzEyOWM3ZDliN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtNjYs
NiArNjYsOCBAQCBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJik7CiAKIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29u
dGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmIHNvdXJjZSk7CisKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCiBjbGFzcyBOYXRpdmVJbWFnZUhhbmRsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCmluZGV4IDZmZDc3ZTlhOTdlYWRkZjc1MDM0ZmNlYjQ2MTQ1ZTQ1MzA4ZDM2NzQuLmM4NmFl
ZTFhMjVjOTZiZjFkZDczNzBiMWZmYjkzMmUxOGE4MjA4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC04NCw2
ICs4NCwyNSBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9y
LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKK3sK
KyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsK
KyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCksIGRlc3RpbmF0aW9u
LnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOworICAgIENHQ29udGV4dFNj
YWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOworCisgICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisgICAgQ0dGbG9hdCBp
bWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNjYWxlRmFjdG9yOwor
CisgICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJjZS54KCk7CisgICAg
Q0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkoKSArIHNvdXJjZS55
KCk7CisKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RY
LCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBD
R0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Cit9CisKIHZvaWQgY2xlYXJOYXRpdmVJ
bWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAjaWYgQ0FDSEVf
U1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0ltYWdlVXRpbGl0aWVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDAyYjQ2MjBmOTNhYTE1OTBmZjdhNDhlNmU4NDFiYmJmNDRlNDAzMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSW1hZ2VVdGlsaXRpZXMuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisvLyBHaXZlbiBhIGxpc3Qgb2YgZmlsZXMnICdwYXRocycgYW5kICdhbGxvd2VkTUlNRVR5cGVz
JywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0CisvLyBvZiBzdHJpbmdzIHdob3NlIHNpemUg
aXMgdGhlIHNhbWUgYXMgdGhlIHNpemUgb2YgJ3BhdGhzJyBhbmQgaXRzIGVudHJpZXMgYXJlIGFs
bAorLy8gbnVsbCBzdHJpbmdzIGV4Y2VwdCB0aGUgb25lcyB3aG9zZSBNSU1FIHR5cGVzIGFyZSBu
b3QgaW4gJ2FsbG93ZWRNSU1FVHlwZXMnLgorVmVjdG9yPFN0cmluZz4gZmluZEltYWdlc0ZvclRy
YW5zY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsbG93ZWRNSU1FVHlwZXMpOworCisvLyBHaXZlbiBhIGxpc3Qgb2YgaW1hZ2VzJyAncGF0
aHMnLCB0aGlzIGZ1bmN0aW9uIHRyYW5zY29kZXMgdGhlc2UgaW1hZ2VzIHRvIGEgbmV3CisvLyBm
b3JtYXQgd2hvc2UgVVRJIGlzIGRlc3RpbmF0aW9uVVRJLiBUaGUgcmVzdWx0IG9mIHRoZSB0cmFu
c2NvZGluZyB3aWxsIGJlIHdyaXR0ZW4KKy8vIHRvIHRlbXBvcmFyeSBmaWxlcyB3aG9zZSBleHRl
bnNpb25zIGFyZSAnZGVzdGluYXRpb25FeHRlbnNpb24nLiBJdCByZXR1cm5zIGEgbGlzdAorLy8g
b2YgcGF0aHMgdG8gdGhlIHJlc3VsdCB0ZW1wb3JhcnkgZmlsZXMuIElmIGFuIGVudHJ5IGluICdw
YXRocycgaXMgbnVsbCBvciBhbiBlcnJvcgorLy8gaGFwcGVucyB3aGlsZSB0cmFuc2NvZGluZywg
YSBudWxsIHN0cmluZyB3aWxsIGJlIGFkZGVkIHRvIHRoZSByZXR1cm5lZCBsaXN0LgorVmVjdG9y
PFN0cmluZz4gdHJhbnNjb2RlSW1hZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVUSSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkV4dGVu
c2lvbik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApp
bmRleCBmMWMwNTliYmY4MjI3YjAxN2U0ODMwNzA4ZDIyZDI0ZGI0ZDA0MGRiLi43MjkzMTMyMzlk
NWQ1YTFiOWFmMDhhZDdmNDU0ZDZmYjk0ZWFhZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcu
aApAQCAtNTcsNiArNTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKElQQykgXAogICAgIE0oSVRQ
RGVidWcpIFwKICAgICBNKEljb25EYXRhYmFzZSkgXAorICAgIE0oSW1hZ2VzKSBcCiAgICAgTShJ
bmNyZW1lbnRhbFBERikgXAogICAgIE0oSW5jcmVtZW50YWxQREZWZXJib3NlKSBcCiAgICAgTShJ
bmRleGVkREIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2cvQ0dVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMDhmNmQ1ZWZiNGFhYTg2YjEwNGE0OWM5ODU1
ZjIwNzI1YjY4MDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkNHVXRpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIHBhaW50
SW1hZ2UoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHSW1hZ2VSZWYgaW1hZ2UsIENHRmxvYXQgc2Nh
bGVGYWN0b3IsIENHUG9pbnQgZGVzdGluYXRpb24sIENHUmVjdCBzb3VyY2UpCi17Ci0gICAgQ0dD
b250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLQotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29u
dGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54LCBkZXN0aW5hdGlvbi55LCBzb3VyY2Uuc2l6
ZS53aWR0aCwgc291cmNlLnNpemUuaGVpZ2h0KSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29u
dGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpIC8gc2NhbGVGYWN0b3I7Ci0gICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKSAvIHNjYWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRl
c3RpbmF0aW9uLnggLSBzb3VyY2Uub3JpZ2luLng7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFn
ZUhlaWdodCAtIGRlc3RpbmF0aW9uLnkgKyBzb3VyY2Uub3JpZ2luLnk7Ci0KLSAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZShkZXN0WCwgZGVzdFksIGltYWdlV2lkdGgs
IGltYWdlSGVpZ2h0KSwgaW1hZ2UpOwotCi0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250
ZXh0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2Nn
L0NHVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MWQxODFhOGZj
NzU3M2M5MzBjZmM2MDNiMGY0MTQyODc0N2IyMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9DR1V0aWxpdGll
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
Q0dVdGlsaXRpZXNfaAotI2RlZmluZSBDR1V0aWxpdGllc19oCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi12b2lkIHBhaW50SW1hZ2UoQ0dDb250ZXh0UmVmLCBDR0ltYWdlUmVmLCBDR0Zsb2F0IHNj
YWxlRmFjdG9yLCBDR1BvaW50IGRlc3RpbmF0aW9uLCBDR1JlY3Qgc291cmNlKTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDR1V0aWxpdGllc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGVjNmQz
MDkzZDkxZDgxOGVmZTc0ZTM0MTEzOTMyM2M0ODRjYzYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcApAQCAtMCwwICsxLDEy
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZVV0
aWxpdGllcy5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPEltYWdlSU8vSW1h
Z2VJTy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFN0cmluZyB0cmFuc2NvZGVJbWFnZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25FeHRlbnNpb24pCit7CisgICAgYXV0byBzb3VyY2VVUkwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgYXV0
byBzb3VyY2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5n
ZXQoKSwgbnVsbHB0cikpOworICAgIGlmICghc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbFN0
cmluZygpOworCisgICAgYXV0byBzb3VyY2VVVEkgPSBTdHJpbmcoQ0dJbWFnZVNvdXJjZUdldFR5
cGUoc291cmNlLmdldCgpKSk7CisgICAgaWYgKHNvdXJjZVVUSSA9PSBkZXN0aW5hdGlvblVUSSkK
KyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKKworICAgIC8vIEl0IGlzIGltcG9ydGFudCB0
byBhZGQgdGhlIGFwcHJvcHJpYXRlIGZpbGUgZXh0ZW5zaW9uIHRvIHRoZSB0ZW1wb3JhcnkgZmls
ZSBwYXRoLgorICAgIC8vIFRoZSBGaWxlIG9iamVjdCBkZXBlbmRzIHNvbGVseSBvbiB0aGUgZXh0
ZW5zaW9uIHRvIGtub3cgdGhlIE1JTUUgdHlwZSBvZiB0aGUgZmlsZS4KKyAgICBhdXRvIHN1ZmZp
eCA9IG1ha2VTdHJpbmcoJy4nLCBkZXN0aW5hdGlvbkV4dGVuc2lvbik7CisKKyAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZGVzdGluYXRpb25GaWxlSGFuZGxlOworICAgIFN0cmlu
ZyBkZXN0aW5hdGlvblBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcElt
YWdlIl9zLCBkZXN0aW5hdGlvbkZpbGVIYW5kbGUsIHN1ZmZpeCk7CisgICAgaWYgKGRlc3RpbmF0
aW9uRmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKEltYWdlcywgInRyYW5zY29kZUltYWdlOiBEZXN0
aW5hdGlvbiBpbWFnZSBjb3VsZCBub3QgYmUgY3JlYXRlZDogJXMgJXNcbiIsIHBhdGgudXRmOCgp
LmRhdGEoKSwgZGVzdGluYXRpb25VVEkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBu
dWxsU3RyaW5nKCk7CisgICAgfQorCisgICAgQ0dEYXRhQ29uc3VtZXJDYWxsYmFja3MgY2FsbGJh
Y2tzID0geworICAgICAgICBbXSh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVf
dCBjb3VudCkgLT4gc2l6ZV90IHsKKyAgICAgICAgICAgIGF1dG8gaGFuZGxlID0gKnN0YXRpY19j
YXN0PEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSo+KGluZm8pOworICAgICAgICAgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAgICAgICAgfSwKKyAgICAgICAgbnVsbHB0cgorICAg
IH07CisKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZSgm
ZGVzdGluYXRpb25GaWxlSGFuZGxlLCAmY2FsbGJhY2tzKSk7CisgICAgYXV0byBkZXN0aW5hdGlv
biA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGFDb25zdW1lcihjb25z
dW1lci5nZXQoKSwgZGVzdGluYXRpb25VVEkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMSwgbnVs
bHB0cikpOworCisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2VGcm9tU291cmNlKGRlc3Rp
bmF0aW9uLmdldCgpLCBzb3VyY2UuZ2V0KCksIDAsIG51bGxwdHIpOworCisgICAgaWYgKCFDR0lt
YWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoSW1hZ2VzLCAidHJhbnNjb2RlSW1hZ2U6IEltYWdlIHRyYW5zY29kaW5n
IGZhaWxzOiAlcyAlc1xuIiwgcGF0aC51dGY4KCkuZGF0YSgpLCBkZXN0aW5hdGlvblVUSS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGRlc3RpbmF0aW9uRmls
ZUhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb25QYXRo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZGVzdGluYXRpb25GaWxlSGFuZGxlKTsKKyAgICByZXR1cm4gZGVzdGluYXRp
b25QYXRoOworfQorCitWZWN0b3I8U3RyaW5nPiBmaW5kSW1hZ2VzRm9yVHJhbnNjb2RpbmcoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1J
TUVUeXBlcykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB0cmFuc2NvZGluZ1BhdGhzOworICAgIHRy
YW5zY29kaW5nUGF0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwYXRocy5zaXplKCkpOworCisg
ICAgYm9vbCBuZWVkc1RyYW5zY29kaW5nID0gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIHBhdGgg
OiBwYXRocykgeworICAgICAgICAvLyBBcHBlbmQgYSBwYXRoIG9mIHRoZSBpbWFnZSB3aGljaCBu
ZWVkcyB0cmFuc2NvZGluZy4gT3RoZXJ3aXNlIGFwcGVuZCBhIG51bGwgc3RyaW5nLgorICAgICAg
ICBpZiAoIWFsbG93ZWRNSU1FVHlwZXMuY29udGFpbnMoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JQYXRoKHBhdGgpKSkgeworICAgICAgICAgICAgdHJhbnNjb2RpbmdQYXRo
cy51bmNoZWNrZWRBcHBlbmQocGF0aCk7CisgICAgICAgICAgICBuZWVkc1RyYW5zY29kaW5nID0g
dHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0cmFuc2NvZGluZ1BhdGhzLnVuY2hl
Y2tlZEFwcGVuZChudWxsU3RyaW5nKCkpOworICAgIH0KKworICAgIC8vIElmIG5vbmUgb2YgdGhl
IGZpbGVzIG5lZWRzIGltYWdlIHRyYW5zY29kaW5nLCByZXR1cm4gYW4gZW1wdHkgVmVjdG9yLgor
ICAgIHJldHVybiBuZWVkc1RyYW5zY29kaW5nID8gdHJhbnNjb2RpbmdQYXRocyA6IFZlY3RvcjxT
dHJpbmc+KCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHRyYW5zY29kZUltYWdlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGF0aHMsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VVEksIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25FeHRlbnNpb24pCit7CisgICAgQVNTRVJUKCFkZXN0aW5hdGlvblVU
SS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFkZXN0aW5hdGlvbkV4dGVuc2lvbi5pc051bGwoKSk7
CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gdHJhbnNjb2RlZFBhdGhzOworICAgIHRyYW5zY29k
ZWRQYXRocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBhdGhzLnNpemUoKSk7CisKKyAgICBmb3Ig
KGF1dG8mIHBhdGggOiBwYXRocykgeworICAgICAgICAvLyBBcHBlbmQgdGhlIHRyYW5zY29kZWQg
cGF0aCBpZiB0aGUgaW1hZ2UgbmVlZHMgdHJhbnNjb2RpbmcuIE90aGVyd2lzZSBhcHBlbmQgYSBu
dWxsIHN0cmluZy4KKyAgICAgICAgaWYgKCFwYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgdHJh
bnNjb2RlZFBhdGhzLnVuY2hlY2tlZEFwcGVuZCh0cmFuc2NvZGVJbWFnZShwYXRoLCBkZXN0aW5h
dGlvblVUSSwgZGVzdGluYXRpb25FeHRlbnNpb24pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdHJhbnNjb2RlZFBhdGhzLnVuY2hlY2tlZEFwcGVuZChudWxsU3RyaW5nKCkpOworICAgIH0K
KworICAgIHJldHVybiB0cmFuc2NvZGVkUGF0aHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4
IDVjNGMzNjIwMGRjYTZhZDVkZDBlNGRmZjc2MjE5OWY5Y2RjYmM0MGMuLjczMGRhNjQ4ZjJiMmZl
OWU3ODRmZDA0MDUyZTE5MGYwZDBiZjIxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENH
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMDYsMTIgKzEwNiwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291
cmNlKQogewotICAgIHBhaW50SW1hZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgbWFrZUNH
SW1hZ2VDb3B5KCkuZ2V0KCksIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOworICAgIGRyYXdOYXRp
dmVJbWFnZShtYWtlQ0dJbWFnZUNvcHkoKSwgY29udGV4dCwgMSwgZGVzdGluYXRpb24sIHNvdXJj
ZSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBwYWludEltYWdlKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIG1ha2VDR0ltYWdlQ29weSgpLmdldCgpLCBzY2FsZUZhY3Rvciwg
ZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgZHJhd05hdGl2ZUltYWdlKG1ha2VDR0ltYWdlQ29w
eSgpLCBjb250ZXh0LCBzY2FsZUZhY3RvciwgZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYWI2MmE5NDA0OTIxODdkZjU4ZmI2MTUyMzNlMjIwNGMw
NTQ3MGRlNi4uYzAzMGZhY2ZjODI4MzJjM2ZhNzZkMGZhZGZlODE5NjU2M2Q1MjhjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNjUsNyArNjUsNyBAQCBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKIAotUGxhdGZv
cm0vY2cvQ0dVdGlsaXRpZXMuY3BwCitQbGF0Zm9ybS9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAog
CiBQbGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lm
aWVyQ29jb2EuY3BwCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHAKaW5kZXggYWZhZjZlNDhiYzM2YTk1Nzcy
YzEzZTU3YzJiMmE4MmQxOGRkMzQ3NC4uZmEwNjMyMDYxOGE0NmU5MWQ4MjdkNTA2NzBjMjA1YzE3
MTc2YjNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuY3BwCkBAIC01OCw2ICs1OCwxMSBAQCBXS0FycmF5
UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBY2NlcHRlZEZpbGVFeHRlbnNpb25zKFdLT3Bl
blBhbmVsUGFyYW1ldGVycwogICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhcmFtZXRlcnNSZWYp
LT5hY2NlcHRGaWxlRXh0ZW5zaW9ucygpLmxlYWtSZWYoKSk7CiB9CiAKK1dLQXJyYXlSZWYgV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRNSU1FVHlwZXMoV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUmVmIHBhcmFtZXRlcnNSZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwocGFyYW1l
dGVyc1JlZiktPmFsbG93ZWRNSU1FVHlwZXMoKS5sZWFrUmVmKCkpOworfQorCiAvLyBEZXByZWNh
dGVkLgogV0tTdHJpbmdSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUNhcHR1cmUoV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUmVmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaAppbmRleCAwNTlmN2NmYzA2MWVm
YzRiZWVmZjU5MTMyZTBlNmY0OWQ5MGZmYzY4Li43ZDEzMjk4NGJhNzU2NzZmNTY0Y2FjZjA0Njlk
ZDE5ZTY4MzRmNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYuaApAQCAtNDUsNiArNDUsOCBAQCBXS19FWFBP
UlQgYm9vbCBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKFdLT3Bl
blBhbmVsUGFyYW1ldGVycwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzQ29weUFjY2VwdGVkTUlNRVR5cGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0
ZXJzKTsKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc0NvcHlBY2Nl
cHRlZEZpbGVFeHRlbnNpb25zKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzKTsK
IAorV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzQ29weUFsbG93ZWRN
SU1FVHlwZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMpOworCiAvKiBERVBS
RUNBVEVEIC0gUGxlYXNlIHVzZSBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRDYXB0dXJlRW5hYmxl
ZCgpIGluc3RlYWQuICovCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzQ29weUNhcHR1cmUoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwCmluZGV4IDJiMzk0ZmM4YmRhNzQyMTdjMTczNTEyNzYzNjU2NTk4
YTRiODQyYjkuLmI2MTE4ODE3MTg4NTJiNTAzNTk4NGYzNTA3MDJmMTc5MWEyZWVlY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lckNob29zZU1lZGlhRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBs
aXN0CiB9CiAjZW5kaWYKIAotdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgV0tBcnJheVJlZiBm
aWxlVVJMc1JlZikKK3ZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVS
THNSZWYsIFdLQXJyYXlSZWYgYWxsb3dlZE1pbWVUeXBlc1JlZikKIHsKLSAgICB0b0ltcGwobGlz
dGVuZXJSZWYpLT5jaG9vc2VGaWxlcyhmaWxlUGF0aHNGcm9tRmlsZVVSTHMoKnRvSW1wbChmaWxl
VVJMc1JlZikpKTsKKyAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5jaG9vc2VGaWxlcyhmaWxlUGF0
aHNGcm9tRmlsZVVSTHMoKnRvSW1wbChmaWxlVVJMc1JlZikpLCB0b0ltcGwoYWxsb3dlZE1pbWVU
eXBlc1JlZiktPnRvU3RyaW5nVmVjdG9yKCkpOwogfQogCiB2b2lkIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJDYW5jZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaAppbmRleCA2OTk5NzZmYWEyYWRkZTQ3OGNlZjZjNGUxYjBmZWY4NDUw
OThhZWE4Li5hYWJiZTE5ZDcyMmVmNjQxNDI2Y2MxNTkxYTM1NmJhMDczNDRkN2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5oCkBAIC0zNSw3ICszNSw3IEBAIGV4dGVybiAiQyIgewogV0tfRVhQT1JUIFdL
VHlwZUlEIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJHZXRUeXBlSUQodm9pZCk7CiAKIFdLX0VY
UE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VNZWRpYUZpbGVzKFdLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVSTHNS
ZWYsIFdLU3RyaW5nUmVmIGRpc3BsYXlTdHJpbmcsIFdLRGF0YVJlZiBpY29uSW1hZ2VEYXRhUmVm
KTsKLVdLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS0FycmF5UmVmIGZpbGVVUkxz
KTsKK1dLX0VYUE9SVCB2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS0FycmF5UmVmIGZpbGVVUkxz
LCBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXNSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxp
c3RlbmVyKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA4Njc3MGJlMzgwMGM1YWViYjI4MTAyMmU2YjBjYWFlN2M2ZGIx
YjQwLi4yMGM2NmY0YzcxMTBlNWZhZGI1Y2ZiOTZiYzg5NmViYWRmMzdiYzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIxNSw2ICsyMTUsMTEgQEAKICNp
bmNsdWRlIDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlICJJbWFnZVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVVRJ
VXRpbGl0aWVzLmg+CisjZW5kaWYKKwogI2lmIEhBVkUoVE9VQ0hfQkFSKQogI2luY2x1ZGUgIlRv
dWNoQmFyTWVudURhdGEuaCIKICNpbmNsdWRlICJUb3VjaEJhck1lbnVJdGVtRGF0YS5oIgpAQCAt
NDg4LDYgKzQ5Myw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgLCBtX2lnbm9yZXNB
cHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0aW9uLT5pZ25vcmVzQXBwQm91bmREb21haW5zKCkp
CiAgICAgLCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMobV9jb25maWd1cmF0
aW9uLT5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKCkpCiAjZW5kaWYKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgLCBtX3RyYW5zY29kaW5nUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuSW1hZ2VUcmFuc2NvZGluZyIpKQorI2VuZGlmCiB7CiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6Iik7CiAKQEAgLTY2Njks
MTcgKzY2NzcsNTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QKIH0KICNlbmRpZgogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitib29sIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlN
RVR5cGVzKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBhdXRvIHRyYW5zY29kaW5nTUlNRVR5
cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRJbWFnZU1JTUVUeXBlRm9y
RW5jb2RpbmcoYWxsb3dlZE1JTUVUeXBlcywgeyB9KTsKKyAgICBpZiAodHJhbnNjb2RpbmdNSU1F
VHlwZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byB0cmFuc2Nv
ZGluZ1VSTHMgPSBmaW5kSW1hZ2VzRm9yVHJhbnNjb2RpbmcoZmlsZVVSTHMsIGFsbG93ZWRNSU1F
VHlwZXMpOworICAgIGlmICh0cmFuc2NvZGluZ1VSTHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvIHRyYW5zY29kaW5nVVRJID0gV2ViQ29yZTo6VVRJRnJvbU1J
TUVUeXBlKHRyYW5zY29kaW5nTUlNRVR5cGUpOworICAgIGF1dG8gdHJhbnNjb2RpbmdFeHRlbnNp
b24gPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1F
VHlwZSh0cmFuc2NvZGluZ01JTUVUeXBlKTsKKworICAgIG1fdHJhbnNjb2RpbmdRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZmlsZVVSTHMgPSBm
aWxlVVJMcy5pc29sYXRlZENvcHkoKSwgdHJhbnNjb2RpbmdVUkxzID0gdHJhbnNjb2RpbmdVUkxz
Lmlzb2xhdGVkQ29weSgpLCB0cmFuc2NvZGluZ1VUSSA9IHRyYW5zY29kaW5nVVRJLmlzb2xhdGVk
Q29weSgpLCB0cmFuc2NvZGluZ0V4dGVuc2lvbiA9IHRyYW5zY29kaW5nRXh0ZW5zaW9uLmlzb2xh
dGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgICAgICBhdXRvIHRyYW5zY29kZWRVUkxzID0gdHJhbnNjb2RlSW1hZ2VzKHRyYW5z
Y29kaW5nVVJMcywgdHJhbnNjb2RpbmdVVEksIHRyYW5zY29kaW5nRXh0ZW5zaW9uKTsKKyAgICAg
ICAgQVNTRVJUKHRyYW5zY29kaW5nVVJMcy5zaXplKCkgPT0gdHJhbnNjb2RlZFVSTHMuc2l6ZSgp
KTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlVVJMcyA9IGZpbGVVUkxzLmlzb2xhdGVk
Q29weSgpLCB0cmFuc2NvZGVkVVJMcyA9IHRyYW5zY29kZWRVUkxzLmlzb2xhdGVkQ29weSgpXSgp
IHsKKyNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQorICAgICAgICAgICAgVmVjdG9yPFN0
cmluZz4gc2FuZGJveEV4dGVuc2lvbkZpbGVzOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSBmaWxlVVJMcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICAg
ICAgc2FuZGJveEV4dGVuc2lvbkZpbGVzLmFwcGVuZCghdHJhbnNjb2RlZFVSTHNbaV0uaXNOdWxs
KCkgPyB0cmFuc2NvZGVkVVJMc1tpXSA6IGZpbGVVUkxzW2ldKTsKKyAgICAgICAgICAgIGF1dG8g
c2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25s
eUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bCJfcywgc2FuZGJveEV4dGVuc2lvbkZpbGVzKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlcykpKTsKKyNlbmRpZgorICAgICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMsIHRyYW5zY29k
ZWRVUkxzKSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgcmV0dXJuIHRydWU7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShmaWxlVVJMcyk7CisgICAgVU5VU0VEX1BBUkFNKGFsbG93ZWRN
SU1FVHlwZXMpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGluZyhmaWxlVVJMcywgYWxs
b3dlZE1JTUVUeXBlcykpIHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgIGF1
dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFk
T25seUhhbmRsZXNGb3JGaWxlcygiV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbCJfcywgZmlsZVVSTHMpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNh
bmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
cykpKTsKKyAgICAgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKCJXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsIl9zLCBmaWxlVVJMcyk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsKICNlbmRpZgotCi0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMsIHsgfSkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChm
aWxlVVJMcywgeyB9KSk7CisgICAgfQogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+
aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3YTI2ZDE3MGZhNTA1MmZk
MjNiYTZlNzEwMThiZTg1ZTUxYzc4Yzg1Li5jOWMzMGQ1MzRjYWY1ZTI1NjQxMDE0NzFlYjAwNzQ0
MDM0MTEwM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTky
NCw2ICsxOTI0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVy
dGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIHBhZ2VE
aWRTY3JvbGwoKTsKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIEZyYW1lSW5mb0RhdGEmJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYp
OworICAgIGJvb2wgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoSW1hZ2VUcmFuc2NvZGlu
Zyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBh
bGxvd2VkTUlNRVR5cGVzKTsKICAgICB2b2lkIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6
OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIHByaW50RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWlu
dDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90
IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFEZWxheWVkUmVwbHkmJik7CkBAIC0y
ODQxLDYgKzI4NDIsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VyU2NyaXB0c05vdGlmaWVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlu
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9y
ZU5hdmlnYXRpb24geyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZWY8V29ya1F1
ZXVlPiBtX3RyYW5zY29kaW5nUXVldWU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNGM5NDhhY2MzMWM1OTJjZjJkYTc5YmNkM2Q5MTEwN2E5MGJiOTQ4Mi4uNTNkN2Y4NTRm
MmNhMThkNDM5NGQzMTYzMTE3ZTg3ZjEyMTY0YjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTAsNyArMjkwLDcgQEAKIAkJMUE5
RkJBOEQxM0ZGMDRFNjAwREVFRDY3IC8qIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RkJBOEMxM0ZG
MDRFNjAwREVFRDY3IC8qIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oICovOyB9OwogCQkx
QUExMzIxMjE5MUQ1OTI0MDA5QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUExMzIxMTE5
MUQ1OTI0MDA5QzE0ODkgLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBMjBENTExOEFENTBF
MDAwNUQxRUQ0IC8qIFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMjBENTAxOEFENTBFMDAwNUQxRUQ0
IC8qIFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBD
R1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmggKi87IH07CisJCTFB
QTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2
IC8qIEltYWdlVXRpbGl0aWVzLmggKi87IH07CiAJCTFBQTJFNTY3MThENzc1MDgwMDM4MTRCRCAv
KiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyRTU2NTE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQ
cm9jZXNzQnVuZGxlUGFyYW1ldGVycy5oICovOyB9OwogCQkxQUEzRDc1QzE2NTFCNDRGMDA4NzEz
RDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFBM0Q3NUExNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVy
VHJlZUhvc3QuaCAqLzsgfTsKIAkJMUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVj
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE0
MTdDOTEyQzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXIuaCAqLzsgfTsKQEAgLTI1MDksOCAr
MjUwOSw4IEBACiAJCTFBQTFDQzVDMTAwRkExQTEwMDc4REVCQyAvKiBRdWFydHpDb3JlLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKIAkJMUFBMUNEMDYxMDBGQTFCQTAwNzhERUJDIC8qIENhcmJvbi5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENhcmJvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwogCQkxQUEyMEQ1MDE4QUQ1MEUwMDA1RDFFRDQgLyogV0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
QUEyRTUxQjEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ0dVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUFBMkU1MUMxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENHVXRpbGl0aWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIEltYWdlVXRp
bGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlVXRpbGl0aWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQTJFNTFDMTJFNEMwNUUwMEJDNDk2
NiAvKiBJbWFnZVV0aWxpdGllc0NHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEltYWdlVXRpbGl0aWVzQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUEyRTU2NDE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9jZXNzQnVuZGxlUGFyYW1ldGVy
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViUHJvY2Vz
c0J1bmRsZVBhcmFtZXRlcnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTJF
NTY1MThENzc1MDgwMDM4MTRCRCAvKiBXS1dlYlByb2Nlc3NCdW5kbGVQYXJhbWV0ZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc0J1bmRsZVBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBM0Q3NTkxNjUxQjQ0RjAwODcx
M0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVIb3N0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTk0OCw4ICs1OTQ4LDcgQEAKIAkJMUFBMkU1MUExMkU0QzA1NjAwQkM0OTY2
IC8qIGNnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkx
QUEyRTUxQzEyRTRDMDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuY3BwICovLAotCQkJCTFBQTJF
NTFCMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oICovLAorCQkJCTFBQTJFNTFDMTJF
NEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllc0NHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gY2c7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTU3NSw2ICs5NTc0LDcgQEAK
IAkJCQk1MUIxNUE3RDEzODQzOUIyMDAzMjFBRDggLyogdW5peCAqLywKIAkJCQlFQ0E2ODBEMzFF
NjkwNEI1MDA3MzFEMjAgLyogRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCAqLywKIAkJCQlF
Q0JGQzFEQjFFNkE0RDY2MDAwMzAwQzcgLyogRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oICov
LAorCQkJCTFBQTJFNTFCMTJFNEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllcy5oICovLAog
CQkJCTUxQTdGMkY0MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5nLmNwcCAqLywKIAkJCQk1MUE3
RjJGMjEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oICovLAogCQkJCTBGRENEN0Y2MUQ0N0U5
MkEwMDlGMDhCQyAvKiBMb2dJbml0aWFsaXphdGlvbi5oICovLApAQCAtMTA3NTQsNyArMTA3NTQs
NiBAQAogCQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFREExRjQxNUQ4QTAw
MTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTFBQTJFNTFEMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdCNEI0NjAyMEI1MDRBQzAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0
aGVudGljYXRpb25YUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RkUwQTNCMjQ2
MzJCNjAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDgyNzM0
NzI0NTI4RjYwMDBBOTU0OTMgLyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDgz
Myw2ICsxMDgzMiw3IEBACiAJCQkJNTFDMEM5NzQxRERENzYwMDAwMzJDQUQzIC8qIEljb25Mb2Fk
aW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JF
OSAvKiBJREJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0Ew
MDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQTJFNTFEMTJF
NEMwNUUwMEJDNDk2NiAvKiBJbWFnZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEx
RUM2OUUxODcyMDkyMTAwQjk1MUYwIC8qIEltcG9ydGFuY2VBc3NlcnRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMjA0RUUzMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFRTdEQzUxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVu
ZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1OTFlMTk2YWI3OTY2OGJjYWI0YmVhODlhNDYxOWZlZjk1
YmJkZmQ2Li5mYmM1OGJhMjAwZWU0MDBkOWQxZjFmYzFhYzg1NmY5MTE4YzhiN2M1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDctMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbbWFjT1NdOiBBIEhFSUYgaW1hZ2UsIHNlbGVjdGVkIGZyb20gdGhlIE9w
ZW5QYW5lbCwgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhbiBhY2NlcHRlZCBNSU1FIHR5cGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzM0NworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTcyNTg0NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6cnVuT3BlblBhbmVsKToKKwogMjAyMC0wNy0wOCAgU3RlcGhh
biBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIEZp
eCBlcnJvcnMgZnJvbSBjYWxscyB0byB1bmFtZSB3aGVuIG5vdCBhdmFpbGFibGUKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTNiZTFlOGY5NzA1NGIzOWEw
NWQxNzA1NzY0YWI0ODRiNGJlMzhiZi4uNTgyNjFhMzYxZGFjYjk0MTIyYTA4OTk3MjE1MzJmNThh
NDYxNDE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTIyMywxMiArMjIzLDE0IEBAIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgfQogI2VuZGlm
CiAKKyAgICBXS0FycmF5UmVmIGFsbG93ZWRNaW1lVHlwZXMgPSBXS09wZW5QYW5lbFBhcmFtZXRl
cnNDb3B5QWxsb3dlZE1JTUVUeXBlcyhwYXJhbWV0ZXJzKTsKKwogICAgIGlmIChXS09wZW5QYW5l
bFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpKSB7Ci0gICAgICAg
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhyZXN1bHRMaXN0ZW5lclJlZiwg
ZmlsZVVSTHMpOworICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMo
cmVzdWx0TGlzdGVuZXJSZWYsIGZpbGVVUkxzLCBhbGxvd2VkTWltZVR5cGVzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxl
cyhyZXN1bHRMaXN0ZW5lclJlZiwgYWRvcHRXSyhXS0FycmF5Q3JlYXRlKCZmaXJzdEl0ZW0sIDEp
KS5nZXQoKSk7CisgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKHJlc3Vs
dExpc3RlbmVyUmVmLCBhZG9wdFdLKFdLQXJyYXlDcmVhdGUoJmZpcnN0SXRlbSwgMSkpLmdldCgp
LCBhbGxvd2VkTWltZVR5cGVzKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwo
V0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTJlYzhkZjZl
MDA3NjdhZTJmZjI5NDQ0YWIxNmQ4ZWY0YzlkZjQzZC4uMDE5ZmJkMGYyZTkzNmM4ODg2NjA4Yjlk
MjEzY2UwZTMyZTA5ZjJkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA3LTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogQSBIRUlGIGltYWdlLCBzZWxlY3RlZCBmcm9tIHRoZSBPcGVuUGFuZWwsIHNob3VsZCBiZSBj
b252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlNRSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzNDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU3MjU4NDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuc3VyZSB0aGUgSEVJRiBpbWFnZSBpcyBjb252ZXJ0ZWQgdG8gYW4gYWNjZXB0ZWQgTUlN
RSB0eXBlIHdoZW4gaXQgaXMgCisgICAgICAgIHNlbGVjdGVkIGZyb20gdGhlIE9wZW5QYW5lbCBh
bmQgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBvZiB0aGUgPGlucHV0PgorICAgICAgICBkb2VzIGFs
bG93IHRoZSBIRUlGIE1JTUUgdHlwZS4KKworICAgICAgICBObyBuZWVkIHRvIHRlc3QgdGhpcyBm
dW5jdGlvbmFsaXR5IG9uIFdLMSBzaW5jZSB0aGUgaW1hZ2UgdHJhbnNjb2RpbmcgCisgICAgICAg
IHNob3VsZCBoYXBwZW4gaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10
cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJh
bnNjb2RlLW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2UtdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL3Jlc291cmNlcy9pbWFn
ZXMvZ3JlZW4tNDAweDQwMC5oZWljOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDctMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlbW92ZSBzb21lIG1lbnRpb25zIG9mIG5v
bi1leGlzdGFudCBmaWxlcyBpbiBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAz
M2FkYTU1NWE5Mzg1MGFjNDgyYTVjZDk4ZGEzOTc0NWIxMjYyNjU1Li42MTliYzRlNDIyYjJlZTE0
YjQ3OGI5MmI4OTdjMWMxOWM1NmNiODRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg5OCw2ICs4
OTgsOCBAQCBodHRwL3dwdC9jcm9zcy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5LyBbIFNraXAgXQog
CiAjIHRlc3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKSBvbmx5IHdvcmtzIGluIFdl
YktpdDIKIGZhc3QvZmlsZXMvYmxvYi1uZXR3b3JrLXByb2Nlc3MtY3Jhc2guaHRtbCBbIFNraXAg
XQorZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVs
Lmh0bWwgWyBTa2lwIF0KK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS1uby10cmFu
c2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgU2tpcCBdCiAKICMgVGhpcyB0ZXN0IGlzIGN1cnJlbnRs
eSBvbmx5IHJlbGV2YW50IG9uIG1hYy13azIKIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtdXBk
YXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2Rl
LW9wZW4tcGFuZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2Vu
dHJpZXMtYXBpL2ltYWdlLW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOTVlYTg2MDhmMDgyMGVkMTQ2Y2YwODg1NmU2Njg0OTg0ZGIwMDFmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdl
LW5vLXRyYW5zY29kZS1vcGVuLXBhbmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitP
UEVOIEZJTEUgUEFORUwKK1Rlc3RzIGEgSEVJQyBpbWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBw
aWNrZXIgd2hpY2ggYWNjZXB0cyBIRUlDLCB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYW55IHN1
cHBvcnRlZCBNSU1FIHR5cGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGZpbGVMaXN0Lmxlbmd0aCBpcyAxCitQQVNTIGZpbGUudHlwZSBpcyAiaW1hZ2UvaGVpYyIKK1BB
U1MgZmlsZS5zaXplIGlzIG5vbi16ZXJvLgorSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4KK1BB
U1MgaW1nLndpZHRoIGlzIG5vdCA0MDAKK1BBU1MgaW1nLmhlaWdodCBpcyBub3QgNDAwCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJh
bnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS1uby10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1
ODRkNTU5NDM0ZmE3OTQyN2U2ZmRkNmU4MDM0MzAyNDUzNWFjMjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNj
b2RlLW9wZW4tcGFuZWwuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW5wdXQgdHlw
ZT0iZmlsZSIgYWNjZXB0PSJJTUFHRS9IRUlDIiBvbmNoYW5nZT0iY2hhbmdlZChldmVudCkiPjwv
aW5wdXQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIGEgSEVJQyBp
bWFnZSwgY2hvc2VuIHZpYSB0aGUgZmlsZSBwaWNrZXIgd2hpY2ggYWNjZXB0cyBIRUlDLCB3aWxs
IG5vdCBiZSBjb252ZXJ0ZWQgdG8gYW55IHN1cHBvcnRlZCBNSU1FIHR5cGUuIik7CisgICAgICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAg
ICAgICB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVzKFsncmVzb3Vy
Y2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMnXSk7CisKKyAgICAgICAgICAgIGlucHV0RWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgICAg
ICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChpbnB1dEVsZW1lbnQub2Zmc2V0TGVmdCArIGlucHV0
RWxlbWVudC5vZmZzZXRXaWR0aCAvIDIsCisgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50Lm9m
ZnNldFRvcCArIGlucHV0RWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoYW5nZWQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZp
bGVMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzOworICAgICAgICAgICAgc2hvdWxkQmUoImZpbGVM
aXN0Lmxlbmd0aCIsICIxIik7CisKKyAgICAgICAgICAgIGZpbGUgPSBmaWxlTGlzdFswXTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZS50eXBlIiwgImltYWdlL2hlaWMi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlTm9uWmVybygiZmlsZS5zaXplIik7CisKKyAgICAgICAg
ICAgIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOworCisgICAgICAgICAgICB2YXIgcmVhZGVyID0g
bmV3IEZpbGVSZWFkZXIoKTsKKyAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIkltYWdlIHdhcyBsb2FkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJpbWcud2lkdGgiLCAiNDAwIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpbWcu
aGVpZ2h0IiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4gewor
ICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoImltZy53aWR0aCIsICI0MDAiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoImltZy5oZWlnaHQiLCAiNDAwIik7CisgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgaW1nLnNyYyA9IHJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CisgICAgICAgIH0KKyAgICAgICAg
cnVuVGVzdCgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1v
cGVuLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRy
aWVzLWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTExNDYwYmFiODhjM2ZjNjIyZjZmYjNhMTYwNjc5MjY3MzQzNGFjOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10cmFu
c2NvZGUtb3Blbi1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorT1BFTiBGSUxF
IFBBTkVMCitUZXN0cyBhIEhFSUMgaW1hZ2UsIGNob3NlbiB2aWEgdGhlIGZpbGUgcGlja2VyIHdo
aWNoIGFjY2VwdHMgUE5HLCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIFBORyBpbWFnZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZmlsZUxpc3QubGVuZ3RoIGlzIDEKK1BB
U1MgZmlsZS50eXBlIGlzICJpbWFnZS9wbmciCitQQVNTIGZpbGUuc2l6ZSBpcyBub24temVyby4K
K0ltYWdlIHdhcyBsb2FkZWQuCitQQVNTIGltZy53aWR0aCBpcyA0MDAKK1BBU1MgaW1nLmhlaWdo
dCBpcyA0MDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFw
aS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWxlL2VudHJpZXMtYXBpL2ltYWdlLXRyYW5zY29kZS1vcGVuLXBhbmVsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTk1YTI5YTczYjgzNWE1MTJiMzYyYWFiMzIzZmZmOGI5YmJlNzM2YgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS9pbWFnZS10
cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbnB1
dCB0eXBlPSJmaWxlIiBhY2NlcHQ9Ii5wbmciIG9uY2hhbmdlPSJjaGFuZ2VkKGV2ZW50KSI+PC9p
bnB1dD4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgYSBIRUlDIGlt
YWdlLCBjaG9zZW4gdmlhIHRoZSBmaWxlIHBpY2tlciB3aGljaCBhY2NlcHRzIFBORywgd2lsbCBi
ZSBjb252ZXJ0ZWQgdG8gYSBQTkcgaW1hZ2UuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldE9wZW5QYW5lbEZpbGVzKFsncmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00
MDB4NDAwLmhlaWMnXSk7CisKKyAgICAgICAgICAgIGlucHV0RWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdOworICAgICAgICAgICAgVUlIZWxwZXIuYWN0
aXZhdGVBdChpbnB1dEVsZW1lbnQub2Zmc2V0TGVmdCArIGlucHV0RWxlbWVudC5vZmZzZXRXaWR0
aCAvIDIsCisgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50Lm9mZnNldFRvcCArIGlucHV0RWxl
bWVudC5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
YW5nZWQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZlbnQudGFy
Z2V0LmZpbGVzOworICAgICAgICAgICAgc2hvdWxkQmUoImZpbGVMaXN0Lmxlbmd0aCIsICIxIik7
CisKKyAgICAgICAgICAgIGZpbGUgPSBmaWxlTGlzdFswXTsKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZmlsZS50eXBlIiwgImltYWdlL3BuZyIpOworICAgICAgICAgICAgc2hv
dWxkQmVOb25aZXJvKCJmaWxlLnNpemUiKTsKKworICAgICAgICAgICAgaW1nID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGltZyk7CisKKyAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwor
ICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICBpbWcu
b25sb2FkID0gKCkgPT4geworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiSW1hZ2Ugd2FzIGxv
YWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImltZy53aWR0aCIsICI0MDAi
KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImltZy5oZWlnaHQiLCAiNDAwIik7Cisg
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGRlYnVnKCJJbWFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiIpOworICAgICAgICAgICAgICAgICAg
ICBzaG91bGROb3RCZSgiaW1nLndpZHRoIiwgIjQwMCIpOworICAgICAgICAgICAgICAgICAgICBz
aG91bGROb3RCZSgiaW1nLmhlaWdodCIsICI0MDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBpbWcuc3Jj
ID0gcmVhZGVyLnJlc3VsdDsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICByZWFkZXIucmVh
ZEFzRGF0YVVSTChmaWxlKTsKKyAgICAgICAgfQorICAgICAgICBydW5UZXN0KCk7CisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdlcy9ncmVlbi00MDB4NDAwLmhlaWMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZW50cmllcy1hcGkvcmVzb3VyY2VzL2ltYWdl
cy9ncmVlbi00MDB4NDAwLmhlaWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NmODU5ZDhkYTFkZjExNjI1NGRhNjM5
MzU1OWU1OWU5NjljYTdiNgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzEwCnpjbVlqT09LVEhS
NmgzRVc4ZERsbFEhM1QhQjRgalBoMSEqX1kmNUFsI2Zae0h3WDF9ZzNBdmF0KlhnTE8yKH5FSgp6
ZyRyS2A3aFN7JERFT2NZSHpHPVBGQUN+IXNQMF8yPSl3fWVHbjJGKT1IdlUkPil5SE41WWhIKElI
emwjYXRKMnUKenRMaThiendvYFZBfkQkUm5wK1FJTnUtcSVjSnYxNFR5PyQqWjxpWiohZVJgaEUo
WX4lVGNAPU9lZHN1SVB7a2NZCnoxfHIrd2Nwe3skY0ZEbVhZekEzTSMlRVBAQFN4aGZBPz4mYDR3
NCsqXjt6amFxd1RmUVA2SXJMYXwrQzUkWXA/Tgp6Pl5KPmdVdDEmVUhKailkJGE5S1lFaCNYaSFq
eH1weGNkPXVkeWE2X2BDcD0keHxKQVRkWWhaREZCfnc4IzhjeGoKej5NfSlNc3F+JWJ8Q1B6KT83
cmdOcCotJkNTMk5sSiF9dn1OPlErR2A4cnhRX1d8Z0dPV0hKZEZQfT1YejhTayhiCnpqTyFNeyE+
Wm5oUiNLRCEkdFZHMTNmemJXMjlMa055Q0U2aHQrWkZkY215VGxTKFFwTzFUUlN6NF5vJVowZiVf
IQp6aENhJnM8azUmQHpLZT9GVWEyXz1oI2QjU2tEMmU/cSVIN3YwQSt2PFBabiQmVG5Nfk09KCpY
O0R5KElYKmAtc0cKekpoenUkRXElRTF7WHphP19TJDt5eVZscURVO2EjOG90YH1YPkZtcXEkbjZv
YiZMbj0wbiZ+STImbkQobUU5cXNkCmklJW1VbF9pNGNATjZZQVd4RUx7aHZGbEFvVyVqcH5HMklx
RCY7SjFfUihOVXYKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZjA1ZTQ2ZjdlYWIyNjE0YjE4MzIx
OGM4MjEzZjhjYWIxMzAxOGQ2Li5mZjU5NTMwYjdmMmFmY2U3MWNhYzBmODgwYjhlYzViMDg4ZWYx
OTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CkBAIC04NSw2ICs4NSw5IEBAIGZhc3QvZXZlbnRzL2luYWN0aXZlLXdpbmRvdy1uby1tb3VzZS1l
dmVudC5odG1sIFsgUGFzcyBdCiAKIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZy
YW1lLWluLXR3by1wYWdlcy5odG1sIFsgUGFzcyBdCiAKK2Zhc3QvZm9ybXMvZmlsZS9lbnRyaWVz
LWFwaS9pbWFnZS10cmFuc2NvZGUtb3Blbi1wYW5lbC5odG1sIFsgUGFzcyBdCitmYXN0L2Zvcm1z
L2ZpbGUvZW50cmllcy1hcGkvaW1hZ2Utbm8tdHJhbnNjb2RlLW9wZW4tcGFuZWwuaHRtbCBbIFBh
c3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9y
bS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8K
</data>

          </attachment>
      

    </bug>

</bugzilla>