<?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>150967</bug_id>
          
          <creation_ts>2015-11-05 22:30:20 -0800</creation_ts>
          <short_desc>Remove ColorSpace argument to all the drawing calls</short_desc>
          <delta_ts>2015-11-10 10:30:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150305</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139888</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-05 22:30:20 -0800</bug_when>
    <thetext>Remove ColorSpace argument to all the drawing calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139889</commentid>
    <comment_count>1</comment_count>
      <attachid>264917</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-05 22:34:17 -0800</bug_when>
    <thetext>Created attachment 264917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139896</commentid>
    <comment_count>2</comment_count>
      <attachid>264919</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-05 23:24:13 -0800</bug_when>
    <thetext>Created attachment 264919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139947</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-11-06 05:24:55 -0800</bug_when>
    <thetext>I thought you could switch SVG filters into linearized sRGB? Is this ok because we don&apos;t ever paint with GraphicsContext into those buffers, or because we only paint regular sRGB colors into them? (I guess it&apos;s probably that)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139959</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 08:11:03 -0800</bug_when>
    <thetext>I don&apos;t want to change any ImageBuffer or filter stuff at this point. This is just removing input params that are always ColorSpaceSRGB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139960</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 08:11:39 -0800</bug_when>
    <thetext>...always ColorSpaceSRGB (hard-coded in style) or ColorSpaceDeviceRGB (hardcoded at many call sites).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139961</commentid>
    <comment_count>6</comment_count>
      <attachid>264919</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-06 08:16:00 -0800</bug_when>
    <thetext>Comment on attachment 264919
Patch

One hard part here is getting all the platforms to build. GTK, EFL, and iOS all failed on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139967</commentid>
    <comment_count>7</comment_count>
      <attachid>264939</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 08:29:41 -0800</bug_when>
    <thetext>Created attachment 264939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139970</commentid>
    <comment_count>8</comment_count>
      <attachid>264939</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-06 08:39:38 -0800</bug_when>
    <thetext>Comment on attachment 264939
Patch

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

Looking forward to merging this with my mega-patch after you land it ;)

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:72
&gt; +    static std::unique_ptr&lt;ImageBuffer&gt; create(const FloatSize&amp; size, RenderingMode renderingMode, float resolutionScale = 1, ColorSpace colorSpace = ColorSpaceDeviceRGB /* FIXME sRGB */)

I don’t think you should land this change as part of this patch. The comment isn’t all that valuable. We’re going to remove the ColorSpaceDeviceRGB constant entirely, soon enough.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:989
&gt;          if (m_uncorrectedContentsImage &amp;&amp; m_uncorrectedContentsImage.get() == newImage)

Someone should come back here and figure out:

1) Why we need to null check m_uncorrectedContentsImage. Doesn’t seem we need to.
2) Why we have to say .get() here; that should not be required.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:85
&gt;      static CGColorSpaceRef sRGBSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB);

Are you sure this works on iOS? Did you test it? I seem to recall having a problem with this. Should make sure we also run tests on iOS, not just Mac.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:188
&gt; +        RetainPtr&lt;CGContextRef&gt; context = adoptCF(CGBitmapContextCreate(0, logicalSize().width(), logicalSize().height(), 8, 4 * logicalSize().width(), deviceRGBColorSpaceRef() /* FIXME */, kCGImageAlphaPremultipliedLast));

I don’t think this FIXME is valuable.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:233
&gt;      UNUSED_PARAM(useLowQualityScale);

We should leave out the argument name rather than using UNUSED_PARAM.

&gt; Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:147
&gt; +    CGColorRef colorRef = color.isValid() ? cachedCGColor(color) : 0;

Surprised you didn’t do the nullptr thing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139973</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 08:46:27 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 264939 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264939&amp;action=review
&gt; 
&gt; Looking forward to merging this with my mega-patch after you land it ;)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageBuffer.h:72
&gt; &gt; +    static std::unique_ptr&lt;ImageBuffer&gt; create(const FloatSize&amp; size, RenderingMode renderingMode, float resolutionScale = 1, ColorSpace colorSpace = ColorSpaceDeviceRGB /* FIXME sRGB */)
&gt; 
&gt; I don’t think you should land this change as part of this patch. The comment
&gt; isn’t all that valuable. We’re going to remove the ColorSpaceDeviceRGB
&gt; constant entirely, soon enough.

Agreed; I did&apos;t mean to include the ImageBuffer creation changes as part of the patch. I&apos;ll do them separately (possibly landing first).

&gt; &gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:989
&gt; &gt;          if (m_uncorrectedContentsImage &amp;&amp; m_uncorrectedContentsImage.get() == newImage)
&gt; 
&gt; Someone should come back here and figure out:

Yes!

&gt; 1) Why we need to null check m_uncorrectedContentsImage. Doesn’t seem we
&gt; need to.
&gt; 2) Why we have to say .get() here; that should not be required.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:85
&gt; &gt;      static CGColorSpaceRef sRGBSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB);
&gt; 
&gt; Are you sure this works on iOS? Did you test it? I seem to recall having a
&gt; problem with this. Should make sure we also run tests on iOS, not just Mac.

I will test.

&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:188
&gt; &gt; +        RetainPtr&lt;CGContextRef&gt; context = adoptCF(CGBitmapContextCreate(0, logicalSize().width(), logicalSize().height(), 8, 4 * logicalSize().width(), deviceRGBColorSpaceRef() /* FIXME */, kCGImageAlphaPremultipliedLast));
&gt; 
&gt; I don’t think this FIXME is valuable.

I&apos;ll revert this change.

&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:233
&gt; &gt;      UNUSED_PARAM(useLowQualityScale);
&gt; 
&gt; We should leave out the argument name rather than using UNUSED_PARAM.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:147
&gt; &gt; +    CGColorRef colorRef = color.isValid() ? cachedCGColor(color) : 0;
&gt; 
&gt; Surprised you didn’t do the nullptr thing here.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140140</commentid>
    <comment_count>10</comment_count>
      <attachid>264991</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 19:23:40 -0800</bug_when>
    <thetext>Created attachment 264991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140147</commentid>
    <comment_count>11</comment_count>
      <attachid>264992</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 20:03:28 -0800</bug_when>
    <thetext>Created attachment 264992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140151</commentid>
    <comment_count>12</comment_count>
      <attachid>264994</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 20:20:43 -0800</bug_when>
    <thetext>Created attachment 264994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140160</commentid>
    <comment_count>13</comment_count>
      <attachid>264995</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-06 20:46:02 -0800</bug_when>
    <thetext>Created attachment 264995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140193</commentid>
    <comment_count>14</comment_count>
      <attachid>264995</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-07 10:16:34 -0800</bug_when>
    <thetext>Comment on attachment 264995
Patch

Darin reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140245</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-08 01:11:46 -0800</bug_when>
    <thetext>It broke the Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140255</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-11-08 07:03:25 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; It broke the Windows build.

Simon, was there a reason why you couldn&apos;t let the commit queue land this?  It would have prevented breaking the Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140257</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-11-08 07:05:23 -0800</bug_when>
    <thetext>Via &lt;https://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/91957/steps/compile-webkit/logs/stdio&gt;:

c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\rendering\RenderThemeWin.cpp(895): error C2039: &apos;colorSpace&apos;: is not a member of &apos;WebCore::RenderStyle&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\rendering\RenderingAllInOne.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
  c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\rendering\RenderMediaControls.h(42): note: see declaration of &apos;WebCore::RenderStyle&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\rendering\RenderingAllInOne.cpp)
c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\rendering\RenderThemeWin.cpp(943): error C2039: &apos;colorSpace&apos;: is not a member of &apos;WebCore::RenderStyle&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\rendering\RenderingAllInOne.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
  c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\rendering\RenderMediaControls.h(42): note: see declaration of &apos;WebCore::RenderStyle&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\rendering\RenderingAllInOne.cpp)
c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\rendering\RenderThemeWin.cpp(978): error C2039: &apos;colorSpace&apos;: is not a member of &apos;WebCore::RenderStyle&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\rendering\RenderingAllInOne.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
  c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\rendering\RenderMediaControls.h(42): note: see declaration of &apos;WebCore::RenderStyle&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\rendering\RenderingAllInOne.cpp)

C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\platform\graphics\ca\win\PlatformCALayerWin.cpp(930): error C2660: &apos;WebCore::GraphicsContext::setFillColor&apos;: function does not take 2 arguments [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
  JSWebKitPlaybackTargetAvailabilityEvent.cpp

C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\platform\graphics\win\ImageCGWin.cpp(97): error C2065: &apos;styleColorSpace&apos;: undeclared identifier [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
C:\cygwin\home\buildbot\slave\win-debug\build\Source\WebCore\platform\graphics\win\ImageCGWin.cpp(105): error C2065: &apos;styleColorSpace&apos;: undeclared identifier [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140261</commentid>
    <comment_count>18</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-11-08 07:34:00 -0800</bug_when>
    <thetext>Attempted build fix in r192143:  &lt;http://trac.webkit.org/r192143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140263</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-08 09:11:59 -0800</bug_when>
    <thetext>And another in https://trac.webkit.org/changeset/192144

This is what happens when Windows EWS is broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140264</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-11-08 09:37:53 -0800</bug_when>
    <thetext>In the future, please do tell when you see EWS not processing patches. 

Is it right that this bug is currently open?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140283</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-11-08 17:54:58 -0800</bug_when>
    <thetext>Last build fix in r192145:  &lt;http://trac.webkit.org/r192145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140367</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-09 07:57:46 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Simon, was there a reason why you couldn&apos;t let the commit queue land this? 
&gt; It would have prevented breaking the Windows build.

Commit queue guarantees only the patch builds and tests pass on Apple Mac
platform. But if you land your patch manually, nobody prevents the author
to check https://build.webkit.org/waterfall if everything works fine.

( just to document, the original patch landed in http://trac.webkit.org/changeset/192140 )</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264917</attachid>
            <date>2015-11-05 22:34:17 -0800</date>
            <delta_ts>2015-11-05 23:24:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150967-20151105223315.patch</filename>
            <type>text/plain</type>
            <size>300133</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzMDRmYTY1MDg1ODVm
ZTI5ZjViZjEwMTIzODVlZGIxNTg4ZGY2Mi4uMWIwYTFlODU3MzM3ZmZmNDcxYTMxODI5MGU2YWI4
ZjMxZWM4MjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1MiBAQAorMjAxNS0xMS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29s
b3JTcGFjZSBhcmd1bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSAtd2Via2l0LWNvbG9y
LWNvcnJlY3Rpb24gQ1NTIHByb3BlcnR5IHdhcyByZW1vdmVkIGluIHIxODgyMDIsIGFuZCBDb2xv
clNwYWNlRGV2aWNlUkdCCisgICAgICAgIGFuZCBDb2xvclNwYWNlU1JHQiBhcmUgZnVuY3Rpb25h
bGx5IGVxdWl2YWxlbnQsIHdlIGNhbiByZW1vdmUgYWxsIHRoZSBDb2xvclNwYWNlIGFyZ3VtZW50
cyBwYXNzZWQKKyAgICAgICAgdG8gZHJhd2luZyBmdW5jdGlvbnMsIGFuZCByZW1vdmUgUmVuZGVy
U3R5bGU6OmNvbG9yU3BhY2UoKSwgd2hpY2ggd2FzIGhhcmRjb2RlZCB0byByZXR1cm4gQ29sb3JT
cGFjZVNSR0IuCisgICAgICAgIAorICAgICAgICBGaWxsIGFuZCBzdHJva2UgQ29sb3JTcGFjZXMg
YXJlIGFsc28gcmVtb3ZlIGZyb20gZ3JhcGhpY3Mgc3RhdGUsIHNpbXBsaWZ5aW5nIGNvbG9yIHNh
dmUvcmVzdG9yZS4KKyAgICAgICAgCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fy
ZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW06CisgICAgICAgIChfcGxhdGZvcm1Db2xvcik6CisgICAgICAgICogaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFp
bnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVk
RHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIpOgorICAgICAgICAq
IHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpkZWZhdWx0
UGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpw
YWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVDb2Nv
YTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdDcm9zc2ZhZGVT
dWJpbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
dyk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFn
ZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UmFpc2VkRWxsaXBzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rp
bGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3cpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VDb2xvclNwYWNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbENvbG9yU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6c2V0Q2FjaGVkU2hh
ZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZElu
c2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0Js
dXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0JsdXI6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
UGxheWVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6
OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZp
bGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3Jt
U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmxlYWtDR0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldENHRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tl
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xv
clNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVNZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zm
c2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUFscGhhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRy
YXdMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVHcmlkVGlsZTo6c2hvd0JvcmRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToK
KyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1
bGxzY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnNl
dFVwT3ZlcmhhbmdBcmVhQmFja2dyb3VuZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmlld0ludG9Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRl
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9T
Y3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
b2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENvbXBv
c2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
TWF0Y2hNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRDb21w
b3NpdGlvblVuZGVybGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCb3hTaGFkb3dGb3JCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxz
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZp
bGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRD
b250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJvcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFn
ZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F4
aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFNs
aWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dy
ZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxv
YWRJY29uRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVj
b3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNo
b3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9yRm9y
QXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50TGF5b3V0OjpsYXlPdXRT
dWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlvbkdh
cCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnREZWJ1Z0JvcmRlcnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHcmFwaGljc0Nv
bnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGllcjo6
U2hhZG93QXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93cyk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE1lbmNsb3NlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290OjpwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6
Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1h
Z2U6OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQ
YXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5k
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3Jl
Z3JvdW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VG
b3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUtMTEt
MDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJl
dmlldyBvbiBhcHBsZS5jb20vY29udGFjdCB3aXRoIGFsbCB0ZXh0IHNlbGVjdGVkIHNob3dzIGEg
bWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTBiMGFkZDAzNWQxZTE5ODljZjI0ZWYzNzdiODYwNjZk
OWE2MzgwMi4uY2MyMmQ3NjhhMjBlM2Y2YmU2MWIwMmZhMmUyMTJiYTUxODIyNTQ4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3Vt
ZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBD
U1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VS
R0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVu
dCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAg
ICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JT
cGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmll
dyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tOgor
CiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXhlZCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTE5MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGUx
ODNhNDc5ZTczOTc1MTRjMjA3MGI0NzU1YzZkYWJiYWU4NWFmZC4uNDFkZmQzZDBjYjFhNjNlNTFk
NmFmZTNiZDBiNmYzZDE3ZjkxMjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
dGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4g
cjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VT
UkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENv
bG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywg
YW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVk
IHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJp
bmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9udDp0
ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAqIFdlYkluc3BlY3Rv
ci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdodFZp
ZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJOb2Rl
SGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFja2dy
b3VuZENvbG9yXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAg
ICgtW1dlYkZyYW1lVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkluZGlj
YXRlTGF5ZXIubW06CisKIDIwMTUtMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV0sxXSBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcgQmxpbmsgbGF5
b3V0IHRlc3QgZWRpdGluZy9pbnB1dC90ZXh0LWlucHV0LWNvbnRyb2xsZXItbm8tZWRpdGFibGUt
bm8tY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhMGRkZDQ3MjQ2MmU5YTE0M2RiNTUzYmFhNWQ1
ZTQzZGRhMjhhZTQuLjk4MDQ5MDAxOTg3OGNiMWNkOWUwZjM4ZGYxYmRiNjQxMWJhZWQzNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNS0xMS0wNSAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JTcGFjZSBhcmd1bWVu
dCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6CisgICAg
ICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9Db250ZXh0
TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0
RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBk
YXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNwZWN0
b3JIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcg
X2xheW91dEZvck5vZGVIaWdobGlnaHQ6b2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcgX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0XSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9s
bGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5kaWNh
dG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9z
aXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0xMS0wNSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2aWV3IG9uIGFwcGxlLmNvbS9j
b250YWN0IHdpdGggYWxsIHRleHQgc2VsZWN0ZWQgc2hvd3MgYSBtYXAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCBiZTc1ZGM2ZWY2NmYxMGE0ODliZDI4
NDZjNjkyNGM3NzI2MDYwMjNiLi4yMzFhMzJkNmFhNTBiMzUxYzVhM2EwOTYyOGRiNjlhNTA3MDk0
ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0x
MjYsNyArMTI2LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShS
ZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICAgICAgcmV0dXJuIElt
YWdlOjpudWxsSW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgPSBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICB0ZXh0dXJlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCpp
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKKyAgICB0ZXh0dXJlLT5jb250
ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3Jl
YXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92ZSh0ZXh0
dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGE3
MWU4YjViOWIxMTEyZTVhM2RiZDNkNjg1ZWVmY2U0MDRlM2Y4N2IuLjZlNGIzMWVmMzM2OGI2ZWJh
M2E1OTc4YWRiZGQ5NmRjODJlMTFjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCkBAIC0xNTcwLDcgKzE1NzAsNiBAQCB2b2lkIENhcmV0QmFzZTo6cGFpbnRD
YXJldChOb2RlKiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBv
aQogICAgICAgICByZXR1cm47CiAKICAgICBDb2xvciBjYXJldENvbG9yID0gQ29sb3I6OmJsYWNr
OwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0I7CiAgICAg
RWxlbWVudCogZWxlbWVudCA9IGlzPEVsZW1lbnQ+KCpub2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+
KG5vZGUpIDogbm9kZS0+cGFyZW50RWxlbWVudCgpOwogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJs
ZUVsZW1lbnQgPSBub2RlLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAKQEAgLTE1ODMsMTcgKzE1
ODIsMTQgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9kZSogbm9kZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAgICAgICAgIGF1dG8gZWxlbWVu
dEJHQ29sb3IgPSBlbGVtZW50U3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmIChkaXNhcHBlYXJzSW50b0JhY2tncm91
bmQoZWxlbWVudEJHQ29sb3IsIHJvb3RFZGl0YWJsZUJHQ29sb3IpKSB7CiAgICAgICAgICAgICAg
ICAgY2FyZXRDb2xvciA9IHJvb3RFZGl0YWJsZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAgICAgICAgICBjb2xvclNwYWNlID0gcm9vdEVkaXRh
YmxlU3R5bGUuY29sb3JTcGFjZSgpOwogICAgICAgICAgICAgICAgIHNldFRvUm9vdEVkaXRhYmxl
RWxlbWVudCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFz
ZXRUb1Jvb3RFZGl0YWJsZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKCFzZXRUb1Jvb3RFZGl0YWJs
ZUVsZW1lbnQpCiAgICAgICAgICAgICBjYXJldENvbG9yID0gZWxlbWVudC0+cmVuZGVyZXIoKS0+
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7Ci0gICAgICAg
ICAgICBjb2xvclNwYWNlID0gZWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS5jb2xvclNwYWNl
KCk7Ci0gICAgICAgIH0KICAgICB9CiAKLSAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJl
dENvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENv
bG9yKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQppbmRleCBkM2Q0NjVmYjdkMDQ3ZDM4MmE1NTViODI1NmZiNDgwMzI4MWYzZDhlLi43NWRiNzFk
NDAxNTlkOTQ4YWZhODE4Y2FkNTZlNTdmODQyMTc4MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC04NzMsNyArODczLDcgQEAgc3RhdGlj
IE5TQnVuZGxlICpfd2ViS2l0QnVuZGxlKCkKIAogc3RhdGljIGlubGluZSBVSUNvbG9yICpfcGxh
dGZvcm1Db2xvcihDb2xvciBjb2xvcikKIHsKLSAgICByZXR1cm4gW2dldFVJQ29sb3JDbGFzcygp
IF9kaXNhbWJpZ3VhdGVkX2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dD
b2xvcihjb2xvciwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQildOworICAgIHJldHVybiBb
Z2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07CiB9CiAjZWxzZQogc3RhdGljIGlubGluZSBO
U0NvbG9yICpfcGxhdGZvcm1Db2xvcihDb2xvciBjb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNTcyNGMxYWEyYTdmZGFiY2JhMDQ2MDZjMjVhMzM0
OWUyNDFiMzFhMS4uYzBmYjQ4YmZhNGJmNjFhZjhlMzNmYzY3MDQ5ZDExYmQ2YmRkYTdiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTM4OCw5ICszODgs
OSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5U
QVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9y
aWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAj
ZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgc25hcHBl
ZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24s
IHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBzbmFwcGVkSW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0
KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAppbmRleCBiMTlkOWUwZGM3MDNkNTU1M2Y3MzI2MjEzM2MyMGM5NGY2MjhjNzlmLi5kMmJkZDBi
YzI1MjQxNWE4NmMyODcxNDhiNWNiMTJiZTMwYTY2NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEx
NTQsNyArMTE1NCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3Qo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlCiAgICAgaWYgKHNob3VsZERy
YXdTaGFkb3dzKCkpIHsKICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICBzYXZlZCA9
IHRydWU7Ci0gICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhGbG9hdFNpemUoKSwgMCwg
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4
dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwog
ICAgIH0KICAgICBpZiAoc3RhdGUoKS5nbG9iYWxBbHBoYSAhPSAxKSB7CiAgICAgICAgIGlmICgh
c2F2ZWQpIHsKQEAgLTEzMTksOSArMTMxOSw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjphcHBseVNoYWRvdygpCiAgICAgaWYgKHNob3VsZERyYXdTaGFkb3dzKCkpIHsKICAgICAg
ICAgZmxvYXQgd2lkdGggPSBzdGF0ZSgpLnNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICBm
bG9hdCBoZWlnaHQgPSBzdGF0ZSgpLnNoYWRvd09mZnNldC5oZWlnaHQoKTsKLSAgICAgICAgYy0+
c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkuc2hhZG93
Qmx1ciwgc3RhdGUoKS5zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IGMtPnNldExlZ2FjeVNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLnNo
YWRvd0JsdXIsIHN0YXRlKCkuc2hhZG93Q29sb3IpOwogICAgIH0gZWxzZQotICAgICAgICBjLT5z
ZXRMZWdhY3lTaGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhGbG9hdFNpemUoKSwg
MCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIH0KIAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNob3VsZERyYXdTaGFkb3dzKCkgY29uc3QKQEAgLTE0NDgsMTcgKzE0NDgsMTcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBp
bWFnZUVsZW1lbnQsIGNvbnN0IEYKICAgICB9CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFz
KG5vcm1hbGl6ZWREc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdl
KCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMo
KTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKSB7Ci0gICAg
ICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcCk7CisgICAgICAg
IGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBvcCk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsK
ICAgICB9IGVsc2UgaWYgKG9wID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52
YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
bm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6
ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJs
ZW5kTW9kZSkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbm9ybWFs
aXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwg
YmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RS
ZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9k
ZSkpOwogICAgICAgICBkaWREcmF3KG5vcm1hbGl6ZWREc3RSZWN0KTsKICAgICB9CiAgICAgCkBA
IC0xNTM2LDE3ICsxNTM2LDE3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJjZUNhbnZhcywgY29uc3QKICNlbmRpZgogCiAg
ICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1h
Z2VCdWZmZXIoKmJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xv
YmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3Qs
IHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBz
dGF0ZSgpLmdsb2JhbEJsZW5kKSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21w
b3NpdGUpKSB7Ci0gICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpidWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29t
cG9zaXRlKTsKKyAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwg
ZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAgICBkaWRE
cmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBz
cmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3Rh
dGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwg
ZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21w
b3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAg
ICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQp
KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiB9CkBAIC0xNjEyLDcgKzE2MTIs
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0Vs
ZW1lbnQqIHZpZGVvLCBjb25zdCBGbG9hdFJlYwogCiAjaWYgVVNFKENHKQogICAgIGlmIChQYXNz
TmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
KSB7Ci0gICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52
aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgRmxv
YXRTaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgpKSwgZHN0UmVj
dCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCiAg
ICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgICAgIGVsc2UKQEAgLTE3MjYs
MjEgKzE3MjYsMjEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWMKICAgICBjLT5jbGlwT3V0KGJ1
ZmZlclJlY3QpOwogICAgIGMtPmNsZWFyUmVjdChjYW52YXNSZWN0KTsKICAgICBjLT5yZXN0b3Jl
KCk7Ci0gICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
YnVmZmVyUmVjdC5sb2NhdGlvbigpLCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CisgICAgYy0+
ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyUmVjdC5sb2NhdGlvbigpLCBzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSk7CiAgICAgYy0+cmVzdG9yZSgpOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3
SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFn
ZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCiB7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dCwgc3JjLCBvcCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3QsIHNyYywgb3Ap
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7Ci0g
ICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwg
ZGVzdCwgc3JjLCBvcCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IGRlc3QsIHNyYywgb3ApOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkICBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit0ZW1wbGF0ZTxjbGFzcyBUPiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1h
Z2UoVCYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIEFTU0VSVChpc0Z1bGxDYW52YXNDb21wb3Np
dGVNb2RlKG9wKSk7CiAKQEAgLTE3NjYsNyArMTc2Niw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZv
aWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1h
Z2UoCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldC53aWR0
aCgpLCBjcm9wcGVkT2Zmc2V0LmhlaWdodCgpKTsKICAgICBidWZmZXItPmNvbnRleHQoKS5jb25j
YXRDVE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKLSAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2Us
IGJ1ZmZlci0+Y29udGV4dCgpLCBzdHlsZUNvbG9yU3BhY2UsIGFkanVzdGVkRGVzdCwgc3JjLCBD
b21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZl
ci0+Y29udGV4dCgpLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAK
ICAgICBjb21wb3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpAQCAtMjQ0
MCw4ICsyNDQwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50
ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgICAgIEZsb2F0
U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgICBmbG9hdCBzaGFkb3dSYWRpdXM7CiAgICAg
ICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICAgICAgICAgIENvbG9yU3BhY2Ugc2hhZG93
Q29sb3JTcGFjZTsKLSAgICAgICAgICAgIGMtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d1JhZGl1cywgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICAgICAgYy0+
Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KG1hc2tSZWN0KTsKICAgICAgICAgICAgIHNo
YWRvd1JlY3QuaW5mbGF0ZShzaGFkb3dSYWRpdXMgKiAxLjQpOwpAQCAtMjQ1MCwxMiArMjQ0OSwx
MiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogCiAgICAgICAgICAgICBzaGFkb3dPZmZzZXQg
Kz0gb2Zmc2V0OwogCi0gICAgICAgICAgICBjLT5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAg
ICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93
Q29sb3IpOwogCiAgICAgICAgICAgICBpZiAoZmlsbCkKLSAgICAgICAgICAgICAgICBjLT5zZXRG
aWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
ICAgICBjLT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjLT5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFj
ayk7CiAKICAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQoKmMsIHRleHRSdW4sIGxv
Y2F0aW9uICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7
CiAgICAgICAgIH0KQEAgLTI0NjcsOSArMjQ2Niw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxv
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+
Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgbWFza0ltYWdlQ29u
dGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggODczZjY0M2VlODcxOTliZjZjNDhhNjM4NDAyYjky
ODQxNTk0NTNkOS4uZDY5OTliZjNjM2ZlMDZlYzI1N2QwNzA1Y2I5MzAwNmQzN2MxMTgxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiQ2FudmFzU3R5bGUuaCIKICNpbmNsdWRlICJDb2xvci5oIgotI2lu
Y2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMzY3LDcgKzM2
Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYp
IGNvbnN0OwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRl
ZERyYXdJbWFnZShUJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgcHJlcGFyZUdyYWRpZW50
Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50JiBncmFkaWVudCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCBkMzU4YTIxNzk1ODgzOTZi
ZmI3MGE1ZmQ3Y2ViNTI4MDI0ZmUzOTE5Li5iNjgzYTJlYTY5OWViYWNhOGEzNjUyMTczNmU3YTA4
NTJkN2YxYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3Bw
CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICBzd2l0
Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgUkdCQToKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IobV9yZ2JhLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IobV9yZ2JhKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTogewog
ICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdy
YXBoaWNzQ29udGV4dCBBUEkuCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6
YXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAjaWYgVVNF
KENHKQogICAgICAgICBDR0NvbnRleHRTZXRDTVlLU3Ryb2tlQ29sb3IoY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIG1fY215a2EtPmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2Et
PmssIG1fY215a2EtPmEpOwogI2Vsc2UKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jbXlrYS0+cmdiYSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKG1fY215a2EtPnJnYmEpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICBzd2l0
Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgUkdCQToKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKG1fcmdiYSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQtPnNldEZp
bGxDb2xvcihtX3JnYmEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAg
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhp
Y3NDb250ZXh0IEFQSS4KQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBs
eUZpbGxDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAjaWYgVVNFKENHKQog
ICAgICAgICBDR0NvbnRleHRTZXRDTVlLRmlsbENvbG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCBtX2NteWthLT5jLCBtX2NteWthLT5tLCBtX2NteWthLT55LCBtX2NteWthLT5rLCBtX2Nt
eWthLT5hKTsKICNlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX2NteWthLT5y
Z2JhLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KG1fY215a2EtPnJnYmEpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKaW5kZXggNjZiZmM5MDVlMmFjYmMwYzIzODg1ODcyNmQ4NGIzY2ZmMDdlNWJjYy4uMzMw
Yzk1MDRiMDc2OWQ5NDA3MjMxN2RkZDI5OTNkMjk4YjlmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
QEAgLTMxNzYsNyArMzE3Niw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmIGltYWdlLCBpCiAKICAgICBGbG9h
dFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7CiAgICAgRmxvYXRSZWN0
IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7Ci0gICAgYnVmLT5jb250ZXh0KCkuZHJhd0lt
YWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAg
YnVmLT5jb250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAg
cmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCBjYWU0
M2RhZDZhNzQwODA0MDc0ZWViMzdiYThjNDk5N2Y0YzBkNGNjLi4wZWNmODNkOTY5N2Y2NmQyYWZh
MzdiZmJhN2QxZDlhNjg2NGY3ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVy
KGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIENvbG9yU3BhY2VT
UkdCKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICBmb3IgKGF1dG8g
cmVjdCA6IG1fcmVnaW9uLT5yZWN0cygpKSB7CiAgICAgCiAgICAgICAgIGlmIChyZWN0LmludGVy
c2VjdHMoZGlydHlSZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAxMjI5NjRh
NzllZGJiYzRlYmE5ZDk3MTNhZWM1Mzg1N2I3ZjY2ZTgzLi5iNmY2OWI1OWEyYzgwZTFhYmIzN2Nl
NTFiOTcxMTQ2MzA2ODdjYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzM2
LDcgKzM3MzYsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZQogCiAgICAgaWYgKG1fc2Nyb2xs
Q29ybmVyKSB7CiAgICAgICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJl
Y3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWlu
dEludG9SZWN0KGNvbnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzQ5LDcgKzM3NDksNyBAQCB2b2lkIEZyYW1lVmll
dzo6cGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIGJh
ciwgY29uc3QgSQogICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBmcmFtZSgpLmlz
TWFpbkZyYW1lKCkpIHsKICAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJhbWVSZWN0KCk7
CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpKTsK
ICAgICB9CiAKICAgICBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihjb250ZXh0LCBiYXIsIHJl
Y3QpOwpAQCAtNDAxNyw3ICs0MDE3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QKICAgICAg
ICAgZmlsbFdpdGhSZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChmaWxsV2l0aFJlZCkKLSAgICAg
ICAgY29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3QsIENvbG9yKDB4RkYsIDAsIDApLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3QsIENvbG9y
KDB4RkYsIDAsIDApKTsKICNlbmRpZgogCiAgICAgaWYgKG1fbGF5b3V0UGhhc2UgPT0gSW5WaWV3
U2l6ZUFkanVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCAyNjM3NTEx
NDQ2MDc1OGFhNjc0YThiMjIyMzdjYTVhYTEzZGM5ZWJlLi4wMzQ2ODlhY2I3ZjkwOTFkOTAzNzFk
NzMwZGY5MTliMTc2NGRkZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBA
IC0zMzcsNyArMzM3LDcgQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91
bmRhcmllcyhGcmFtZSYgZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgZ3IKICAgICBpbnQgdG90YWxI
ZWlnaHQgPSBwYWdlUmVjdHMuc2l6ZSgpICogKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKyAx
KSAtIDE7CiAKICAgICAvLyBGaWxsIHRoZSB3aG9sZSBiYWNrZ3JvdW5kIGJ5IHdoaXRlLgotICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Io
MjU1LCAyNTUsIDI1NSkpOwogICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChGbG9hdFJlY3Qo
MCwgMCwgcGFnZVdpZHRoLCB0b3RhbEhlaWdodCkpOwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LnNh
dmUoKTsKQEAgLTM1Niw4ICszNTYsOCBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdl
c1dpdGhCb3VuZGFyaWVzKEZyYW1lJiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncgogICAgICAg
ICAgICAgaW50IGJvdW5kYXJ5TGluZVkgPSBjdXJyZW50SGVpZ2h0IC0gMTsKICNlbmRpZgogICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwg
MjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CisgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDI1NSkpOwogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LmRyYXdMaW5lKEludFBvaW50KDAsIGJvdW5kYXJ5TGluZVkpLCBJbnRQb2ludChw
YWdlV2lkdGgsIGJvdW5kYXJ5TGluZVkpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5y
ZXN0b3JlKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
aW5kZXggMTVhMGJiMWQwYzI0ZGQzMWVjYzI5M2Q0NzgxNmQyNWI0YmNhYzgzMi4uZGRlZGU2NTFk
OGQ4NDUxNzFjNmIyMDBlNmRjNjYxYWI0NzhmOTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAKQEAgLTExODMsNyArMTE4Myw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFp
bnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBJbnRQb2ludCBp
Y29uR0NQb2ludCA9IG1fcGFuU2Nyb2xsSWNvblBvaW50OwogICAgIGlmIChwYXJlbnQoKSkKICAg
ICAgICAgaWNvbkdDUG9pbnQgPSBwYXJlbnQoKS0+d2luZG93VG9Db250ZW50cyhpY29uR0NQb2lu
dCk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnBhblNjcm9sbEljb24sIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGljb25HQ1BvaW50KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNv
biwgaWNvbkdDUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4IGU1NGM0NmFhMWNmZjI2NDc0OWM3OTg0NDhmNWI0YzA3
Y2MzOTlmMzkuLmNhZTUyOTk0MzJjZjhlYjg0OGJjMzAwMmU3YTU1NWUyOTQ1ZDU1NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtODUsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciYsIFNjcm9s
bGJhclBhcnQpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9s
bFZpZXcqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJl
Y3QpIHsgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOyB9Ci0g
ICAgc3RhdGljIHZvaWQgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBjb250ZXh0LmZpbGxSZWN0KGNv
cm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KKyAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVj
dCwgQ29sb3I6OndoaXRlKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNw
cAppbmRleCA3MmYyYTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJkYTdmLi40NmQ5ZWU2
NzJkMzc3ZjU4MjNkYzEzN2ZmMzIzYjRhMzU5ZmNkNWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjIsNyArMjYy
LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXIm
IHNjcm9sbGJhcikKIAogdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxD
b3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29ybmVyUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUmVjdChjb3Ju
ZXJSZWN0LCBDb2xvcjo6d2hpdGUpOwogfQogCiBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjp0aHVtYlJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCkBAIC0yODEsMTEgKzI4MSwxMSBA
QCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlJlY3QoU2Nyb2xsYmFyJiBz
Y3JvbGxiYXIpCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdB
cmVhcyhTY3JvbGxWaWV3JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5n
UmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogeyAgICAKLSAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgY29udGV4dC5maWxsUmVjdChpbnRlcnNlY3Rpb24oaG9y
aXpvbnRhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CiAKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2Fs
T3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcApp
bmRleCAzOTA2MzQyZjUxMzJkNzVjNjdiYzIzNDNjMTk1NDYxMTYyOTM1NjhkLi4xOTM0YjM1NjUz
MjUxZTM4M2Y0ODg1OWMxMTcyMDdlNjJjZjg5NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUu
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgVGhlbWU6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0
cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0
KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAKICAgICAv
LyBEcmF3IGEgZ2VuZXJpYyBXaXJlbGVzcyBQbGF5YmFjayBpY29uLgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IDhmY2NkYzVmZjU5ODNhMThh
ZGMxZGE3ZTEzNjg3OGU2OGVkMDc1NjguLjMxNGVlZDUzMTUzYTE3MDk3ZmExOTZlOTNkYzc3MDI0
NzFmNGVlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgVGhlbWVDb2NvYTo6ZHJhd05hbWVkSW1hZ2UoY29u
c3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAgICAgfQogCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIEZsb2F0U2l6ZSB3
aXJlbGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9Cb3go
Y29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCAwMDUz
M2FmMzk3Yzc4NTk1ZGJlNDI2Yjc3OTg0YjY2NDUyMTJhM2JjLi4zZWExYjVmODk0NzljMTQ0OGQy
MGQ4ZDYyNTQ5ZTY1NzIzMWI4YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02MDcsMTMgKzYwNywxMyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghY3R4dC5kcmF3THVtaW5hbmNlTWFzaygpKSB7
Ci0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CisgICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewpAQCAtNjI3LDcgKzYyNyw3IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCwKICAgICAgICAgLy8gVGVtcG9yYXJpbHkgcmVzZXQgaW1hZ2Ug
b2JzZXJ2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgY2hhbmdlSW5SZWN0KCkgY2Fs
bHMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIobnVsbHB0
cik7CiAKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3QsIHRpbGVSZWN0
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpKTsKKyAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3QsIHRpbGVS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKICAg
ICAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgICAgIGJ1ZmZlci0+Y29udmVy
dFRvTHVtaW5hbmNlTWFzaygpOwpAQCAtNjM4LDcgKzYzOCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwKICAgICB9CiAKICAgICBjdHh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAg
ICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA0MGZj
NzRhMzkyZDRkNjY4OTcyOTgwYmZjMWNhZTQwOWJlMGM2M2ViLi44OTFlOGM0MjNjYzU2YmFlZGM0
OWY4OTM1OTdhZGYxY2E4NTQyZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlkZTsKKyAgICAgICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCkgb3ZlcnJpZGU7CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3Jt
YXRzLgogCkBAIC0yMDEsMTMgKzIwMSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBP
UlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSAwKTsKIAogI2lmIFBMQVRGT1JNKFdJTikK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwogCiAjaWYgVVNF
KFdJTkdESSkKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sCi0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKICNlbmRpZgogCiAgICAgc2l6ZV90IGN1cnJlbnRGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCBkMWQ0ZTcyNzcwMGQ5ZTI4YzBjZmRiMzU0ZWJiOWM5
Y2FmOWQxODc1Li5jZjJmODBiYTk0N2I2ZTNjNWVhZDY0ZWI4NWY1N2VkNGIyMmNhMmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTIxNiw3ICsyMTYsNyBA
QCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogdWlu
dDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90KTsKIAogI2lmIFVTRShDRykKLVdFQkNPUkVf
RVhQT1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OworV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CiAjZW5kaWYKIAogaW5saW5lIFJHQkE6OlJHQkEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmlu
ZGV4IDQzNjgyYjBkN2VlNDcyNDhlMjY0ZTVlOGE2YjJkNDViZWE3ODI2ODQuLjU3ZTNmMWE0ZjE5
MDZhMjY2OWZmZmZkZDIwMTU1OWNiM2ViNWNhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKIAogICAgIGlmICh0YXJn
ZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUodGFy
Z2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUuaGVpZ2h0KCkg
LyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1h
Z2UsIEludFBvaW50KCkpOwogCiAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKQogICAgICAg
ICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CkBAIC04Myw3ICs4Myw3IEBAIHZvaWQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBj
b250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHMKICAgICBkcmF3Q3Jvc3NmYWRl
KGNvbnRleHQpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UgogICAgIGRyYXdDcm9zc2ZhZGUoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIC8vIFRpbGUg
dGhlIGltYWdlIGJ1ZmZlciBpbnRvIHRoZSBjb250ZXh0LgotICAgIGltYWdlQnVmZmVyLT5kcmF3
UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAg
ICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOwog
fQogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggODAyODM0NDgwYmViM2Y1MGU4ODhkMGEzOTMz
ODdjNWViN2FmZWU4Ni4uOGFlYmJjNTczNzE0NjBjYjdkYjMzNDA4NGYxNDRkZGRlZDQ3MzBhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9zc2ZhZGVT
aXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRN
b2RlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkg
b3ZlcnJpZGU7CiAKICAgICBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdl
LCBJbWFnZSYgdG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9z
c2ZhZGVTaXplLCBjb25zdCBGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggYjEwMjNiMGFkOWU1MTI4OWI1
MGI1MmI1NWFmYTg3NDgwNDBkZjhjMS4uMGMwMzhkOTk2MmY1NDFhMGU0ZTI1YTBkNjgyZWVhZjEz
ZmIzNGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7
IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGUgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUpIG92ZXJyaWRlID0gMDsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOwogCiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIHZpcnR1YWwgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcAppbmRleCBmNWNlYjcwNTMzYTYzZTU4ZDQ3ZTlhMmI5YTY1Y2M3ZTQ1MWNhMjdlLi4zNzI2
OTFhOWIyYjc1ZmU5MzFkNTFmZmNkYTBiMWE0MzkwMTk0ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgpCiB7CiB9CiAKLXZvaWQgR3JhZGll
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQu
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpAQCAtNTcsNyAr
NTcsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogfQogCiB2b2lkIEdyYWRpZW50SW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3ZpZGUgdmlzdWFs
bHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgog
ICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC05Miw3ICs5Miw3IEBAIHZv
aWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzCiAgICAgZGVzdENvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1h
c2soZmFsc2UpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRl
eHQuCi0gICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFk
anVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgc3R5bGVD
b2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwg
YWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRlc3RSZWN0
LCBibGVuZE1vZGUpOwogfQogCiB2b2lkIEdyYWRpZW50SW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYg
dHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVu
dEltYWdlLmgKaW5kZXggMDU4MjhmNWE4NDk2ODk5NTRkY2MzOGI2NTc0MDE3NmE1OWIzNGQ5ZC4u
OTI1MDlmYjFlYzUyYzRmNzMyMTQ4N2U0OGI4ZWZjNjgyM2M1ZTFmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaApAQCAtNDYsOSArNDYs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+R3JhZGllbnRJbWFnZSgpOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAg
ICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKSBv
dmVycmlkZTsKIAogICAgIEdyYWRpZW50SW1hZ2UoUGFzc1JlZlB0cjxHcmFkaWVudD4sIGNvbnN0
IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAyMzA5ZjVkZDVkZDU2ZjY4ZjFlMWVlNDZlNWNl
MTdhNDcxNjY3NzFmLi4zODg4OWM0NzQwNWUzMjcxMTJmNGY5NjE5OWNkM2FlZjMyOGE4ZDIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKQEAgLTE0MiwyMCArMTQyLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0
b3JlKCkKICAgICByZXN0b3JlUGxhdGZvcm1TdGF0ZSgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgZWxsaXBzZUNvbG9yLCBDb2xvclNwYWNlIGVsbGlwc2VDb2xvclNwYWNlLCBjb25zdCBDb2xv
ciYgc2hhZG93Q29sb3IsIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3UmFpc2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IENvbG9yJiBlbGxpcHNlQ29sb3IsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcikKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzYXZlKCk7CiAK
LSAgICBzZXRTdHJva2VDb2xvcihzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7Ci0gICAg
c2V0RmlsbENvbG9yKHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBzZXRTdHJv
a2VDb2xvcihzaGFkb3dDb2xvcik7CisgICAgc2V0RmlsbENvbG9yKHNoYWRvd0NvbG9yKTsKIAog
ICAgIGRyYXdFbGxpcHNlKEZsb2F0UmVjdChyZWN0LngoKSwgcmVjdC55KCkgKyAxLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKIAotICAgIHNldFN0cm9rZUNvbG9yKGVsbGlwc2VDb2xv
ciwgZWxsaXBzZUNvbG9yU3BhY2UpOwotICAgIHNldEZpbGxDb2xvcihlbGxpcHNlQ29sb3IsIGVs
bGlwc2VDb2xvclNwYWNlKTsKKyAgICBzZXRTdHJva2VDb2xvcihlbGxpcHNlQ29sb3IpOworICAg
IHNldEZpbGxDb2xvcihlbGxpcHNlQ29sb3IpOwogCiAgICAgZHJhd0VsbGlwc2UocmVjdCk7ICAK
IApAQCAtMTc0LDM0ICsxNzQsMzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0
eWxlKFN0cm9rZVN0eWxlIHN0eWxlKQogICAgIHNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoc3R5bGUp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIG1fc3RhdGUuc3Ryb2tlQ29s
b3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLnN0cm9rZUNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwog
ICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRyOwogICAgIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybiA9IG51bGxwdHI7Ci0gICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb2xvciwgY29s
b3JTcGFjZSk7CisgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb2xvcik7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0
IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQg
Ymx1ciwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0g
b2Zmc2V0OwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgbV9zdGF0ZS5zaGFk
b3dDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSA9IGNvbG9yU3Bh
Y2U7Ci0gICAgc2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvciwgY29sb3JTcGFj
ZSk7CisgICAgc2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvcik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMZWdhY3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUm
IG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIG1fc3RhdGUu
c2hhZG93T2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IGJsdXI7CiAg
ICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IGNvbG9yOwotICAgIG1fc3RhdGUuc2hhZG93Q29sb3JT
cGFjZSA9IGNvbG9yU3BhY2U7CiAjaWYgVVNFKENHKQogICAgIG1fc3RhdGUuc2hhZG93c1VzZUxl
Z2FjeVJhZGl1cyA9IHRydWU7CiAjZW5kaWYKLSAgICBzZXRQbGF0Zm9ybVNoYWRvdyhvZmZzZXQs
IGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRQbGF0Zm9ybVNoYWRvdyhvZmZzZXQs
IGJsdXIsIGNvbG9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkK
QEAgLTIwOSwxNiArMjA2LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygp
CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoKTsKICAgICBtX3N0YXRlLnNo
YWRvd0JsdXIgPSAwOwogICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBDb2xvcigpOwotICAgIG1f
c3RhdGUuc2hhZG93Q29sb3JTcGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0I7CiAgICAgY2xlYXJQ
bGF0Zm9ybVNoYWRvdygpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlJiBj
b2xvclNwYWNlKSBjb25zdAorYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICBvZmZz
ZXQgPSBtX3N0YXRlLnNoYWRvd09mZnNldDsKICAgICBibHVyID0gbV9zdGF0ZS5zaGFkb3dCbHVy
OwogICAgIGNvbG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xvcjsKLSAgICBjb2xvclNwYWNlID0gbV9z
dGF0ZS5zaGFkb3dDb2xvclNwYWNlOwogCiAgICAgcmV0dXJuIGhhc1NoYWRvdygpOwogfQpAQCAt
MjQxLDEzICsyMzYsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6Om11c3RVc2VTaGFkb3dCbHVy
KCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0
ZS5maWxsQ29sb3IgPSBjb2xvcjsKLSAgICBtX3N0YXRlLmZpbGxDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5m
aWxsUGF0dGVybiA9IG51bGxwdHI7Ci0gICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29sb3IsIGNv
bG9yU3BhY2UpOworICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbG9yKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykK
QEAgLTM3OCwxMiArMzcyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQo
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVu
cy5kZWxldGVSdW5zKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1h
Z2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKIHsKLSAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0
UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Uuc2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
aW1hZ2Uuc2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZShpbWFn
ZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2lu
YWxTaXplKCkpOwpAQCAtMzkxLDI5ICszODUsMjkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXQK
ICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7CiAjZW5k
aWYKICAgICAgICAgCi0gICAgZHJhd0ltYWdlKGltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlv
biwgc3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZShpbWFnZSwg
ZGVzdGluYXRpb24sIHNyY1JlY3QsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3Vs
ZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVy
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBp
bWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJw
b2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
dXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUpOwor
ICAgIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUs
IHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCiAg
ICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQpAQCAtNDIxLDMyICs0MTUsMzIgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdAogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJ
bWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxlLgotICAgICAg
ICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlG
b3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNj
YWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0g
ICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVG
YWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9j
b21wb3NpdGVPcGVyYXRvcik7CisgICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24s
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSAg
ICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIGNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0aW5hdGlv
biwgaW1hZ2UubG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLmxv
Z2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlQnVmZmVy
KGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5sb2dpY2FsU2l6ZSgpKSwgaW1hZ2VQYWludGluZ09w
dGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlv
bnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0
U2l6ZShpbWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBk
cmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIGRlc3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBGbG9hdFNpemUoaW1hZ2UubG9naWNhbFNpemUoKSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
IGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxv
dwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7
Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNvdXJjZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNj
YWxlKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAt
NTA5LDI5ICs1MDMsMjkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIGdyYWRpZW50LmZpbGwodGhp
cywgcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBDb21wb3Np
dGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAg
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOwotICAgIGZpbGxSZWN0KHJlY3Qs
IGNvbG9yLCBzdHlsZUNvbG9yU3BhY2UpOworICAgIGZpbGxSZWN0KHJlY3QsIGNvbG9yKTsKICAg
ICBzZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKIHsKICAgICBpZiAocmVjdC5pc1JvdW5kZWQoKSkgewogICAgICAgICBzZXRDb21wb3Np
dGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9kZSk7Ci0gICAgICAgIHBs
YXRmb3JtRmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAg
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IpOwogICAgICAgICBzZXRDb21wb3Np
dGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKCkpOwogICAgIH0gZWxzZQotICAgICAgICBm
aWxsUmVjdChyZWN0LnJlY3QoKSwgY29sb3IsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wZXJhdGlv
bigpLCBibGVuZE1vZGUpOworICAgICAgICBmaWxsUmVjdChyZWN0LnJlY3QoKSwgY29sb3IsIGNv
bXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUpOwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVT
RShDQUlSTykKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTU0NiwxNSArNTQwLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvCiAKICAgICBXaW5kUnVs
ZSBvbGRGaWxsUnVsZSA9IGZpbGxSdWxlKCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmls
bENvbG9yKCk7Ci0gICAgQ29sb3JTcGFjZSBvbGRGaWxsQ29sb3JTcGFjZSA9IGZpbGxDb2xvclNw
YWNlKCk7CiAgICAgCiAgICAgc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICBzZXRGaWxs
Q29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAgIHNldEZpbGxDb2xvcihjb2xvcik7CiAKICAg
ICBmaWxsUGF0aChwYXRoKTsKICAgICAKICAgICBzZXRGaWxsUnVsZShvbGRGaWxsUnVsZSk7Ci0g
ICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvciwgb2xkRmlsbENvbG9yU3BhY2UpOworICAgIHNl
dEZpbGxDb2xvcihvbGRGaWxsQ29sb3IpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYjlkYzAyMzA5
ZjZjMzY2MWZiMjZkNjcyYzI1ZjNlMzI2OTE5NTQzNC4uYmUyMGE3Mzc5ZmQ4NDI5MDAxY2MxYzg2
NTkzN2EzMTRmZWY2MzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNpZm5kZWYgR3JhcGhp
Y3NDb250ZXh0X2gKICNkZWZpbmUgR3JhcGhpY3NDb250ZXh0X2gKIAotI2luY2x1ZGUgIkNvbG9y
U3BhY2UuaCIKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgpAQCAtMTQ4LDEwICsxNDcsNiBAQCBzdHJ1Y3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUgewogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlIHsgU29saWRT
dHJva2UgfTsKICAgICBXaW5kUnVsZSBmaWxsUnVsZSB7IFJVTEVfTk9OWkVSTyB9OwogCi0gICAg
Q29sb3JTcGFjZSBzdHJva2VDb2xvclNwYWNlIHsgQ29sb3JTcGFjZURldmljZVJHQiB9OwotICAg
IENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0gICAg
Q29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlIHsgQ29sb3JTcGFjZURldmljZVJHQiB9OwotCiAg
ICAgZmxvYXQgYWxwaGEgeyAxIH07CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IgeyBDb21wb3NpdGVTb3VyY2VPdmVyIH07CiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSB7
IEJsZW5kTW9kZU5vcm1hbCB9OwpAQCAtMjE0LDkgKzIwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlKTsKICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJik7CiAgICAg
Q29sb3Igc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOyB9
Ci0gICAgQ29sb3JTcGFjZSBzdHJva2VDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5zdHJva2VDb2xvclNwYWNlOyB9CiAKICAgICB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUmVmPFBh
dHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7IH0KQEAgLTIyNyw5ICsyMjEsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLmZpbGxS
dWxlID0gZmlsbFJ1bGU7IH0KICAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuZmlsbFJ1bGU7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENv
bG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBmaWxsQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLmZpbGxDb2xvcjsgfQotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxDb2xvclNwYWNlOyB9CiAKICAgICB2b2lk
IHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsKICAgICBQYXR0ZXJuKiBmaWxsUGF0dGVy
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFBhdHRlcm4uZ2V0KCk7IH0KQEAgLTI2MSw3
ICsyNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAgICAgdm9p
ZCBkcmF3UGF0aChjb25zdCBQYXRoJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0g
RGVmYXVsdEltYWdlT3JpZW50YXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05h
dGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKIAog
ICAgIHZvaWQgY2xpcFRvTmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFNpemUmIGJ1ZmZlclNpemUpOwogICAgIApAQCAt
Mjg4LDcgKzI4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkcmF3RWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29sb3IsIENvbG9yU3BhY2UgZWxsaXBzZUNvbG9y
U3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IENvbG9yJiBlbGxpcHNlQ29sb3IsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcik7CiAgICAgdm9p
ZCBkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50Kiwg
Ym9vbCBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZpbGxQYXRoKGNvbnN0IFBhdGgmKTsKQEAgLTI5OCwyOSArMjkxLDI5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IENvbG9yJik7CiAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVu
dCYpOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFs
KTsKLSAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29u
c3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAg
IHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OworICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVS
ZWN0LCBjb25zdCBDb2xvciYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclJlY3Qo
Y29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0ltYWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVz
dGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRp
b25zKCkpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwgQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1hZ2UoSW1h
Z2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGlu
Z09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0
aW9ucygpKTsKIAotICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9p
ZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwKKyAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIHZvaWQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCiAgICAgICAgIElt
YWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRp
bmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgQ29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Cisg
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0
aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKIAotICAgIHZvaWQg
ZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZHJhd1BhdHRl
cm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENv
bXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OyB9CkBAIC0zNzYsMTMgKzM2OSwxMyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAg
IGJvb2wgaXNJblRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QgeyByZXR1cm4gKG1fdHJhbnNwYXJl
bmN5Q291bnQgPiAwKSAmJiBzdXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVy
LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAgICAg
Ly8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBpcyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Vi
a2l0LWJveC1zaGFkb3cuCiAgICAgLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFk
aWkgPiA4cHguCi0gICAgdm9pZCBzZXRMZWdhY3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxv
YXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICB2b2lkIHNldExlZ2FjeVNo
YWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclNoYWRvdygpOwotICAgIGJvb2wgZ2V0U2hhZG93KEZs
b2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImLCBDb2xvclNwYWNlJikgY29uc3Q7CisgICAgYm9vbCBn
ZXRTaGFkb3coRmxvYXRTaXplJiwgZmxvYXQmLCBDb2xvciYpIGNvbnN0OwogCiAgICAgYm9vbCBo
YXNWaXNpYmxlU2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dDb2xvci5pc1Zh
bGlkKCkgJiYgbV9zdGF0ZS5zaGFkb3dDb2xvci5hbHBoYSgpOyB9CiAgICAgYm9vbCBoYXNTaGFk
b3coKSBjb25zdCB7IHJldHVybiBoYXNWaXNpYmxlU2hhZG93KCkgJiYgKG1fc3RhdGUuc2hhZG93
Qmx1ciB8fCBtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpIHx8IG1fc3RhdGUuc2hhZG93T2Zm
c2V0LmhlaWdodCgpKTsgfQpAQCAtNDYzLDggKzQ1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRy
YXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5zaWdu
ZWQgc3RhdGUpOwogICAgIHZvaWQgZHJhd0ZvY3VzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KTsK
ICAgICB2b2lkIHBhaW50VGV4dEZpZWxkKGNvbnN0IEludFJlY3QmIHJlY3QsIHVuc2lnbmVkIHN0
YXRlKTsKLSAgICB2b2lkIGRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiwgY29uc3QgSW50UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKTsK
LSAgICB2b2lkIGRyYXdCaXRtYXBQYXR0ZXJuKFNoYXJlZEJpdG1hcCosIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3RJbiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRTaXpl
JiBvcmlnU291cmNlU2l6ZSk7CisgICAgdm9pZCBkcmF3Qml0bWFwKFNoYXJlZEJpdG1hcCosIGNv
bnN0IEludFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0
bWFwKiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdEluLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVy
YXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50U2l6ZSYgb3JpZ1NvdXJj
ZVNpemUpOwogICAgIHZvaWQgZHJhd0ljb24oSElDT04gaWNvbiwgY29uc3QgSW50UmVjdCYgZHN0
UmVjdCwgVUlOVCBmbGFncyk7CiAgICAgdm9pZCBkcmF3Um91bmRDb3JuZXIoYm9vbCBuZXdDbGlw
LCBSRUNUIGNsaXBSZWN0LCBSRUNUIHJlY3RXaW4sIEhEQyBkYywgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKICNlbHNlCkBAIC01MjksMTcgKzUyMiwxNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyk7CiAKLSAgICB2
b2lkIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAg
ICB2b2lkIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNl
dFBsYXRmb3JtU3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1T
dHJva2VUaGlja25lc3MoZmxvYXQpOwogCi0gICAgdm9pZCBzZXRQbGF0Zm9ybUZpbGxDb2xvcihj
b25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxhdGZvcm1GaWxsQ29sb3Io
Y29uc3QgQ29sb3ImKTsKIAogICAgIHZvaWQgc2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9v
bCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZFNtb290aEZvbnRzKGJvb2wpOwogICAgIHZv
aWQgc2V0UGxhdGZvcm1JbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFs
aXR5KTsKIAotICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxv
YXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICB2b2lkIHNldFBsYXRmb3Jt
U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAgICAg
dm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICB2b2lkIHNldFBsYXRmb3JtQWxwaGEo
ZmxvYXQpOwpAQCAtNTU1LDcgKzU0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUZp
bGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgcGxhdGZvcm1TdHJva2VFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAg
ICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBj
b25zdCBDb2xvciYpOwogCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFs
aWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBib29sIHBy
aW50aW5nLCBib29sJiBzaG91bGRBbnRpYWxpYXMsIENvbG9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA0ZTNkNjE1MmY2NThhYTA5MDllZTcw
YjI2OTcwM2JjNTI4ZTYwY2QzLi44MWZiYjBmMWU3YWNiZjJmMDhlZWU3NTQyOGI2NTkzMTE3YTZi
MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC03
OSwyMSArNzksMjEgQEAgYm9vbCBJbWFnZTo6c2V0RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIGRhdGFDaGFuZ2VkKGFs
bERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
Cit2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5hbHBoYSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQuY29tcG9z
aXRlT3BlcmF0aW9uKCk7CiAgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWNvbG9yLmhh
c0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkgOiBv
cCk7Ci0gICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNlKTsK
KyAgICBjdHh0LmZpbGxSZWN0KGRzdFJlY3QsIGNvbG9yKTsKICAgICBjdHh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZTo6ZHJhd1Rp
bGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewot
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwg
c3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBk
ZXN0UmVjdCwgc29saWRDb2xvcigpLCBvcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTEyNSw3ICsxMjUsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbAogICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVp
Z2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53aWR0aCgp
IC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodChkZXN0
UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgZHJhdyhjdHh0LCBkZXN0
UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0
LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRl
c3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAg
ICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aCgxKTsKICAgICAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAg
ICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
KyAgICAgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxl
bmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNpemUoKS5oZWlnaHQoKSA9PSAxICYm
IGludGVyc2VjdGlvbihvbmVUaWxlUmVjdCwgZGVzdFJlY3QpLndpZHRoKCkgPT0gZGVzdFJlY3Qu
d2lkdGgoKSkgewpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAg
ICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKDApOwogICAgICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAg
ICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KDEpOwotICAgICAgICAgICAgZHJhdyhjdHh0
LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5kTW9k
ZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJh
dyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWwsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbAog
ICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBmcm9tUmVjdCh0b0Zsb2F0UG9pbnQoY3VycmVudFRp
bGVSZWN0LmxvY2F0aW9uKCkgLSBvbmVUaWxlUmVjdC5sb2NhdGlvbigpKSwgY3VycmVudFRpbGVS
ZWN0LnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZnJvbVJlY3Quc2NhbGUoMSAvIHNjYWxlLndp
ZHRoKCksIDEgLyBzY2FsZS5oZWlnaHQoKSk7CiAKLSAgICAgICAgICAgICAgICBkcmF3KGN0eHQs
IHRvUmVjdCwgZnJvbVJlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5kTW9kZU5vcm1hbCwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgICAgIGRyYXcoY3R4
dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHRvWCArPSBjdXJyZW50VGlsZVJlY3Qu
d2lkdGgoKTsKICAgICAgICAgICAgICAgICBjdXJyZW50VGlsZVJlY3Quc2hpZnRYRWRnZVRvKG9u
ZVRpbGVSZWN0LngoKSk7CiAgICAgICAgICAgICB9CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmwKIAogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3Jt
ID0gQWZmaW5lVHJhbnNmb3JtKCkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlLndpZHRoKCksIHNjYWxl
LmhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgdGlsZVJlY3QoRmxvYXRQb2ludCgpLCBpbnRyaW5z
aWNUaWxlU2l6ZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwg
b3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBvbmVUaWxlUmVjdC5sb2NhdGlvbigpLCBzcGFjaW5nLCBvcCwg
ZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmlt
YXRpb24oRG9Ob3RDYXRjaFVwKTsKQEAgLTIwMiwxMCArMjAyLDEwIEBAIHZvaWQgSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsCiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRoZSBvdGhlciBkcmF3VGlsZWQgZXZl
bnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9uIG9mIGJvdGggZm9yIHNvbWUgdGhp
bmdzLgogdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVs
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorICAg
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1
bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogeyAgICAKICAgICBpZiAobWF5RmlsbFdp
dGhTb2xpZENvbG9yKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJl
Y3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAgICAgIGZpbGxXaXRo
U29saWRDb2xvcihjdHh0LCBkc3RSZWN0LCBzb2xpZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsbwogICAgICAgICB2UGhhc2UgLT0gKGRzdFJlY3QuaGVpZ2h0KCkgLSBzY2FsZWRUaWxlSGVp
Z2h0KSAvIDI7CiAKICAgICBGbG9hdFBvaW50IHBhdHRlcm5QaGFzZShkc3RSZWN0LngoKSAtIGhQ
aGFzZSwgZHN0UmVjdC55KCkgLSB2UGhhc2UpOwotICAgIGRyYXdQYXR0ZXJuKGN0eHQsIHNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5QaGFzZSwgc3BhY2luZywgc3R5bGVDb2xvclNw
YWNlLCBvcCwgZHN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcCwgZHN0UmVjdCk7CiAKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IGE1YjFlNGFlM2RjZmU5NzYxNjMw
YTMwYTU2NDUyODhlNmQxNDY1Y2EuLjQ3Mzc5YjNlOTJlOWU2NzViNzU5MjM1MjA4NTU2YzMwMGI5
ODdkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMjgs
NyArMjgsNiBAQAogI2RlZmluZSBJbWFnZV9oCiAKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1
ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGbG9h
dFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCkBAIC0xNTQsNyArMTUzLDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgeyByZXR1cm4g
MDsgfQogICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29u
c3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5
UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZVdpdGhDb2xvclNwYWNlKENHSW1hZ2VSZWYgb3JpZ2luYWxJbWFn
ZSwgQ29sb3JTcGFjZSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE3MSw3ICsx
NjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIAogI2lmIEVOQUJMRShJ
TUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgRmxvYXRSZWN0IGFkanVzdFNvdXJjZVJl
Y3RGb3JEb3duU2FtcGxpbmcoY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXpl
JiBzY2FsZWRTaXplKSBjb25zdDsKQEAgLTE4NiwxNiArMTg0LDE0IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBJbWFnZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGlj
IHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IpOworICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCi0gICAgLy8gVGhlIENvbG9yU3BhY2UgcGFyYW1ldGVyIHdpbGwg
b25seSBiZSB1c2VkIGZvciB1bnRhZ2dlZCBpbWFnZXMuCiAjaWYgUExBVEZPUk0oV0lOKQotICAg
IHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgPSAwOwotICAgIHZvaWQgZHJhd1RpbGVkKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCi0gICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yICwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2
UnVsZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSA9IDA7CisgICAgdm9pZCBkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKKyAgICB2b2lkIGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRp
bGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCiAgICAg
Ly8gU3VwcG9ydGluZyB0aWxlZCBkcmF3aW5nCiAgICAgdmlydHVhbCBib29sIG1heUZpbGxXaXRo
U29saWRDb2xvcigpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAzNjYwM2I3OWY4ZDBhN2U5MjcwN2MyNWM0
NmQyNGZkM2Q5ZTUwNTMwLi4zODNiNTQ0NDY1ZGUyZjQ0OWZhMDhjOTI2YjIxOTk3NDM0YzY0NzZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
QEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEltYWdlQnVmZmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlID0gMSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQikK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSA9IDEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0Ig
LyogRklYTUUgc1JHQiAqLykKICAgICB7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihuZXcgSW1hZ2VCdWZm
ZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBzdWNj
ZXNzKSk7CkBAIC0xMzQsOCArMTM0LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgY2xp
cChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAotICAgIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlTm9ybWFsKTsKIAogICAgIGlubGluZSB2b2lkIGdlbmVyaWNDb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQwYmFkMzBlOTI3
MmRmYzgxYWM0NzZmMzY4NTE2NjBiM2MwZGYyODUuLmEwZjY0MzRlODlhODg4Y2I2OTcwMjZjNTZj
ODhjOGU3NzM2NmUwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShT
dHJpbmcgbmFtZSwgY29uc3QgRmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7
CiB9CiAKLXZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIE5hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZAogI2VuZGlmCiB9CiAKLXZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihzaXplKCksIHRydWUpOwpAQCAtNzIsMTQgKzcyLDEzIEBAIHZvaWQgTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0CiAgICAgcGxhdGZvcm1UaGVtZSgpLT5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGdyYXBo
aWNzQ29udGV4dCwgRmxvYXRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0
KCkpKTsKIAogICAgIC8vIFRpbGUgdGhlIGltYWdlIGJ1ZmZlciBpbnRvIHRoZSBjb250ZXh0Lgot
ICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0
UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwg
c3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBk
c3RSZWN0LCBibGVuZE1vZGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNyY1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNm
b3JtKTsKICAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5n
KTsKLSAgICBVTlVTRURfUEFSQU0oc3R5bGVDb2xvclNwYWNlKTsKICAgICBVTlVTRURfUEFSQU0o
ZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsKICAgICBVTlVTRURfUEFS
QU0oYmxlbmRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggNmY0ZWNkOWI3MmI2YzNm
Mzc3NzVlYzNiOTFkZTMxYzBjZmI3YTVjYi4uZDlmMGFjMWYzMTZjODc2M2ZhYjc3ODM0ZGUxMjky
Mjk2YjNlOGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQxLDggKzQxLDggQEAgcHVi
bGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBC
bGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRN
b2RlKSBvdmVycmlkZTsKIAogICAgIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFt
ZSwgY29uc3QgRmxvYXRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggODVhZWVlZmY3MmVlMjcwZTc2MDA4MGRjNjBlZWIy
YjA1YzgxNzRhMy4uOGFjYmRhMjg3YWMyM2FkYjhmZDUxZGJiOWU1YjMzNTVkNzEzMGVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAg
LTg1LDE1ICs4NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdl
dCgpOwogICAgIH0KIAotICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSYgcmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQorICAgIGJvb2wgc2V0Q2FjaGVk
U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3Is
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKICAgICB7Ci0gICAgICAgIGlm
ICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xv
ciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNwYWNlID09IGNvbG9yU3BhY2UgJiYgbV9sYXN0U2hh
ZG93UmVjdCA9PSBzaGFkb3dSZWN0ICYmICBtX2xhc3RSYWRpaSA9PSByYWRpaSAmJiBtX2xhc3RM
YXllclNpemUgPT0gbGF5ZXJTaXplKQorICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYmIG1f
bGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0U2hh
ZG93UmVjdCA9PSBzaGFkb3dSZWN0ICYmICBtX2xhc3RSYWRpaSA9PSByYWRpaSAmJiBtX2xhc3RM
YXllclNpemUgPT0gbGF5ZXJTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIG1fbGFzdFdhc0luc2V0ID0gZmFsc2U7CiAgICAgICAgIG1fbGFzdFJhZGl1cyA9IHJhZGl1
czsKICAgICAgICAgbV9sYXN0Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgbV9sYXN0Q29sb3JTcGFj
ZSA9IGNvbG9yU3BhY2U7CiAgICAgICAgIG1fbGFzdFNoYWRvd1JlY3QgPSBzaGFkb3dSZWN0Owog
ICAgICAgICBtX2xhc3RSYWRpaSA9IHJhZGlpOwogICAgICAgICBtX2xhc3RMYXllclNpemUgPSBs
YXllclNpemU7CkBAIC0xMDEsMTYgKzEwMCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29uc3Qg
RmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCisgICAgYm9vbCBzZXRDYWNo
ZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dS
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCiAgICAgewotICAgICAg
ICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RD
b2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNwYWNlID09IGNvbG9yU3BhY2UgJiYgbV9sYXN0
SW5zZXRCb3VuZHMgPT0gYm91bmRzICYmIHNoYWRvd1JlY3QgPT0gbV9sYXN0U2hhZG93UmVjdCAm
JiByYWRpaSA9PSBtX2xhc3RSYWRpaSkKKyAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0ICYmIG1f
bGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0SW5z
ZXRCb3VuZHMgPT0gYm91bmRzICYmIHNoYWRvd1JlY3QgPT0gbV9sYXN0U2hhZG93UmVjdCAmJiBy
YWRpaSA9PSBtX2xhc3RSYWRpaSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBtX2xhc3RXYXNJbnNldCA9IHRydWU7CiAgICAgICAgIG1fbGFzdEluc2V0Qm91bmRzID0gYm91
bmRzOwogICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CiAgICAgICAgIG1fbGFzdENvbG9y
ID0gY29sb3I7Ci0gICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgICAg
ICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKICAgICAgICAgbV9sYXN0UmFkaWkgPSBy
YWRpaTsKIApAQCAtMTQ2LDcgKzE0NCw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fbGFz
dFNoYWRvd1JlY3Q7CiAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7CiAg
ICAgQ29sb3IgbV9sYXN0Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBtX2xhc3RDb2xvclNwYWNlOwog
ICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7CiAgICAgYm9vbCBtX2xhc3RXYXNJbnNldDsKICAg
ICBGbG9hdFNpemUgbV9sYXN0TGF5ZXJTaXplOwpAQCAtMTcxLDkgKzE2OCw4IEBAIHN0YXRpYyBm
bG9hdCByYWRpdXNUb0xlZ2FjeVJhZGl1cyhmbG9hdCByYWRpdXMpCiB9CiAjZW5kaWYKIAotU2hh
ZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQor
U2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICA6IG1fY29sb3IoY29sb3Ip
Ci0gICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fYmx1clJhZGl1cyhyYWRp
dXMpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgLCBtX2xheWVySW1hZ2UoMCkKQEAgLTE4
NCw3ICsxODAsNiBAQCBTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFk
aXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQwogCiBTaGFkb3dCbHVyOjpTaGFk
b3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAgICA6IG1fY29sb3Io
c3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBtX2NvbG9yU3BhY2Uoc3RhdGUuc2hhZG93Q29sb3JT
cGFjZSkKICAgICAsIG1fYmx1clJhZGl1cyhzdGF0ZS5zaGFkb3dCbHVyLCBzdGF0ZS5zaGFkb3dC
bHVyKQogICAgICwgbV9vZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0KQogICAgICwgbV9sYXllcklt
YWdlKDApCkBAIC0yMDYsMTIgKzIwMSwxMSBAQCBTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKCkKIHsK
IH0KIAotdm9pZCBTaGFkb3dCbHVyOjpzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiBy
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKQordm9pZCBTaGFkb3dCbHVy
OjpzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6
ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgaWdub3JlVHJhbnNmb3JtcykKIHsK
ICAgICBtX2JsdXJSYWRpdXMgPSByYWRpdXM7CiAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAg
bV9jb2xvciA9IGNvbG9yOwotICAgIG1fY29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgbV9z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGlnbm9yZVRyYW5zZm9ybXM7CiAKICAgICB1cGRhdGVT
aGFkb3dCbHVyVmFsdWVzKCk7CkBAIC00NzMsNyArNDY3LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3U2hhZG93QnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQogICAgICAg
ICBncmFwaGljc0NvbnRleHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNp
emUpKTsKICAgICB9CiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCptX2xh
eWVySW1hZ2UsIEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAKICAgICBncmFwaGljc0NvbnRl
eHQuY2xlYXJTaGFkb3coKTsKICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0
KG1fbGF5ZXJPcmlnaW4sIG1fc291cmNlUmVjdC5zaXplKCkpKTsKQEAgLTU3Miw3ICs1NjYsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0
Lm1vdmUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBp
biB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBv
dXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRv
bigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29s
b3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QsIHNoYWRvd2VkUmVj
dC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNo
QnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBD
b2xvcjo6YmxhY2ssIGJ1ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFk
aWkoKSwgbV9sYXllclNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dDb250ZXh0
KTsKQEAgLTU4MCw3ICs1NzQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgYwogICAgICAgICAv
LyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdlIGFsaWFzaW5nIHdoZW4gcm90YXRlZC4K
ICAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJT
aXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKICAgICAgICAgc2hh
ZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7Ci0gICAgICAg
IHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7
CiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3Qoc2hhZG93ZWRSZWN0LnJlY3QoKSk7CiAgICAgICAgIGVs
c2UgewpAQCAtNjEwLDcgKzYwNCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwKICAgICBidWZm
ZXJSZWxhdGl2ZUhvbGVSZWN0Lm1vdmUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKICAg
ICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250
ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVJl
Y3QsIGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3QsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGJvb2wg
cmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIGJ1ZmZlclJlbGF0aXZlUmVj
dCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJl
ZHJhd05lZWRlZCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBt
X2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwpAQCAtNjI3LDcgKzYyMSw3IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3Qp
OwogCiAgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAg
ICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJs
YWNrKTsKICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBi
bHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAtNjgxLDE0
ICs2NzUsMTQgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBGbG9hdFJlY3QgdGVtcGxh
dGVIb2xlID0gRmxvYXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhlaWdodCgpLCB0
ZW1wbGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUu
aGVpZ2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gT25seSByZWRyYXcg
aW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2gg
b3VyIG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0
b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1f
Y29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWko
KSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
ZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIHRlbXBsYXRl
Qm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOwogICAgIGlmIChyZWRyYXdO
ZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlci4K
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5j
b250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2hhZG93U3RhdGVT
YXZlcihzaGFkb3dDb250ZXh0KTsKICAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QodGVt
cGxhdGVCb3VuZHMpOwogICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZF
Tk9ERCk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjpibGFjayk7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJl
Y3QodGVtcGxhdGVCb3VuZHMpOwpAQCAtNzI0LDcgKzcxOCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGZpbGxTdGF0
ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
UnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobV9jb2xvcik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKICAgICB9CkBA
IC03NDUsMTQgKzczOSwxNCBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRp
bGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIEZsb2F0UmVj
dCB0ZW1wbGF0ZVNoYWRvdyA9IEZsb2F0UmVjdChlZGdlU2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5o
ZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkgLSAyICogZWRnZVNpemUud2lkdGgoKSwgdGVt
cGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VTaXplLmhlaWdodCgpKTsKIAogICAgIC8vIE9u
bHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRv
bid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2NyYXRjaEJ1ZmZl
ci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3Bh
Y2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwor
ICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1
ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0LnJh
ZGlpKCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8v
IERyYXcgc2hhZG93IGludG8gdGhlIEltYWdlQnVmZmVyLgogICAgICAgICBHcmFwaGljc0NvbnRl
eHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwog
CiAgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1wbGF0
ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAg
IAogICAgICAgICBpZiAoc2hhZG93ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAgICAgICAgICAg
ICBzaGFkb3dDb250ZXh0LmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKQEAgLTc5OCwxNCArNzky
LDE0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dJ
bnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFkb3dCb3VuZHMueSgpICsg
dG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwogICAgICAgICBpZiAoIXNoYWRv
d0ludGVyaW9yLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0gICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmls
bFJlY3Qoc2hhZG93SW50ZXJpb3IpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
ZWFyU2hhZG93KCk7CiAKICAgICAvLyBOb3RlIHRoYXQgZHJhd2luZyB0aGUgSW1hZ2VCdWZmZXIg
aXMgZmFzdGVyIHRoYW4gY3JlYXRpbmcgYSBJbWFnZSBhbmQgZHJhd2luZyB0aGF0LApAQCAtODE2
LDQ2ICs4MTAsNDYgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICAvLyBUb3Agc2lkZS4K
ICAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSBGbG9hdFJlY3QobGVmdFNsaWNlLCAwLCB0ZW1wbGF0
ZVNpZGVMZW5ndGgsIHRvcFNsaWNlKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBGbG9hdFJl
Y3QoY2VudGVyUmVjdC54KCksIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIGNlbnRlclJlY3Qu
d2lkdGgoKSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
Km1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
KyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gc2lkZS4KICAgICB0aWxl
UmVjdC5zZXRZKHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlKTsKICAgICB0aWxl
UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0LnNldFkoY2VudGVyUmVj
dC5tYXhZKCkpOwogICAgIGRlc3RSZWN0LnNldEhlaWdodChib3R0b21TbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIExl
ZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCB0b3BTbGljZSwgbGVmdFNsaWNl
LCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJl
Y3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0LnkoKSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0
LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogCiAgICAgLy8gUmlnaHQgc2lkZS4KICAgICB0aWxlUmVjdC5zZXRYKHRlbXBsYXRl
U2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSk7CiAgICAgdGlsZVJlY3Quc2V0V2lkdGgocmlnaHRT
bGljZSk7CiAgICAgZGVzdFJlY3Quc2V0WChjZW50ZXJSZWN0Lm1heFgoKSk7CiAgICAgZGVzdFJl
Y3Quc2V0V2lkdGgocmlnaHRTbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJl
Y3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFRvcCBsZWZ0IGNvcm5lci4KICAgICB0aWxl
UmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVj
dCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRTbGljZSwgY2VudGVyUmVjdC55KCkg
LSB0b3BTbGljZSwgbGVmdFNsaWNlLCB0b3BTbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVj
dCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIu
CiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNs
aWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3Qo
Y2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2Us
IHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogCiAgICAgLy8gQm90dG9tIHJpZ2h0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZs
b2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UsIHRlbXBsYXRlU2l6ZS5o
ZWlnaHQoKSAtIGJvdHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0b21TbGljZSk7CiAgICAgZGVz
dFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3QubWF4WSgpLCBy
aWdodFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJl
Y3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJvdHRvbSBsZWZ0IGNvcm5lci4KICAgICB0
aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGlj
ZSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2Vu
dGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJlY3QubWF4WSgpLCBsZWZ0U2xpY2UsIGJv
dHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogfQogCiAKQEAgLTg3OCw3ICs4NzIsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJB
bmRDb2xvclNoYWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpCiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwog
ICAgIHNoYWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUlu
KTsKLSAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2Up
OworICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgIHNoYWRvd0Nv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIApAQCAtODk0LDcgKzg4OCw3IEBAIEdyYXBoaWNzQ29u
dGV4dCogU2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsCiAgICAgLy8gV2UgcmVzZXQgdGhlIHNjcmF0Y2ggYnVmZmVyIHZhbHVlcyBo
ZXJlLCBiZWNhdXNlIHRoZSBidWZmZXIgd2lsbCBubyBsb25nZXIgY29udGFpbgogICAgIC8vIGRh
dGEgZnJvbSBhbnkgcHJldmlvdXMgcmVjdGFuZ2xlIG9yIGluc2V0IHNoYWRvd3MgZHJhd24gdmlh
IHRoZSB0aWxpbmcgcGF0aC4KICAgICBhdXRvJiBzY3JhdGNoQnVmZmVyID0gU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCk7Ci0gICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMo
RmxvYXRTaXplKCksIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgp
LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CisgICAgc2NyYXRjaEJ1
ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9yOjpibGFjaywgSW50
UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9s
YXllckltYWdlID0gc2NyYXRjaEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXpl
KCkpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdl
LT5jb250ZXh0KCk7CkBAIC05MTUsNyArOTA5LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjplbmRTaGFk
b3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmUoY29udGV4dCk7CiAKICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7
Ci0gICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgbV9sYXll
clNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xheWVyU2l6ZSksIGNvbnRleHQuY29t
cG9zaXRlT3BlcmF0aW9uKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobV9sYXllck9yaWdpbiksIG1fbGF5ZXJT
aXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllclNpemUpLCBjb250ZXh0LmNvbXBv
c2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJbWFnZSA9IG51bGxwdHI7CiAgICAgU2Ny
YXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCAyMDUw
YWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkLi5lZDE2NmNmYzQyY2QwNGM5Mjcw
NDNjYWZhMmM1YTdmMzVkZTRkZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5oCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogICAgICAgICBC
bHVyU2hhZG93CiAgICAgfTsKIAotICAgIFNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRp
dXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwor
ICAgIFNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0LCBjb25zdCBDb2xvciYpOwogICAgIFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmKTsKICAgICBTaGFkb3dCbHVyKCk7CiAKLSAgICB2b2lkIHNldFNoYWRvd1ZhbHVl
cyhjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmICwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlLCBib29sIGlnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRTaGFk
b3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9y
JiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyhib29sIGlnbm9yZVRyYW5zZm9ybXMpIHsgbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcyA9IGlnbm9yZVRyYW5zZm9ybXM7IH0KICAgICBib29sIHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQpA
QCAtMTA0LDcgKzEwNCw2IEBAIHByaXZhdGU6CiAgICAgU2hhZG93VHlwZSBtX3R5cGU7CiAKICAg
ICBDb2xvciBtX2NvbG9yOwotICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogICAgIEZsb2F0
U2l6ZSBtX2JsdXJSYWRpdXM7CiAgICAgRmxvYXRTaXplIG1fb2Zmc2V0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCA1MDNjNGZiMDJiOWM0ZWFkYzAwZjM3NTRmNTM1MDQzZmU0NjllN2Zh
Li41NWIzZDQ3ZTQ2NjFiOWVmNWIzNjk3YzUxOTM2NjE4OGFkY2ExMGIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIoKQogCiAgICAgbV92aWRlb0xheWVy
ID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW21f
dmlkZW9MYXllciBzZXRQbGF5ZXI6bV9hdlBsYXllci5nZXQoKV07Ci0gICAgW21fdmlkZW9MYXll
ciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpXTsKKyAgICBbbV92aWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNo
ZWRDR0NvbG9yKENvbG9yOjpibGFjayldOwogI2lmbmRlZiBOREVCVUcKICAgICBbbV92aWRlb0xh
eWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGUgQVZQbGF5ZXJMYXllciJdOwogI2VuZGlm
CkBAIC0yMzQ3LDcgKzIzNDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogICAgIEZsb2F0
UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkubWFw
UmVjdChvdXRwdXRSZWN0KTsKIAogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3Jt
KTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgdHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBp
bWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgp
LCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiAK
ICAgICAvLyBJZiB3ZSBoYXZlIGNyZWF0ZWQgYW4gQVZBc3NldEltYWdlR2VuZXJhdG9yIGluIHRo
ZSBwYXN0IGR1ZSB0byBtX3ZpZGVvT3V0cHV0IG5vdCBoYXZpbmcgYW4gYXZhaWxhYmxlCiAgICAg
Ly8gdmlkZW8gZnJhbWUsIGRlc3Ryb3kgaXQgbm93IHRoYXQgaXQgaXMgbm8gbG9uZ2VyIG5lZWRl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCmluZGV4IDgwN2VlMTM5NTJmMWQzY2FjYjBmNTBhZjk1MTQ2MDZhODUx
MWM4NjkuLjczYmNjNWRmMTU1MjdlMTIyMjk3NTM5YmZmMTEzNzU1YzM3MDgwMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcApAQCAtOTg2LDggKzk4Niw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgICAgICBpZiAoIW5ld0ltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaW1hZ2UgY2hh
bmdlZDsgd2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIGNhbGwgdG8KLSAgICAgICAgLy8g
Q0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZSgpIGJlbG93IGNhbiBjcmVhdGUgYSBuZXcg
aW1hZ2UgZXZlcnkgdGltZS4KICAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdl
ICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVHcmlkLmNwcAppbmRleCBmMTgwOWZjZjJkZGJlMTA1MzBhOGE4ZWRmOTA4
ZGU0ZDkxMjZiMzVmLi42OGI5NTYyODQwNWFlMGUyMTZlMzQxNGYzYTE4YjkxNzY0YjQ0ZmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBUaWxlR3JpZDo6cGxhdGZvcm1DQUxheWVyUGFpbnRD
b250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3IKIAogICAgIGludCBy
ZXBhaW50Q291bnQgPSBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQocGxhdGZv
cm1DQUxheWVyKTsKICAgICBpZiAobV9jb250cm9sbGVyLnJvb3RMYXllcigpLm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcigwKSkKLSAgICAgICAgUGxhdGZvcm1DQUxh
eWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBwbGF0
Zm9ybUNBTGF5ZXIsIHJlcGFpbnRDb3VudCwgY2FjaGVkQ0dDb2xvcihtX2NvbnRyb2xsZXIudGls
ZURlYnVnQm9yZGVyQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICBQbGF0
Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIHBsYXRmb3JtQ0FMYXllciwgcmVwYWludENvdW50LCBjYWNoZWRDR0NvbG9yKG1fY29udHJv
bGxlci50aWxlRGVidWdCb3JkZXJDb2xvcigpKSk7CiAKICAgICBpZiAobV9jb250cm9sbGVyLnNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSkgewogICAgICAgICBGbG9hdFJlY3Qg
dmlzaWJsZVBhcnQocGxhdGZvcm1DQUxheWVyLT5wb3NpdGlvbigpLngoKSwgcGxhdGZvcm1DQUxh
eWVyLT5wb3NpdGlvbigpLnkoKSwgcGxhdGZvcm1DQUxheWVyLT5ib3VuZHMoKS5zaXplKCkud2lk
dGgoKSwgcGxhdGZvcm1DQUxheWVyLT5ib3VuZHMoKS5zaXplKCkuaGVpZ2h0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAppbmRleCBmNWUzZGUwZTUzNGIwMTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRh
Nzc0Li43NTViNjNiZDlhOTk3NTk2MzlkODMxYWYzMjdjMGMwNGVlNzRlZDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcApAQCAtNjQsNyArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2Uo
UGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgog
ICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gZGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFkc3Qud2lkdGgoKSB8fCAhZHN0LmhlaWdodCgp
IHx8ICFzcmMud2lkdGgoKSB8fCAhc3JjLmhlaWdodCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCmluZGV4IGE0MmI1NGQzODJjNDkyYjUwNDg2MTkzMzAwMGQzZmQyMTM0ZDg4NGIuLmJm
NmFmYTI0YWUwOTZlZGIzYWU3YmJkMWM1MGYxYzlkNjRjYjc3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHNoYWRvd0FuZEZpbGxDdXJyZW50
Q2Fpcm9QYXRoKCp0aGlzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTcyNCwxMyArNzI0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xh
dGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBtX2RhdGEtPnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihj
b25zdCBDb2xvciYpCiB7CiAgICAgLy8gQ2Fpcm8gY29udGV4dHMgY2FuJ3QgaG9sZCBzZXBhcmF0
ZSBmaWxsIGFuZCBzdHJva2UgY29sb3JzCiAgICAgLy8gc28gd2Ugc2V0IHRoZW0ganVzdCBiZWZv
cmUgd2UgYWN0dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKQogewog
ICAgIC8vIENhaXJvIGNvbnRleHRzIGNhbid0IGhvbGQgc2VwYXJhdGUgZmlsbCBhbmQgc3Ryb2tl
IGNvbG9ycwogICAgIC8vIHNvIHdlIHNldCB0aGVtIGp1c3QgYmVmb3JlIHdlIGFjdHVhbGx5IGZp
bGwgb3Igc3Ryb2tlCkBAIC03OTgsNyArNzk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBtX2RhdGEtPnNldENU
TSh0cmFuc2Zvcm0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFk
b3coRmxvYXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29uc3QmLCBDb2xvclNwYWNl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25z
dCYgc2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0JikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDE5LDcgKzEwMTksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgY2Fpcm9fc2V0X2ZpbGxf
cnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1G
aWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJv
dW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm47CkBAIC0xMDU5LDcgKzEwNTksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1h
Z2UgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAzZTUyMTNmODZkYTY1MTJkZTYxZGZh
NWJmOWY2NWFlNzFjODJlM2RmLi4yNTZkMWNjODMxM2JhOGIwNzE4N2M3NTBiMWM5NjQ2NzJkZjhl
MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDE5ICsxNjUsMTkgQEAgdm9pZCBJ
bWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgbWFza1JlY3QpIGNvbnMKICAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1h
Z2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgQmFja2luZ1N0b3JlQ29w
eSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNr
aW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVz
ZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmlt
YWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwog
fQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQorICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCiB7CiAgICAgaWYg
KFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQot
ICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0KTsKKyAg
ICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
OjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRh
YmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUNhaXJvLmNwcAppbmRleCBlNGM2M2EzNDZlMjJkZmIzNGVjZWJiNzcyNjNiNzRlMzc3N2Iw
ZTk0Li4xMWU1N2I0YmQxYzA4NWVjNDE4NzA5ZGU0N2VmYTgyYjkyNzdhMjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNw
cApAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGNvbnRleHQuZHJh
d1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
ZywgY29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuZHJh
d1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkK
ICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCA1
OWE4Y2RiZGU2ZGE1MjllYzUxMWNjYzIyMGM0NzI4MDgxMDMyYmNjLi5iZjZmMjg2OTM2ZmZhY2Ex
NDU1ZjRhNTg2MGU3MTBhNjM5ZDVjMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBA
IFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkKICAg
ICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKQEAgLTIyNiw3ICsy
MjYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRD
b2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBv
c2l0ZU9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xp
ZENvbG9yKCksIGNvbXBvc2l0ZU9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ1
LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0aW9u
LnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAg
ICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJh
bWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwg
c3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJs
ZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdl
dCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxl
bmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAg
ICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDhhN2ZlYmVkNTQwODM3ZWQxMjMw
MGQ3YjI4YjM3YmFiNzg2ZmZmMzUuLjlhNDhhMzMxZGYzMDgzNzBhM2NlMzM1ODZhYzVlMjVmYzhh
ZGRlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCkBAIC05OSwyNiArOTksMjYgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3Ip
CiAgICAgbV92YWxpZCA9IHRydWU7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3RhdGljIENHQ29s
b3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIENHRmxvYXQgY29t
cG9uZW50c1s0XTsKICAgICBjb2xvci5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNvbXBvbmVudHNb
MV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwotICAgIHJldHVybiBDR0NvbG9yQ3Jl
YXRlKGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgY29tcG9uZW50cyk7CisgICAgcmV0
dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cyk7CiB9CiAK
LXRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JSZWYgY2FjaGVk
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIHN3aXRjaCAoY29sb3IucmdiKCkpIHsKICAgICBjYXNl
IENvbG9yOjp0cmFuc3BhcmVudDogewotICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB0cmFuc3Bh
cmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIHN0
YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsK
ICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKICAgICB9CiAgICAgY2FzZSBDb2xv
cjo6YmxhY2s6IHsKLSAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0NvbG9yID0gbGVh
a0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiBi
bGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgIHJldHVybiBibGFja0NH
Q29sb3I7CiAgICAgfQogICAgIGNhc2UgQ29sb3I6OndoaXRlOiB7Ci0gICAgICAgIHN0YXRpYyBD
R0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsK
KyAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgd2hpdGVDR0NvbG9yID0gbGVha0NHQ29sb3IoY29s
b3IpOwogICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwogICAgIH0KICAgICB9CkBAIC0xMzQs
NyArMTM0LDcgQEAgdGVtcGxhdGU8Q29sb3JTcGFjZSBjb2xvclNwYWNlPiBzdGF0aWMgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2wKICAgICAgICAgICAgIHJldHVybiBj
YWNoZWRDR0NvbG9yc1tpXS5nZXQoKTsKICAgICB9CiAKLSAgICBDR0NvbG9yUmVmIG5ld0NHQ29s
b3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CisgICAgQ0dDb2xvclJlZiBuZXdD
R0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogCiAgICAgc3RhdGljIHNpemVfdCBjdXJzb3I7
CiAgICAgY2FjaGVkUkdCQVZhbHVlc1tjdXJzb3JdID0gY29sb3IucmdiKCk7CkBAIC0xNDUsMjAg
KzE0NSw2IEBAIHRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sCiAgICAgcmV0dXJuIG5ld0NHQ29sb3I7
CiB9CiAKLUNHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9yPENvbG9y
U3BhY2VEZXZpY2VSR0I+KGNvbG9yKTsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdCOgotICAgICAg
ICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xvclNwYWNlU1JHQj4oY29sb3IpOwotICAgIGNhc2Ug
Q29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3I8Q29sb3JT
cGFjZUxpbmVhclJHQj4oY29sb3IpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci19
Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggOTRh
YWFhOTMwNWIzZTBkNDZiZWI1OWQ4MjE2OTgxOGU2MTA0MmE3My4uMzdhNzI4OTkwOTM4MTdjYjg5
YTMxMWUwYzA5N2MzZmU0MmIwYjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTUzNiw3
ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxv
YXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsK
ICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5v
bmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDM2MGUzODdjYzgzMWE2MzA3NzY0MzNiZjYx
NWNjOGJjYzgzZThkNWYuLjJhYzk0YjJkNTEyN2ZkMDhlZjVmZmMyOWRiMTMxNzAwZmNjYjU4NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTYzLDE2ICs2MywxNyBAQCB1c2luZyBXVEY6OkdlbmVy
aWNIYXNoVHJhaXRzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldENH
RmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENv
bG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpKTsK
KyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xv
cihjb2xvcikpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9yKENHQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0
YXRpYyB2b2lkIHNldENHU3Ryb2tlQ29sb3IoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKSk7CisgICAgQ0dDb250ZXh0U2V0
U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvcikpOwogfQog
CisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBzb29uLgogQ0dDb2xvclNwYWNlUmVm
IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQogewogICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYg
ZGV2aWNlU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKQEAgLTgxLDkgKzgy
LDYgQEAgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQogCiBDR0NvbG9y
U3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBy
ZXR1cm4gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKICAgICBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9y
U3BhY2VTUkdCKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5z
dGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBh
dm9pZHMKQEAgLTkzLDcgKzkxLDYgQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKICAgICAgICAgc1JHQlNwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gc1JHQlNwYWNlOwotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9TKQpAQCAtMTI3
LDggKzEyNCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCkKICAgICBzZXRQYWludGluZ0Rpc2FibGVkKCFjZ0NvbnRleHQpOwogICAg
IGlmIChjZ0NvbnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0
cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihm
aWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Ci0gICAgICAgIHNldFBsYXRmb3JtU3Ryb2tl
Q29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgc2V0UGxh
dGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCkpOworICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZUNv
bG9yKHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhz
dHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSA9IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0
aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIH0KQEAgLTE2Myw3ICsxNjAsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0
YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFn
ZVB0cik7CiAKQEAgLTI1NCw5ICsyNTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05h
dGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAg
IENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBhZGp1c3RlZERlc3RSZWN0LmhlaWdo
dCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CiAKLSAgICAvLyBB
ZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIGltYWdlID0gSW1hZ2U6OmltYWdlV2l0aENvbG9y
U3BhY2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSk7Ci0KICAgICAvLyBEcmF3IHRoZSBp
bWFnZS4KICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdCwg
aW1hZ2UuZ2V0KCkpOwogfQpAQCAtMjgwLDcgKzI3NCw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5S
ZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghcGF0dGVyblRyYW5z
Zm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwLDkgKzMxNCw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsKICAgICB9CiAK
LSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIHN1YkltYWdlID0gSW1hZ2U6Omlt
YWdlV2l0aENvbG9yU3BhY2Uoc3ViSW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSk7Ci0KICAg
ICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhh
dmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8g
ZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNt
LgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKQEAgLTM1MCw3ICszNDEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVy
blNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKKyAgICAgICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9y
U3BhY2VDcmVhdGVQYXR0ZXJuKG51bGxwdHIpKTsKIAogICAgICAgICBDR0Zsb2F0IGFscGhhID0g
MTsKICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihDR0NvbG9y
Q3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJuLmdldCgpLCAmYWxw
aGEpKTsKQEAgLTM5NCw3ICszODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgICAgIC8v
IFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3RzIHRvIHNpbXVsYXRlIHRoZSBzdHJva2Ugb2YgYSBi
b3JkZXIuCiAgICAgICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwogICAgICAg
ICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkpCi0gICAgICAgICAgICBzZXRDR0Zp
bGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAg
ICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Ryb2tlQ29sb3IoKSk7CiAgICAgICAg
IENHUmVjdCByZWN0c1s0XSA9IHsKICAgICAgICAgICAgIEZsb2F0UmVjdChyZWN0LngoKSwgcmVj
dC55KCksIHJlY3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKICAgICAgICAgICAgIEZsb2F0
UmVjdChyZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBib3JkZXJUaGlja25lc3MsIHJlY3Qud2lkdGgo
KSwgYm9yZGVyVGhpY2tuZXNzKSwKQEAgLTQwMyw3ICszOTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25l
c3MpCiAgICAgICAgIH07CiAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0cyhjb250ZXh0LCByZWN0
cywgNCk7CiAgICAgICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gc3Ryb2tlQ29sb3IoKSkKLSAgICAg
ICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgZmlsbENvbG9yU3Bh
Y2UoKSk7CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3Ip
OwogICAgIH0KIH0KIApAQCAtNDMyLDcgKzQyMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
CiAgICAgaWYgKGRyYXdzRGFzaGVkTGluZSkgewogICAgICAgICAvLyBGaWd1cmUgb3V0IGVuZCBw
b2ludHMgdG8gZW5zdXJlIHdlIGFsd2F5cyBwYWludCBjb3JuZXJzLgogICAgICAgICBjb3JuZXJX
aWR0aCA9IHN0cm9rZVN0eWxlID09IERvdHRlZFN0cm9rZSA/IHRoaWNrbmVzcyA6IHN0ZDo6bWlu
KDIgKiB0aGlja25lc3MsIHN0ZDo6bWF4KHRoaWNrbmVzcywgc3Ryb2tlV2lkdGggLyAzKSk7Ci0g
ICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9y
U3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCkp
OwogICAgICAgICBpZiAoaXNWZXJ0aWNhbExpbmUpIHsKICAgICAgICAgICAgIENHQ29udGV4dEZp
bGxSZWN0KGNvbnRleHQsIEZsb2F0UmVjdChwb2ludDEueCgpLCBwb2ludDEueSgpLCB0aGlja25l
c3MsIGNvcm5lcldpZHRoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0
LCBGbG9hdFJlY3QocG9pbnQxLngoKSwgcG9pbnQyLnkoKSAtIGNvcm5lcldpZHRoLCB0aGlja25l
c3MsIGNvcm5lcldpZHRoKSk7CkBAIC02MDcsNyArNTk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBwYXR0ZXJuU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCkpOworICAgIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRl
UGF0dGVybihudWxscHRyKSk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3BhY2UoY2dDb250
ZXh0LCBwYXR0ZXJuU3BhY2UuZ2V0KCkpOwogCiAgICAgY29uc3QgQ0dGbG9hdCBwYXR0ZXJuQWxw
aGEgPSAxOwpAQCAtODM3LDE3ICs4MjgsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0
LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAgICBDb2xvclNwYWNlIG9s
ZENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAh
PSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmls
bENvbG9yKGNvbnRleHQsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENvbG9y
ICE9IGNvbG9yKQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xvcik7CiAKICAg
ICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVy
cmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0
IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIENHQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0LCBkcmF3T3duU2hhZG93KTsKQEAgLTg2NCwyMSArODU0LDIwIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpCiAgICAgICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8
fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNv
bnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CisgICAgaWYgKG9sZEZpbGxDb2xv
ciAhPSBjb2xvcikKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9y
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENvbG9yIG9sZEZpbGxD
b2xvciA9IGZpbGxDb2xvcigpOwotICAgIENvbG9yU3BhY2Ugb2xkQ29sb3JTcGFjZSA9IGZpbGxD
b2xvclNwYWNlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9y
U3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29s
b3IsIGNvbG9yU3BhY2UpOworICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3IpCisgICAgICAg
IHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKIAogICAgIGJvb2wgZHJhd093blNoYWRv
dyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3coKSAmJiAhbV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9y
IGNhbnZhcyB5ZXQuCiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQs
IGRyYXdPd25TaGFkb3cpOwpAQCAtOTA2LDExICs4OTUsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3Qs
IGNvbnMKICAgICBpZiAoZHJhd093blNoYWRvdykKICAgICAgICAgc3RhdGVTYXZlci5yZXN0b3Jl
KCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9yU3BhY2UgIT0g
Y29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9y
LCBvbGRDb2xvclNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yKQorICAgICAg
ICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDEwICs5MTYsOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogCiAgICAgV2luZFJ1bGUgb2xkRmlsbFJ1bGUgPSBm
aWxsUnVsZSgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwotICAgIENv
bG9yU3BhY2Ugb2xkRmlsbENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwogICAgIAogICAg
IHNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgc2V0RmlsbENvbG9yKGNvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICBzZXRGaWxsQ29sb3IoY29sb3IpOwogCiAgICAgLy8gZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3QgYXJlIGNsaXBwZWQg
b3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3VuZCBpbnNpZGUgdGhl
IGhvbGUuCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkg
JiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OwpAQCAtOTQ5LDcgKzkzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgICAgIHN0
YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsK
LSAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAg
c2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNTksNyArMTA0Nyw3IEBAIHN0YXRpYyB2
b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA5OSw3ICsxMDg3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb24K
ICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93KGNv
bnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMpOwogICAgIGVs
c2UKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1h
a2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNv
bG9yU3BhY2UpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQs
IENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3Io
Y29sb3IpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3co
KQpAQCAtMTM5NiwxMiArMTM4NCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVz
Rm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5JgogICAgIH0K
IAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAgICAgICAgc2V0
Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGxvY2FsU3Ryb2tlQ29sb3IsIHN0cm9rZUNv
bG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBs
b2NhbFN0cm9rZUNvbG9yKTsKIAogICAgIENHQ29udGV4dEZpbGxSZWN0cyhwbGF0Zm9ybUNvbnRl
eHQoKSwgZGFzaEJvdW5kcy5kYXRhKCksIGRhc2hCb3VuZHMuc2l6ZSgpKTsKIAogICAgIGlmIChm
aWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3Io
cGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiBsaW5rLCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKQEAgLTE1MDEsMTEgKzE0ODksMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdz
IG1vZGUpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJv
a2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
c2V0Q0dTdHJva2VDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOwor
ICAgIHNldENHU3Ryb2tlQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNr
bmVzcykKQEAgLTE1MTUsMTEgKzE1MDMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBDR0NvbnRleHRTZXRM
aW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCksIHN0ZDo6bWF4KHRoaWNrbmVzcywgMC5mKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENHRmlsbENvbG9yKHBsYXRm
b3JtQ29udGV4dCgpLCBjb2xvciwgY29sb3JTcGFjZSk7CisgICAgc2V0Q0dGaWxsQ29sb3IocGxh
dGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCAzMjIzMjAy
YjcyNzg4MjcyZjE2ODAzMTY0YjYzYjE3YmRkYTI5YTBjLi45NTA0NjlhYTU2MjQyOWRlMGIyZDVm
MWVlYzQwZTM4MjJlY2FmYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIFJlZlB0
cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvciwgU2NhbGVCZWhhdmlvCiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZO
ZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSgpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAg
ICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0
KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CisgICAgICAgIFJldGFpblB0cjxD
R0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBs
b2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBsb2dp
Y2FsU2l6ZSgpLndpZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSAvKiBGSVhNRSAqLywg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJs
ZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygp
LCBsb2dpY2FsU2l6ZSgpKSk7CiAgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFj
ZSA9IHNjYWxlU2l6ZVRvVXNlclNwYWNlKGxvZ2ljYWxTaXplKCksIG1fZGF0YS5iYWNraW5nU3Rv
cmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CkBAIC0yMjgsMTAgKzIyOCw5IEBAIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7
Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgp
KSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgp
IHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0yNDEsMTAgKzI0MCwx
MCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLAogCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdl
KGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJh
d05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7
CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRT
cmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CkBAIC0y
NTIsMTQgKzI1MSwxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogICAgIGlmICghY29udGV4
dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKCZkZXN0Q29udGV4dCA9
PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAg
ICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdT
dG9yZSkpIC8vIERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHku
Ci0gICAgICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVk
U3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFj
ZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGNvcHktPmRyYXdQ
YXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9IGNvcHlJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5k
ZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwg
YmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBpbWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRl
cm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tp
bmdTdG9yZSkpCi0gICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRq
dXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgc3R5bGVDb2xv
clNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAppbmRleCA3
NWFiYmY4Y2QxNjRjZDUzOTU4ZDRmZDY2Y2ExM2E5NDE4Njk4NzQ5Li5mM2RkMDIyYTkwNWE2MmU0
YzExODM5YWRkNGNhNmYwYjA5MzYxYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtNDUsMzUgKzQ1LDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlOjppbWFnZVdpdGhDb2xv
clNwYWNlKENHSW1hZ2VSZWYgb3JpZ2luYWxJbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQot
ewotICAgIENHQ29sb3JTcGFjZVJlZiBvcmlnaW5hbENvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29s
b3JTcGFjZShvcmlnaW5hbEltYWdlKTsKLQotICAgIC8vIElmIHRoZSBpbWFnZSBhbHJlYWR5IGhh
cyBhIChub24tZGV2aWNlKSBjb2xvciBzcGFjZSwgd2UgZG9uJ3Qgd2FudCB0bwotICAgIC8vIG92
ZXJyaWRlIGl0LCBzbyByZXR1cm4uCi0gICAgaWYgKCFvcmlnaW5hbENvbG9yU3BhY2UgfHwgIUNG
RXF1YWwob3JpZ2luYWxDb2xvclNwYWNlLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkpKQotICAg
ICAgICByZXR1cm4gb3JpZ2luYWxJbWFnZTsKLQotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgQ29sb3JTcGFjZURldmljZVJHQjoKLSAgICAgICAgcmV0dXJuIG9yaWdpbmFsSW1h
Z2U7Ci0gICAgY2FzZSBDb2xvclNwYWNlU1JHQjoKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbEltYWdlLCBzUkdCQ29sb3JTcGFj
ZVJlZigpKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgotICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKG9yaWdpbmFsSW1hZ2UsIGxp
bmVhclJHQkNvbG9yU3BhY2VSZWYoKSkpOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBvcmlnaW5hbEltYWdlOwotfQotCiB2b2lkIEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKCFuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjdHh0LmRyYXdQYXR0
ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0
eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1Bh
dHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywg
b3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAg
ICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRl
eCA4MmEzYTViNGRlYThmNGY2NjI1YTJlYWY1NDczZDNhZWRlYzY0ZTVhLi5iZmNlYTI4ODk4Nzc5
OTZjMGU2OGQyN2E5NjhhNzE3MzViNmQ3MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMTc5LDcg
KzE3OSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRl
ZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQor
dm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsK
ICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTkxLDcgKzE5MSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAgICAgIGlmIChtX2NhY2hlZEltYWdlQnVm
ZmVyKQotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fY2FjaGVkSW1hZ2VC
dWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKm1fY2FjaGVkSW1hZ2VCdWZmZXIsIGRzdFJlY3QpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhjb250ZXh0
LCBkc3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgICAgIGRyYXdQREZQYWdlKGNvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5oCmluZGV4IDdmZmQ2MDNiNmYxYmYzOTAzMTU1NGNiMGQwN2UzM2Y1ZjkyY2Q4YmYu
LjlhNGMxZTllMGI1MWUzOWQ1MGE0NGIxOWI5MTU1NWJkOWIwNTY5NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgK
QEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNI
ZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
RmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFs
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCmluZGV4IDgzOWNhMDNkOTM2ZjUyZDYzNDA1YjI1ZWU5
OWY4OTgwNmNlYmQ3MjMuLmQxZGNiZDY2ZWVhZWMzNmVkYTFmNzgyYTUyNGMwYmM1MDViNWQyYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YXNjYWRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENhc2NhZGVDb2NvYS5tbQpAQCAtMzMzLDkgKzMzMyw3IEBAIHZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHCiAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dC
bHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JT
cGFjZTsKLSAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JT
cGFjZSgpOwotICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwg
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZ2V0U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgQWZmaW5lVHJhbnNm
b3JtIGNvbnRleHRDVE0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIGZsb2F0IHN5bnRoZXRpY0Jv
bGRPZmZzZXQgPSBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKQEAgLTM1MiwxNCArMzUwLDE0
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3co
KTsKICAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAg
ICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5n
cmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29s
b3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0Zp
bGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KHNoYWRvd0ZpbGxDb2xvcik7CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9y
aW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUg
ZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZ
ID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CiAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5j
ZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgICAgICBpZiAoc3ludGhl
dGljQm9sZE9mZnNldCkKICAgICAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQ
b2ludChzaGFkb3dUZXh0WCArIHN5bnRoZXRpY0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwgZm9u
dCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0
IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKLSAgICAg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CisgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7CiAgICAgfQogCiAgICAgaWYgKHVz
ZUxldHRlcnByZXNzRWZmZWN0KQpAQCAtMzcwLDcgKzM2OCw3IEBAIHZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHCiAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChwb2ludC54
KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBwb2ludC55KCkpLCBmb250LCBjZ0NvbnRleHQsIGds
eXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKGhhc1NpbXBsZVNo
YWRvdykKLSAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAjaWYgIVBMQVRG
T1JNKElPUykKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAKaW5kZXggZWRlZjU3ODAxODJmY2M4MGZlNTc5NTM5MTJkNGFkOTVhMzc2YTAzYy4uZmY5
MTExYzRiNjAzMjU0NmQ0NzQzYzFjNGVmMDc4NWIzYzQ2MTRiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC03NSw4
ICs3NSw4IEBAIHZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAo
IWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZlcjIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOwor
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdS
ZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNv
dXJjZU92ZXIsIG1fbW9kZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4
IDc4ZmZkY2U0ZDU5MWFkNmE4MTIyZmU2Mzg4MjM5M2ZmNTUxYWU3NzIuLjY4NjBkN2RkZmU2YTAx
NWJlZjk4NDYwYzhiY2I3ZWJjYzRmZTU2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
IAogICAgIEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAg
aWYgKGluQnVmZmVyKQotICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1
ZmZlcigqaW5CdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKICAgICBJbnRSZWN0IGltYWdlUmVjdChJ
bnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZElt
YWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCA5YTE1NmY4OTRkZjE0M2Vl
OGUzODU4Njg3OGQwNzA5MjI4ZTFiZmU5Li44ODg4NDZhY2NlZDAyMjJiOGVjYjg5NDcxNGUyYmUx
NmI0ZTFkMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjgxLDggKzI4MSw4IEBAIHZvaWQgRkVD
b21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUjoKLSAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAg
IC8vIEFwcGxpZXMgb25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsy
OTQsMjEgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAg
ICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFi
c29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0
ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsK
ICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJz
b2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERl
c3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVz
dGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGFkanVzdGVkRGVzdGlu
YXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3Qs
IENvbXBvc2l0ZVNvdXJjZUluKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVD
T01QT1NJVEVfT1BFUkFUT1JfT1VUOgotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3V0KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIs
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50
UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVE
ZXN0aW5hdGlvbk91dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BF
UkFUT1JfQVRPUDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgp
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29s
dXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
KmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IENvbXBvc2l0ZVhPUik7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IGRjZTVhYWUyNWYyOTdhYTg4YjZmOGE4M2NiYzJk
YTg0YjAwY2U5NmUuLmMwZTg5NDI0MTU5MWY3MzQzZmM3NmU0ZWU5NDY1ZDM0M2I4MmFhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtOTMsMTAgKzkyLDEwIEBAIHZvaWQgRkVEcm9wU2hhZG93
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRD
b250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEFs
cGhhKG1fc2hhZG93T3BhY2l0eSk7Ci0gICAgcmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
KnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNl
dCk7CisgICAgcmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3
aW5nUmVnaW9uV2l0aE9mZnNldCk7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRBbHBoYSgxKTsKIAot
ICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhibHVyUmFkaXVzLCBvZmZzZXQsIG1fc2hhZG93
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRv
dyhibHVyUmFkaXVzLCBvZmZzZXQsIG1fc2hhZG93Q29sb3IpOwogCiAgICAgLy8gVE9ETzogRGly
ZWN0IHBpeGVsIGFjY2VzcyB0byBJbWFnZUJ1ZmZlciB3b3VsZCBhdm9pZCBjb3B5aW5nIHRoZSBJ
bWFnZURhdGEuCiAgICAgSW50UmVjdCBzaGFkb3dBcmVhKEludFBvaW50KCksIHJlc3VsdEltYWdl
LT5pbnRlcm5hbFNpemUoKSk7CkBAIC0xMDcsMTAgKzEwNiwxMCBAQCB2b2lkIEZFRHJvcFNoYWRv
dzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5
KFByZW11bHRpcGxpZWQsIHNyY1BpeGVsQXJyYXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBz
aGFkb3dBcmVhLCBJbnRQb2ludCgpLCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0
ZVN5c3RlbSk7CiAKICAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVTb3VyY2VJbik7Ci0gICAgcmVzdWx0Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9y
KTsKICAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0
aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAg
ICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIGRy
YXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFRHJvcFNoYWRvdzo6ZHVtcCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAppbmRl
eCA3ZWQ0MjlmMDMzOTZlODJjODk2YjUzNjcwMjI2ZDAxOGFiMjM3MmE0Li5lOGRhOGQzMWY0NTVi
ZDllZGQ4Y2IwOWEzY2JmZTE5YzdhNDEyZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBDb2xvciBjb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoZmxvb2RDb2xvcigpLnJn
YigpLCBmbG9vZE9wYWNpdHkoKSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxsUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZp
bGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgp
KSwgY29sb3IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggYTAyZDlm
ZGFlMjQ1YTVmZWRjNTE5YzgzMDBjMDMzMWQwZDcyMWJlNy4uMzJjZjI1NGQ1ZWNhZDMxNDYzYmE1
M2RkYTQyODY1OTk0NmM0NTVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgRkVN
ZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChp
KTsKICAgICAgICAgaWYgKEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVy
KCkpCi0gICAgICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCAxOGEyZTc5MWQ1ODNiYWNkY2Qx
YzdiZTZkMDU3ZjUwYjliNTE5MWNhLi5kZGVmNTg3OTFjZmEyNDg1OGNhZmE2YjQyMDNjMGNkMjQ1
Y2UxZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVy
JiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVy
LmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fZHgpLCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1f
ZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24pOworICAgIHJlc3VsdEltYWdl
LT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbik7CiB9
CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IGExODdiNzRmZmZmZGQ1YTk3NDRk
YzY5N2NjYzVlZWFjMjBlZGYzMDIuLmM3MDQ0YTAyNzFhNGJlMmU2ZDliY2FhMmUwMGVlNjI1ZTcy
ZGM5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAKICAgICBHcmFwaGljc0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0
aWxlSW1hZ2UtPmNvbnRleHQoKTsKICAgICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5N
YXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGls
ZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICB0aWxlSW1hZ2VD
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
LmxvY2F0aW9uKCkpOwogCiAgICAgYXV0byB0aWxlSW1hZ2VDb3B5ID0gdGlsZUltYWdlLT5jb3B5
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCF0aWxlSW1hZ2VDb3B5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcAppbmRleCAxZTNiOTFhMjI0NDhmMThjYWE0MTZmYjEwNmEyODQwYTAwMmEzMWJiLi43
MjQ4OTNiYWEwNTgyMWYxYmU1OWFlNzZmNWU2ZDFlY2ZkNTA4YWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cApAQCAtNTgsOCArNTgsOCBAQCB2b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KEZsb2F0UG9p
bnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIGZpbHRlckNvbnRleHQuZmls
bFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgZmlsdGVy
Q29udGV4dC5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjayk7CisgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBJbnRQb2ludCgpLCBDb21wb3NpdGVE
ZXN0aW5hdGlvbkluKTsKIH0KIAogdm9pZCBTb3VyY2VBbHBoYTo6ZHVtcCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFw
aGljLmNwcAppbmRleCBkZjRlZTZmMDc5YzU0NTc1NDU5ZTg0MzY5MjY1OWQ2Y2QzMzAwZWJiLi42
MWJiMWI4YmM5MjUzNzY2NzUxZjY2M2E0NDdjOTU1YzFmZmUxOWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigq
c291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAgIHJlc3Vs
dEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgSW50UG9pbnQo
KSk7CiB9CiAKIHZvaWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IGJlMzUwNzYwOTMwY2FhYmNj
MWNmZWYzYmEyNGMyMTQyOTA3MTA2OWUuLjIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDli
ODFkOWQ3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9J
Y29uSU9TLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBz
cmNSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJl
Y3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQo
KSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBhNzFiODI5OTQ2ODU4Yjk3ZjZj
ZTk3YjRjYjM3MDFjYzBiYWJjNjgzLi5kOGQxMDU1OGIyZmQzNTFiNmQ0MWI2Mjg4M2ZjMDkzNjc5
YWUyODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUubW0KQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVy
KExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgICAgICBD
R0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCiAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShjb250ZXh0LCBmcmFtZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2luLnkpOwotICAgICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xv
ckZvckdyaWRUaWxlQm9yZGVyKFtsYXllciB0aWxlR3JpZF0pLCBDb2xvclNwYWNlRGV2aWNlUkdC
KSk7CisgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNo
ZWRDR0NvbG9yKGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoW2xheWVyIHRpbGVHcmlkXSkpKTsKICAg
ICAgICAgCiAgICAgICAgIENHUmVjdCBsYWJlbEJvdW5kcyA9IFtsYXllciBib3VuZHNdOwogICAg
ICAgICBsYWJlbEJvdW5kcy5zaXplLndpZHRoID0gMTAgKyAxMiAqIHN0cmxlbih0ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCmlu
ZGV4IDJhOWE1ZmNhZGJkYjYxZDliYWYwNWM3ZDUxMDdjOWNmYmJhOWJiYmMuLjMwYTdkYmNiOTZj
ZDY0NmUxYzVhOTYzNzg4ZGZlZTAwM2U1OTVkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQpAQCAtMTE3LDcgKzExNyw3IEBAIHZv
aWQgTGVnYWN5VGlsZUdyaWRUaWxlOjpzaG93Qm9yZGVyKGJvb2wgZmxhZykKIHsKICAgICBMZWdh
Y3lUaWxlTGF5ZXIqIGxheWVyID0gbV90aWxlTGF5ZXIuZ2V0KCk7CiAgICAgaWYgKGZsYWcpIHsK
LSAgICAgICAgW2xheWVyIHNldEJvcmRlckNvbG9yOmNhY2hlZENHQ29sb3IobV90aWxlR3JpZC0+
dGlsZUNhY2hlKCkuY29sb3JGb3JHcmlkVGlsZUJvcmRlcihtX3RpbGVHcmlkKSwgQ29sb3JTcGFj
ZURldmljZVJHQildOworICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dDb2xv
cihtX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5jb2xvckZvckdyaWRUaWxlQm9yZGVyKG1fdGlsZUdy
aWQpKV07CiAgICAgICAgIFtsYXllciBzZXRCb3JkZXJXaWR0aDowLjVmXTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6bmlsXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tCmluZGV4IGY2ZWM5MDllOGIyMmNkZWE3MGVhZTQ4MWU3YzY4NGQyMmQyNmJk
MDEuLjNlMmE4ZDYyMmE5YzU1NzA3ZDI5MjIyZDk2MmY1M2M4YzM2NTNlODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbigpCiAgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMp
OwogICAgIFJldGFpblB0cjxDQUxheWVyPiB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IFttX3ZpZGVv
RnVsbHNjcmVlblZpZXcgbGF5ZXJdOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhp
cywgdmlkZW9GdWxsc2NyZWVuTGF5ZXJdIHsKLSAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVy
IHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3Bh
cmVudCwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQildOworICAgICAgICBbdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29s
b3I6OnRyYW5zcGFyZW50KV07CiAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXNdIHsKICAgICAgICAg
ICAgIG1faW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IDVmYjA1MmQ0NTY3ZGEwMGJkODJkZTIxYzlh
ZDY5MDEwNTVkNWQ5MTkuLjQxNmQ1ZGQ5NTU2NzliYjgzNmU0MjkyMTE4ODBjMmFiNzExMDk2ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMjMy
LDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lkIGRyYXdBdFBvaW50KE5TU3RyaW5nICpzdHJpbmcsIE5T
UG9pbnQgcG9pbnQsIE5TRm9udCAqZm9udCwgTlNDb2xvciAqCiAgICAgICAgIENHRmxvYXQgYmx1
ZTsKICAgICAgICAgQ0dGbG9hdCBhbHBoYTsKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2lu
Z0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46
JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1
LCBhbHBoYSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUg
KiAyNTUsIGFscGhhICogMjU1KSk7CiAgICAgICAgIAogICAgICAgICB3ZWJDb3JlRm9udC5kcmF3
VGV4dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAoZmxpcHBlZCA/
IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggZTkzZDg3MmUzNjZh
Mzc1MjMyNmQwMmNjZmI4MmYwMTY0MzhhZDUwNi4uOWNmZDA0ODk5MzJjZmU1NjgxZmMxYWIwMGI3
MDM0MWExMzc1YmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxiYXJUaGVtZU1hYy5tbQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVN
YWM6OnNldFVwT3ZlcmhhbmdBcmVhQmFja2dyb3VuZChDQUxheWVyICpsYXllciwgY29uc3QgQ29s
b3ImCiAgICAgc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3IgPSBs
aW5lbkJhY2tncm91bmRDb2xvcigpLmxlYWtSZWYoKTsKICAgICAvLyBXZSBvcGVyYXRlIG9uIHRo
ZSBDQUxheWVyIGRpcmVjdGx5IGhlcmUsIHNpbmNlIEdyYXBoaWNzTGF5ZXIgZG9lc24ndCBoYXZl
IHRoZSBjb25jZXB0CiAgICAgLy8gb2YgcGF0dGVybiBpbWFnZXMsIGFuZCB3ZSBrbm93IHRoYXQg
V2ViQ29yZSB3b24ndCB0b3VjaCB0aGlzIGxheWVyLgotICAgIGxheWVyLmJhY2tncm91bmRDb2xv
ciA9IGN1c3RvbUJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGN1c3Rv
bUJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQikgOiBjYWNoZWRMaW5lbkJhY2tn
cm91bmRDb2xvcjsKKyAgICBsYXllci5iYWNrZ3JvdW5kQ29sb3IgPSBjdXN0b21CYWNrZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihjdXN0b21CYWNrZ3JvdW5kQ29sb3IpIDog
Y2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3I7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6
OnJlbW92ZU92ZXJoYW5nQXJlYUJhY2tncm91bmQoQ0FMYXllciAqbGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggZTc1OTFiZWRiZjRkNWUwZDY5ZTcwZDcz
ZTcwNDI5ZWRmODFiYTE1Yi4uZjFlMjExM2NmN2FhNTExMTFlMGM0ZmU3NzAxYzcxNDUxOTFhMWMx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtNjkyLDcgKzY5
Miw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KE5TQ2VsbCAqY2VsbCwgR3JhcGhpY3NDb250CiAgICAgICAgICAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAg
ICAgICAgICAgbmVlZHNSZXBhaW50ID0gZHJhd0NlbGxPckZvY3VzUmluZ0ludG9SZWN0V2l0aFZp
ZXcoY2VsbCwgaW1hZ2VCdWZmZXJEcmF3UmVjdCwgdmlldywgZHJhd0J1dHRvbkNlbGwsIGRyYXdG
b2N1c1JpbmcpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZVNSR0IsIHJlY3QubG9jYXRpb24oKSAtIEZsb2F0U2l6ZShi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCkp
OworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHJlY3QubG9j
YXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZv
Y3VzUmVjdE91dGxpbmVXaWR0aCkpOwogICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAg
IH0KICAgICBpZiAoZHJhd0J1dHRvbkNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAppbmRleCBiMDUz
YzQyYmFhOWZhMWQ0NmJmYmM5MmQ4NzkzMGJmMjBmOWQzOTg2Li42YjY1NjY4OGVlOTAwZDdjYmFh
NzkxYzZhNzkyNzM0MjNiMzRkY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKQEAgLTIzNSw3ICsy
MzUsNyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKICAgICAgICAgY29udGV4dC5z
Y2FsZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICAgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9p
bnQoMCwgMCksIEludFNpemUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAg
IGNvbnRleHQuZmlsbFJlY3QocGFpbnRSZWN0LCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBhaW50UmVjdCwgQ29sb3I6OmJsYWNr
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Ny
b2xsYmFyVGhlbWVNb2NrLmNwcAppbmRleCA5OTU0NDdiNTY4MDEwMzhjZmZlMzMxNTg5Yzc3NjQw
YmNmZmM4MTRhLi45YWQ3NTdmM2ViYTU3MjZiMWQyMWM1YWQ0ZWRjZGMxOTliNjhkMTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2su
Y3BwCkBAIC00NCwxMyArNDQsMTMgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogCiB2b2lkIFNjcm9s
bGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQogewot
ICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5hYmxlZCgpID8gQ29s
b3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENv
bG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsKICAgICBpZiAoc2Nyb2xs
YmFyLmVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0aHVtYlJlY3QsIENvbG9y
OjpkYXJrR3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QodGh1bWJSZWN0LCBDb2xvcjo6ZGFya0dyYXkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCAyZThmZDBiYjBhMmUwYmE0M2I2ZWM1NTYwYTQz
NGQ2YmZmZmRiNWJmLi4zNjg1Y2JlMTJiYmYxMjllNTAyNzNmZWI1ZjFiMTkwMzkxMDM1NWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTQ2LDExICs0Niwx
MSBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5l
U3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBsaW5lU3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7
CiAgICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKQotICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwogICAgIGJvb2wgc2V0U2hhZG93
ID0gZmFsc2U7CiAgICAgaWYgKGxpbmVTdHlsZS50ZXh0U2hhZG93KCkpIHsKICAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3coTGF5b3V0U2l6ZShsaW5lU3R5bGUudGV4dFNoYWRvdygpLT54KCksIGxp
bmVTdHlsZS50ZXh0U2hhZG93KCktPnkoKSksCi0gICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNo
YWRvdygpLT5yYWRpdXMoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+Y29sb3IoKSwgbGluZVN0
eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5y
YWRpdXMoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+Y29sb3IoKSk7CiAgICAgICAgIHNldFNo
YWRvdyA9IHRydWU7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIExhCiAgICAgICAgIC8vIFNlbGVjdCB0aGUgY29ycmVjdCBjb2xvciBmb3IgcGFpbnRpbmcg
dGhlIHRleHQuCiAgICAgICAgIENvbG9yIGZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0
Q29sb3IoKSA/IHBhaW50SW5mby5mb3JjZWRUZXh0Q29sb3IoKSA6IGJsb2NrRmxvdygpLnNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoZm9yZWdyb3VuZC5pc1ZhbGlkKCkg
JiYgZm9yZWdyb3VuZCAhPSB0ZXh0Q29sb3IpCi0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihmb3JlZ3JvdW5kLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKGZvcmVncm91bmQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBX
aHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZs
YWdzIGJlbG93LgpAQCAtNjksNyArNjksNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYQogCiAg
ICAgLy8gUmVzdG9yZSB0aGUgcmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3Ig
IT0gY29udGV4dC5maWxsQ29sb3IoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4
dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IodGV4dENvbG9yKTsKIAogICAgIGlmIChzZXRTaGFkb3cpCiAgICAgICAgIGNvbnRleHQu
Y2xlYXJTaGFkb3coKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWlu
dFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBw
YQogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRP
ZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgp
LCAwLCByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRl
ckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxl
LCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3Qs
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBj
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0Rl
dmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCku
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjKTsKIH0KIAogYm9v
bCBFbGxpcHNpc0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVu
aXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RB
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAppbmRleCBmZDUwOWU4ZWFkNTk2OTdkNDYwZDM4ZDMxM2UzZTA0MTZmYTY1ODc3Li42
NTAyOTljNDgwZmZlNTRhZDgzMmU4MTU5M2IxZTkwYTJkNzEwNWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTQyOSwxMCAr
NDI5LDggQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZl
Y3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkMKICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0
ID0gZmlsdGVyLT5vdXRwdXRSZWN0KCk7CiAgICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0
LngoKSwgbV9wYWludE9mZnNldC55KCkpOwogCi0gICAgaWYgKEltYWdlQnVmZmVyKiBvdXRwdXRC
dWZmZXIgPSBmaWx0ZXItPm91dHB1dCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKm91dHB1dEJ1ZmZlciwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwKLSAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
ZGVzdFJlY3QsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpKSk7Ci0gICAgfQorICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0cHV0QnVmZmVyID0g
ZmlsdGVyLT5vdXRwdXQoKSkKKyAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqb3V0cHV0QnVmZmVyLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3Jl
bmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwog
CiAgICAgZmlsdGVyLT5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAwMjFhMWFiNjY5MWRiYjExN2Fl
MjAzZTM2MjEyNDgzOGZlN2UzOWJiLi5jNzhiMmNhZTYwMzgxODQ2ZWU2OTAwM2NlMjMwZWUyMDIx
ODc5ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBA
IC02OTcsNyArNjk3LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICAgICAgYyA9IENv
bG9yKDB4ZmYgLSBjLnJlZCgpLCAweGZmIC0gYy5ncmVlbigpLCAweGZmIC0gYy5ibHVlKCkpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAg
IHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjLCBzdHlsZS5j
b2xvclNwYWNlKCkpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFw
aGljc0NvbnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoYykpOyAvLyBEb24ndCBkcmF3IHRl
eHQgYXQgYWxsIQogICAgIAogICAgIC8vIElmIHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgbGV0IHRo
ZSB0aGluZyBiZWluZyBwYWludGVkIGluIHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMg
b3duIGhpZ2hsaWdodC4KQEAgLTcyNCw3ICs3MjQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBh
aW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYg
YgogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChib3hPcmlnaW4u
eCgpLCBib3hPcmlnaW4ueSgpIC0gZGVsdGFZLCBtX2xvZ2ljYWxXaWR0aCwgc2VsZWN0aW9uSGVp
Z2h0KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVj
dGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0Rl
dmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCku
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5bGUu
Y29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKGJveE9yaWdpbik7CkBAIC03
NDUsMTMgKzc0NSwxMyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRgogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIENvbG9yIGNvbXBvc2l0
aW9uQ29sb3IgPSBDb2xvcjo6Y29tcG9zaXRpb25GaWxsOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb21wb3NpdGlvbkNvbG9yLCBzdHlsZS5jb2xv
clNwYWNlKCkpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGlj
c0NvbnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29tcG9zaXRpb25Db2xvcikpOyAvLyBE
b24ndCBkcmF3IHRleHQgYXQgYWxsIQogCiAgICAgTGF5b3V0VW5pdCBkZWx0YVkgPSByZW5kZXJl
cigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9t
KCkgLSBsb2dpY2FsQm90dG9tKCkgOiBsb2dpY2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAg
ICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJv
eE9yaWdpbi55KCkgLSBkZWx0YVksIDAsIHNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVu
IHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlLCBmb250KTsKICAgICBmb250LmFkanVz
dFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3Mp
OwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5n
RGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgY29tcG9zaXRpb25Db2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRo
V3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGNvbXBvc2l0aW9uQ29sb3IpOwogfQog
CiBzdGF0aWMgU3Ryb2tlU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoVGV4
dERlY29yYXRpb25TdHlsZSBkZWNvcmF0aW9uU3R5bGUpCkBAIC05NDksNyArOTQ5LDYgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICBzZXRDbGlwID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgp
OwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAKICAgICBkbyB7CkBAIC05NjEsNyArOTYw
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aW50IHNoYWRvd1ggPSBpc0hvcml6b250YWwoKSA/IHNoYWRvdy0+eCgpIDogc2hhZG93LT55KCk7
CiAgICAgICAgICAgICBpbnQgc2hhZG93WSA9IGlzSG9yaXpvbnRhbCgpID8gc2hhZG93LT55KCkg
OiAtc2hhZG93LT54KCk7Ci0gICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUo
c2hhZG93WCwgc2hhZG93WSAtIGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93
LT5jb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KEZs
b2F0U2l6ZShzaGFkb3dYLCBzaGFkb3dZIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ctPnJhZGl1cygp
LCBzaGFkb3ctPmNvbG9yKCkpOwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAg
ICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwogICAgICAgICB9CkBAIC05NzAsNyArOTY5
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogCiAgICAgICAgIC8vIFRoZXNlIGRlY29yYXRp
b25zIHNob3VsZCBtYXRjaCB0aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1YWxP
dmVyZmxvd0ZvckRlY29yYXRpb25zKCkKICAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVj
b3JhdGlvblVuZGVybGluZSkgewotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1
bmRlcmxpbmVDb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKHVuZGVybGluZUNvbG9yKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5
bGUodGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUodW5kZXJsaW5lU3R5bGUpKTsKICAg
ICAgICAgICAgIGNvbnN0IGludCB1bmRlcmxpbmVPZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zm
c2V0KGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRy
aWNzKCksIHRoaXMsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKIApAQCAtOTk0LDcgKzk5Myw3
IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKLSAgICAgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3Iob3ZlcmxpbmVDb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lQ29sb3IpOwogICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VT
dHlsZShvdmVybGluZVN0eWxlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKG92ZXJsaW5lU3R5bGUp
IHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKQEAgLTEwMTUs
NyArMTAxNCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gp
IHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2hDb2xvciwg
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJv
dWdoQ29sb3IpOwogICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3Jh
dGlvblN0eWxlVG9TdHJva2VTdHlsZShsaW5ldGhyb3VnaFN0eWxlKSk7CiAgICAgICAgICAgICBz
d2l0Y2ggKGxpbmV0aHJvdWdoU3R5bGUpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRp
b25TdHlsZVdhdnk6IHsKQEAgLTExMjcsNyArMTEyNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFBvCiAKICAgICBDb2xvciBjb2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIo
KS50aGVtZSgpLnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5k
ZXJlcigpLnRoZW1lKCkucGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigp
OwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IsIHN0
eWxlLmNvbG9yU3BhY2UoKSkpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQorICAgIHVwZGF0
ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb2xvcikpOyAvLyBEb24n
dCBkcmF3IHRleHQgYXQgYWxsIQogCiAgICAgLy8gVXNlIHNhbWUgeSBwb3NpdGlvbmluZyBhbmQg
aGVpZ2h0IGFzIGZvciBzZWxlY3Rpb24sIHNvIHRoYXQgd2hlbiB0aGUgc2VsZWN0aW9uIGFuZCB0
aGlzIGhpZ2hsaWdodCBhcmUgb24KICAgICAvLyB0aGUgc2FtZSB3b3JkIHRoZXJlIGFyZSBubyBw
aWVjZXMgc3RpY2tpbmcgb3V0LgpAQCAtMTE0Miw3ICsxMTQxLDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UG8KICAgICBpZiAoc2VsZWN0aW9uUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0
aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVj
dGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKSwgcnVuLmx0cigpKSwgY29sb3IpOwogfQogICAgIAogdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERvY3VtZW50TWFya2VycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgYm9vbCBiYWNrZ3JvdW5kKQpAQCAtMTI2MSw3ICsxMjYwLDcgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmwKICAgICBzdGFydCArPSAxOwogICAgIHdpZHRoIC09IDI7CiAKLSAg
ICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZS5jb2xvciwgcmVuZGVyZXIoKS5zdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUu
Y29sb3IpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwog
ICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0
YXJ0LCBib3hPcmlnaW4ueSgpICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdp
ZHRoLCByZW5kZXJlcigpLmRvY3VtZW50KCkucHJpbnRpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3MzFhMGExNTY3NjVlMGE2NjNkODgxOTY2
ZDdhOWMxYWU4NmIxN2FhLi45M2M3MDZjMDcwNDViYjZiYjllNTRjODk1YzY1ZDAzNjk2MWY1ZGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE5NzMsNyAr
MTk3Myw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRl
ckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJl
Y3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNh
bFBvc2l0aW9uLCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lk
dGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludElu
Zm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZp
bGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIHJldHVybiBn
YXBSZWN0OwogfQogCkBAIC0xOTkwLDcgKzE5OTAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2Nr
Ojpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBM
YQogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlz
aWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tM
b2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBs
b2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5j
b250ZXh0KCkuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpLCBzZWxPYmotPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5j
b250ZXh0KCkuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpKTsKICAgICByZXR1cm4gZ2FwUmVjdDsKIH0KIApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgTGF5
b3V0UmVjdCBSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2Nr
JiByb290QmxvY2ssIGNvbnN0IEwKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9j
ay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExh
eW91dFJlY3Qocm9vdEJsb2NrTG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RC
bG9ja0xvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0g
ICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMmUwYzc2MjY0NDJjMjBiZTQ3ZGI3
OGJjN2VmMWIxMDc5ZmRiMzU2ZS4uMzU3M2MxM2M4YTMxZDFkNDhhNjQ3Yzk5NjVmYjczMzlmN2Nj
NWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE1NDUsNyAr
MTU0NSw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludENsaXBwaW5nTWFzayhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIHJldHVybjsKIAogICAg
IExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsK
LSAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50UmVj
dCksIENvbG9yOjpibGFjaywgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNr
KTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZDY5YzI3YjQy
NDcyYzg0OWQxOGI1ZmJmNDA5YjkyNzVmMWRiNmZmMC4uODM4ZGE4NTQ3ODdmYmEyNjIwNzdiMzU0
NzU2MmNlNjUxN2ZiMDI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC01ODksOSArNTg5LDkgQEAgc3RhdGljIHZvaWQgYXBw
bHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVy
U3R5bGUqIHMKIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoYm94U2hhZG93LT54KCksIGJv
eFNoYWRvdy0+eSgpKTsKICAgICBpZiAoIWJveFNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkK
LSAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1
cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBj
b250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNo
YWRvdy0+Y29sb3IoKSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRv
dyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwg
c3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNo
YWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpKTsKIH0K
IAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1h
Z2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZsb3dC
b3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCkBAIC02ODAsMTUg
KzY4MCwxNSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVu
ZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgRmxvYXRSb3Vu
ZGVkUmVjdCBwaXhlbFNuYXBwZWRCb3JkZXIgPSBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3Rl
ZEZvckJsZWVkQXZvaWRhbmNlKGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJv
eFNpemUsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdl
KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKTsK
ICAgICAgICAgICAgIGlmIChwaXhlbFNuYXBwZWRCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5m
aWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yKTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpOwogICAgICAgICAgICAgICAg
IGNsaXBSb3VuZGVkSW5uZXJSZWN0KGNvbnRleHQsIHBpeGVsU25hcHBlZFJlY3QsIHBpeGVsU25h
cHBlZEJvcmRlcik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBw
ZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0Nv
bG9yKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBl
ZFJlY3QsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdDb2xvcik7CiAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTgxNywxMCArODE3LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAg
ICAgICAgICAgICAgICAgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQog
ICAgICAgICAgICAgICAgICAgICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7
CiAKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFp
bnRpbmcsIGJhc2VDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGlu
ZywgYmFzZUNvbG9yLCBDb21wb3NpdGVDb3B5KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJh
c2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgICAgICBDb21w
b3NpdGVPcGVyYXRvciBvcGVyYXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3Np
dGVDb3B5IDogY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIHN0eWxl
KCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAg
ICAgIGNvbnRleHQuY2xlYXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAg
ICB9CkBAIC04MzUsMTIgKzgzNSwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3Vy
Y2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGNvbnRleHQu
c2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVt
aW5hbmNlKTsKICAgICAgICAgICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQ
YWludEF0TG93UXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVT
aXplKCkpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIHN0eWxl
KCkuY29sb3JTcGFjZSgpLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21l
dHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNl
U2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRN
b2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZykpOworICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5
LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2Vv
bWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRp
b25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAobWFza0ltYWdlICYmIGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewot
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbWFza0ltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgICAgIGNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5h
dGlvbkluKTsKICAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0K
IH0KQEAgLTE2OTEsNyArMTY5MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAg
ICAgICAgICBwYXRoLmFkZFJlY3QocGl4ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVf
RVZFTk9ERCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2Vz
W2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2Vd
LmNvbG9yKCkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IApAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSk7CiAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTE3NTIsNyArMTc1Miw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hT
aWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIERPVFRFRDoKICAgICBjYXNlIERBU0hFRDogewotICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAKICAgICAgICAg
Ly8gVGhlIHN0cm9rZSBpcyBkb3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBp
cyB0aGUgCiAgICAgICAgIC8vIG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhl
IHN0cm9rZSBpcyBjbGlwcGVkIG9mZi4gCkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LAogICAgIH0KIAogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHls
ZShOb1N0cm9rZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9y
KTsKICAgICBncmFwaGljc0NvbnRleHQuZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhi
b3JkZXJSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIApAQCAtMjI2
NSw5ICsyMjY1LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3co
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGZpbGxS
ZWN0Lm1vdmUoZXh0cmFPZmZzZXQpOwogCiAgICAgICAgICAgICBpZiAoc2hhZG93LT5pc1dlYmtp
dEJveFNoYWRvdygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogCiAgICAg
ICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucGl4ZWxTbmFw
cGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAg
ICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEZpbGxSZWN0ID0gZmlsbFJlY3QucGl4ZWxT
bmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0yMjg1
LDEyICsyMjg1LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93
KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAg
aW5mbHVlbmNlUmVjdC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFk
b3dTcHJlYWQpOwogCiAgICAgICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGlu
Zmx1ZW5jZVJlY3QsIGluZm8ucmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxT
bmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5leHBhbmRSYWRp
aShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXBpeGVsU25hcHBlZEZp
bGxSZWN0LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFw
cGVkRmlsbFJlY3QuYWRqdXN0UmFkaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5m
aWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QsIENvbG9yOjpibGFjaywgc3R5bGUu
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJl
Y3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QsIENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlz
IG9wYXF1ZSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5n
IHNvIHNhdmVzIHRpbWUKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UmVjCiAKICAgICAgICAgICAgICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwot
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVj
dCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFj
ayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJbnNl
dCBzaGFkb3cuCkBAIC0yMzE3LDkgKzIzMTcsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwog
CiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdCwgc2hhZG93Q29sb3Is
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJv
dW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QsIHNoYWRvd0NvbG9yKTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxT
bmFwcGVkQm9yZGVyUmVjdC5yZWN0KCksIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRl
clJlY3QucmVjdCgpLCBzaGFkb3dDb2xvcik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9CiAKQEAgLTIzNTYsMTEgKzIzNTYsMTEgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlv
dXRSZWMKICAgICAgICAgICAgIHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKIAogICAgICAg
ICAgICAgaWYgKHNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBj
b250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93
Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRM
ZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRp
dXMsIHNoYWRvd0NvbG9yKTsKIAotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShwaXhlbFNuYXBwZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBm
aWxsQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKHBpeGVsU25hcHBlZE91dGVyUmVjdCwgcGl4ZWxTbmFwcGVkUm91
bmRlZEhvbGUsIGZpbGxDb2xvcik7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggYjUzZjJhZjRm
ZWU1ZGJmMWYzOTA4ZDg0MjNiNDNlYTk1NDE1MjQ4MS4uNWM2NmI3NzZjNjliOWQzMzY2Mzg2YWE1
Yjc1NTg2OTI2MTcxYTk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRldGFpbHNNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXRhaWxzTWFya2VyLmNwcApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdm9pZCBSZW5kZXJEZXRh
aWxzTWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2YKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGJveE9yaWdpbi5t
b3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1Rv
cCgpKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxQYXRoKGdldFBhdGgoYm94T3JpZ2lu
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZTcw
MDM4ZTkyZjZjN2I0NjFmYzA0OWFkM2EzM2FhZGYxYzdlMTFlYS4uOGMyZWEwOGY3MWRlNjlmMmQ0
OGU1MWFmY2MzNGZjYzQ0MDI5ZTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcApAQCAtMTgyMCw3ICsxODIwLDYgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpk
cmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEYKICAgICBpZiAoYm9yZGVyU3R5bGUgPT0gRE9VQkxFICYmICh0aGlja25lc3MgKiBkZXZpY2VT
Y2FsZUZhY3RvcikgPCAzKQogICAgICAgICBib3JkZXJTdHlsZSA9IFNPTElEOwogCi0gICAgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKICAgICBzd2l0Y2ggKGJvcmRl
clN0eWxlKSB7CiAgICAgY2FzZSBCTk9ORToKICAgICBjYXNlIEJISURERU46CkBAIC0xODMwLDcg
KzE4MjksNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRgogICAgICAgICBib29sIHdhc0FudGlh
bGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICBTdHJv
a2VTdHlsZSBvbGRTdHJva2VTdHlsZSA9IGdyYXBoaWNzQ29udGV4dC5zdHJva2VTdHlsZSgpOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7Ci0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFT
SEVEID8gRGFzaGVkU3Ryb2tlIDogRG90dGVkU3Ryb2tlKTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdMaW5lKHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh4MSwgeTEp
LCBkZXZpY2VTY2FsZUZhY3RvciksIHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2lu
dCh4MiwgeTIpLCBkZXZpY2VTY2FsZUZhY3RvcikpOwpAQCAtMTg0NSw3ICsxODQ0LDcgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgaWYgKCFhZGphY2VudFdpZHRoMSAmJiAhYWRq
YWNlbnRXaWR0aDIpIHsKICAgICAgICAgICAgIFN0cm9rZVN0eWxlIG9sZFN0cm9rZVN0eWxlID0g
Z3JhcGhpY3NDb250ZXh0LnN0cm9rZVN0eWxlKCk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IpOwogCiAgICAgICAgICAgICBib29sIHdh
c0FudGlhbGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhhbnRpYWxpYXMpOwpAQCAt
MTk5Niw3ICsxOTk1LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgICAgIC8v
IFR1cm4gb2ZmIGFudGlhbGlhc2luZyB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgZHJhd0NvbnZl
eFBvbHlnb24oKTsKICAgICAgICAgICAgIC8vIHRoaXMgbWF0dGVycyBmb3IgcmVjdHMgaW4gdHJh
bnNmb3JtZWQgY29udGV4dHMuCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tl
U3R5bGUoTm9TdHJva2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xv
cihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9
IGdyYXBoaWNzQ29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoYW50aWFsaWFzKTsKICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgxLCB5MSwgeDIgLSB4
MSwgeTIgLSB5MSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTIwNDAsNyArMjAzOSw3IEBAIHZv
aWQgUmVuZGVyRWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGCiAgICAgICAgIH0KIAogICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
RmlsbENvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdD
b252ZXhQb2x5Z29uKDQsIHF1YWQsIGFudGlhbGlhcyk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTdHJva2VTdHlsZShvbGRTdHJva2VTdHlsZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEw
OCw3ICsyMTA3LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludE91dGxpbmUoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmUKICAgICAgICAgICAgIHBhdGgu
YWRkUmVjdChvdXRlcik7CiAgICAgICAgICAgICBwYXRoLmFkZFJlY3QoaW5uZXIpOwogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG91dGxpbmVDb2xvciwgc3R5bGVUb1Vz
ZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xv
cihvdXRsaW5lQ29sb3IpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBh
dGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBhM2Y4ODkxZmQ5OTdl
OGMyY2E4NmY1MGNiNWZmZjZjMWIwMDU3ZWQ5Li4xMzZlMTBiNGEyOWIxZGVlN2RlYTMyNzM1NjYy
NDk1M2MxMGEwZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25E
ZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRp
b24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xv
clNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CiAgICAgY29udGV4dC5jbGlwKGNvbnRlbnRSZWN0KTsKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRU
ZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0
Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KG1fdW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRS
b3VuZGVkUmVjdFByZXNzZWRDb2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xv
cigpKTsKICAgICBjb250ZXh0LmZpbGxQYXRoKGJhY2tncm91bmQpOwogCiAgICAgUGF0aCBzdHJv
a2VQYXRoOwpAQCAtMzIwLDIxICszMjAsMjEgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAg
ICBzdHJva2VSZWN0LmluZmxhdGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChz
dHJva2VSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAx
LCByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQu
c2V0U3Ryb2tlQ29sb3IodW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmF2YWlsYWJsZVBsdWdp
bkJvcmRlckNvbG9yKCkpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAg
IGNvbnRleHQuc3Ryb2tlUGF0aChzdHJva2VQYXRoKTsKIAogICAgIGNvbnN0IEZvbnRNZXRyaWNz
JiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKICAgICBmbG9hdCBsYWJlbFggPSBy
b3VuZGYocmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigpLngoKSArIHJlcGxhY2VtZW50VGV4
dFJvdW5kZWRSZWN0TGVmdFRleHRNYXJnaW4pOwogICAgIGZsb2F0IGxhYmVsWSA9IHJvdW5kZihy
ZXBsYWNlbWVudFRleHRSZWN0LmxvY2F0aW9uKCkueSgpICsgKHJlcGxhY2VtZW50VGV4dFJlY3Qu
c2l6ZSgpLmhlaWdodCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMiArIGZvbnRNZXRyaWNz
LmFzY2VudCgpICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RUb3BUZXh0TWFyZ2luKTsKLSAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29s
b3IoKSk7CiAgICAgY29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxh
YmVsWCwgbGFiZWxZKSk7CiAKICAgICBpZiAoc2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdl
QmVCdXR0b24oZG9jdW1lbnQoKSwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikpIHsKICAg
ICAgICAgYXJyb3dSZWN0LmluZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nKTsK
IAogICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wKTsKLSAgICAgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRD
b2xvcigpKTsKICAgICAgICAgY29udGV4dC5maWxsRWxsaXBzZShhcnJvd1JlY3QpOwogCiAgICAg
ICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
CmluZGV4IDY0ZWNhY2IwNmVjZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEuLmZkMTEzYzRm
OGUyMjA5M2ExMGNhNjVhZmQyNGI4ZTI3YTdmMzhhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTYzLDcgKzE2
Myw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHRleHRZID0gYmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6
b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwogCi0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpKTsKICAgICAgICAgCiAgICAgICAgIC8vIERyYXcgdGhlIGZpbGVuYW1l
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4s
IEludFBvaW50KHJvdW5kVG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMmY4MmRjYjE0YjM5
NDdjODNjNjg0OTk3NzRlNmQ4ZDIyZmE4MGE2YS4uNjNjYTZkYWRmNzhmMTgxYWZjNDY2OTk4MjRi
YTcwMmUzMGM3MzU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuY3BwCkBAIC05MSwxNCArOTEsMTMgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1
bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QKICAgICAK
ICAgICAvLyBGaWxsIGZpcnN0LgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xv
clNwYWNlKCk7Ci0gICAgY29udGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1l
bnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3BhY2Up
OworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCkuaGFz
Qm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpKTsKICAgICAKICAgICAvLyBOb3cg
c3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29tIHRvIHBhaW50
IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmlsbCBjb2xvciBz
aG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3Qud2lkdGgoKSA+PSAzKSB7Ci0gICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNp
emUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7Ci0g
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lm1heFgo
KSAtIDEsIGJvcmRlclJlY3QueSgpKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJFbmRF
ZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVj
dChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3Rh
cnRFZGdlQ29sb3IoKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2lu
dChib3JkZXJSZWN0Lm1heFgoKSAtIDEsIGJvcmRlclJlY3QueSgpKSwgSW50U2l6ZSgxLCBoZWln
aHQoKSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSk7CiAgICAgfQogfQogCkBAIC0xMTEsMTQgKzEx
MCwxMyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpwYWludFJvd0JvcmRlcihjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgYgogICAgIAogICAgIC8vIEZpbGwgZmlyc3Qu
CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAg
ICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250
ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9y
KCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5maWxs
UmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDog
Ym9yZGVyRmlsbENvbG9yKCkpOwogCiAgICAgLy8gTm93IHN0cm9rZSB0aGUgZWRnZXMgYnV0IG9u
bHkgaWYgd2UgaGF2ZSBlbm91Z2ggcm9vbSB0byBwYWludCBib3RoIGVkZ2VzIHdpdGggYSBsaXR0
bGUKICAgICAvLyBiaXQgb2YgdGhlIGZpbGwgY29sb3Igc2hvd2luZyB0aHJvdWdoLgogICAgIGlm
IChib3JkZXJSZWN0LmhlaWdodCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChJ
bnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRl
clN0YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KEludFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSks
IEludFNpemUod2lkdGgoKSwgMSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7
CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCks
IEludFNpemUod2lkdGgoKSwgMSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpKTsKKyAgICAgICAg
Y29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJS
ZWN0Lm1heFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9y
KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
aW5kZXggMWQ0NzhiZjZmZmM4N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNy4uMTRjN2EwMjMw
MmMxMzZiZjYwNzc1ZDU5NTVlZmFmNTczODU1MWExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zOTIsOCArMzkyLDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2YKIAogICAgICAgICAgICAgLy8gRHJhdyBhbiBvdXRsaW5lIHJlY3Qgd2hlcmUgdGhlIGlt
YWdlIHNob3VsZCBiZS4KICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRT
dHJva2UpOwotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6bGlnaHRH
cmF5LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSk7CisgICAgICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAg
Y29udGV4dC5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRP
ZmZzZXQueCgpICsgbGVmdEJvcmRlciArIGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJv
cmRlciArIHRvcFBhZCwgY1dpZHRoLCBjSGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3Jk
ZXJXaWR0aCk7CiAKICAgICAgICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsK
QEAgLTQyNCwxMyArNDI0LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAjaWYgRU5BQkxF
KENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2Ny
aXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigp
KTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5
bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWlu
dE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsg
aW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25E
ZXNjcmlwdGlvbik7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01v
ZGlmaWVkQnlFbmNvZGluZyhtX2FsdFRleHQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwog
ICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2Fz
Y2FkZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9
IGZvbnQuZm9udE1ldHJpY3MoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9
IGZvbnRNZXRyaWNzLmFzY2VudCgpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmll
bnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHN0eWxlKCku
Y29sb3JTcGFjZSgpLCByZWN0LAorICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHJlY3QsCiAg
ICAgICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGVO
b3JtYWwsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRmZTE2Yjcy
NzZhNWJjNzQwOWMwMjkxYTk2YWJjMDY5YzhmN2E0ZWEuLjkxYzIxYjM0MDgxM2I2NDEyYThiMDEy
YTJmYmQ1ZWViNWRhYmIyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMTgyMSw3ICsxODIxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclAKICNlbmRp
ZgogCiAjaWZkZWYgUkVWRUFMX1RSQU5TUEFSRU5DWV9MQVlFUlMKLSAgICAgICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYs
IDAuNWYsIDAuMmYpKTsKICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQ2xp
cFJlY3QpOwogI2VuZGlmCiAgICAgfQpAQCAtMzYyOSw3ICszNjI5LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRQb2ludCYgcGEKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhaW50IHdoaXRlIGlmIHdlIGhh
dmUgb3ZlcmxheSBzY3JvbGxiYXJzLCBzaW5jZSB3ZSBuZWVkCiAgICAgLy8gdG8gc2VlIHdoYXQg
aXMgYmVoaW5kIGl0LgogICAgIGlmICghaGFzT3ZlcmxheVNjcm9sbGJhcnMoKSkKLSAgICAgICAg
Y29udGV4dC5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJveC0+c3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGFic1JlY3QsIENvbG9yOjp3aGl0
ZSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0
KQpAQCAtMzY1Miw3ICszNjUyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVz
aXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXplclNp
emUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3QuaGVp
Z2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKC0xLjAsIDEuMCkpOwogICAgICAgICBpZiAocmVzaXplQ29ybmVySW1hZ2Up
Ci0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIHJlbmRl
cmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5l
clJlc2l6ZXJTaXplKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29y
bmVySW1hZ2UsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6ZXJTaXplKSk7CiAg
ICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzY2
MCw3ICszNjYwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdl
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICBpZiAoIXJlc2l6ZUNv
cm5lckltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhYTWF4
WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVuZGVy
ZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
aW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIGlt
YWdlUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5
b3V0UmVjdCYgZGFtYWdlUmVjdCkKQEAgLTM2OTUsOSArMzY5NSw5IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBv
aW50JiBwYWluCiAgICAgICAgIGNvbnRleHQuY2xpcChhYnNSZWN0KTsKICAgICAgICAgTGF5b3V0
UmVjdCBsYXJnZXJDb3JuZXIgPSBhYnNSZWN0OwogICAgICAgICBsYXJnZXJDb3JuZXIuc2V0U2l6
ZShMYXlvdXRTaXplKGxhcmdlckNvcm5lci53aWR0aCgpICsgTGF5b3V0VW5pdDo6ZnJvbVBpeGVs
KDEpLCBsYXJnZXJDb3JuZXIuaGVpZ2h0KCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSkpKTsK
LSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywgMjE3LCAy
MTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSkpOwogICAgICAgICBjb250ZXh0LnNldFN0
cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6
OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgY29udGV4dC5kcmF3UmVjdChz
bmFwcGVkSW50UmVjdChsYXJnZXJDb3JuZXIpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZTU3M2Q1MDA0ZmI1YjU5MTA5MjAzMTY5
MDQyNzQwMDAwYjYxM2RhNS4uNTUzMTcwYWRjNDQxZmQ5OTUzYjg4OTRhYTRjZjNmODdiYjI3ODI4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzk2
LDggKzM5Niw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgICAgICB0ZXh0Q29s
b3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwog
ICAgIH0KIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS5jb2xvclNwYWNl
KCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3Ip
OwogCiAgICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uLCBpdGVtU3R5bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVuaWNv
ZGVCaWRpKCkpLCB0cnVlLCBUZXh0UnVuOjpOb1JvdW5kaW5nKTsKICAgICBGb250Q2FzY2FkZSBp
dGVtRm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKQEAgLTQzMiwxMCArNDMxLDkgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYKIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgZm9yIHRo
aXMgbGlzdCBib3ggaXRlbQogICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0eSgpICE9IEhJRERF
TikgewotICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFj
ZSgpOwogICAgICAgICBMYXlvdXRSZWN0IGl0ZW1SZWN0ID0gaXRlbUJvdW5kaW5nQm94UmVjdChw
YWludE9mZnNldCwgbGlzdEluZGV4KTsKICAgICAgICAgaXRlbVJlY3QuaW50ZXJzZWN0KGNvbnRy
b2xDbGlwUmVjdChwYWludE9mZnNldCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yLCBjb2xvclNwYWNlKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChpdGVt
UmVjdCksIGJhY2tDb2xvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggZjZlMzQ2ZDM3YjA1YmE0NmE5ZjY2MDgwNjIw
NWI0MjUxYzdiMzUxOS4uNDc2ZTljNDcyYjExNDkwZmQ2MjZkZGNjOTg3OTI3OWY4MWUzMDNiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAt
MTE5OCwxMSArMTE5OCwxMSBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgaWYgKGlz
SW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBtYXJrZXJJbWFnZSA9IG1faW1h
Z2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXplKCkpKQotICAgICAgICAgICAgY29udGV4dC5kcmF3
SW1hZ2UoKm1hcmtlckltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwgbWFya2VyKTsKICAgICAgICAg
aWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgTGF5
b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBzZWxS
ZWN0Lm1vdmVCeShib3hPcmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChzbmFw
cGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChz
bmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMTAsMTQgKzEy
MTAsMTQgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUo
KSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2Fs
U2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVt
LnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0u
c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAgIGNvbnN0IENvbG9yIGNv
bG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAg
ICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAgY29udGV4dC5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7
Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7CiAKICAgICBFTGlzdFN0eWxlVHlwZSB0
eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0x
MjI1LDcgKzEyMjUsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICAgICAgY29u
dGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
YXNlIENpcmNsZToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3RWxs
aXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNxdWFyZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDM0YjU1
ZjI5MjNkOTFhY2NkYjQxMjJlMTUwZGZkYWUyZDA3ZGFmMTIuLjg0ZDQ0YjEyNTI0ZDQ0MmViMDUw
N2Q2ODEzY2NmZjgyOTQ5MjcyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiAgICAgaWYgKGRyYXdTZWxlY3Rpb25UaW50KSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0
aW9uUGFpbnRpbmdSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbGVjdGlv
blBhaW50aW5nUmVjdC5tb3ZlQnkoYWRqdXN0ZWRQYWludE9mZnNldCk7Ci0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUGFpbnRpbmdS
ZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxl
Y3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
VGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmNwcAppbmRleCBhZjk2MTE4MGFkZWUxNWVkYWQyYmE3YjZmOWZmMmRjMzhhOGM2ODg2Li41NGZl
YTBjMTZlZThjMjk1MDkzNTY0NDY2YjkwNmJiN2Y0MDAxZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhcgogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgot
ICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0
ZSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAKaW5kZXggZWM0MmM2MmM4MTI3Y2VkMzhlNTYxNjg0ZDg3ZThiNTA5ZjE5YjNjNS4uZThiOGYw
ZmI0YmYzNWY3ODA2YTU1NTU5ZmYxZjViZjFjYjdjNDdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNDEsNyAr
MTQxLDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09S
SUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlv
bkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5k
cmF3SW1hZ2UoKmltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQ
YWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxp
bmcpKTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRD
dXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMWFhZjM2
OTBlZTliN2RmMTc3YzEwNzE3YmY5MThmZTIzMTU5ODA5YS4uZTVhODVjZjE0YWMyY2YwZjZkMTkx
MTYzYzE0YjQ2ZGJmMGM3MGJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRl
clRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAg
IH0KICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygp
OwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29u
dGV4dCgpKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBOb2RlKiBub2RlID0gb3B0aW9ucy0+aXRlbShpKTsgaSsrKSB7CiAgICAgICAgIEFT
U0VSVChpczxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUpKTsKICAgICAgICAgSFRNTE9wdGlvbkVs
ZW1lbnQmIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDFiZjIw
NTI1ZWUwY2MzNDAzOTgzODI1MDdlODkzNmFkNTU0NDE0OGMuLjBkNWI1ZWY2ODhlMjRlMzEzZGU2
MDk4ZGMzYWRiNzYxOTAwZjE0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0YXRpYyBDR0Z1bmN0aW9uUmVmIGdl
dFNoYXJlZEZ1bmN0aW9uUmVmKElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBJbnRlcnBvbGF0aW9u
CiAKIHN0YXRpYyB2b2lkIGRyYXdBeGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBJ
T1NHcmFkaWVudFJlZiBncmFkaWVudCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgY29u
c3QgRmxvYXRQb2ludCYgc3RvcFBvaW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCiB7
Ci0gICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5n
Q3JlYXRlQXhpYWwoZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdG9wUG9p
bnQsIGdldFNoYXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2Us
IGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0Yo
Q0dTaGFkaW5nQ3JlYXRlQXhpYWwoc1JHQkNvbG9yU3BhY2VSZWYoKSwgc3RhcnRQb2ludCwgc3Rv
cFBvaW50LCBnZXRTaGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiksIGZh
bHNlLCBmYWxzZSkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHNoYWRpbmcu
Z2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3UmFkaWFsR3JhZGllbnQoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBzdGFy
dFBvaW50LCBmbG9hdCBzdGFydFJhZGl1cywgY29uc3QgRmxvYXRQb2ludCYgc3RvcFBvaW50LCBm
bG9hdCBzdG9wUmFkaXVzLCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCiB7Ci0gICAgUmV0
YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlUmFk
aWFsKGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwgc3RhcnRQb2ludCwgc3RhcnRSYWRpdXMsIHN0
b3BQb2ludCwgc3RvcFJhZGl1cywgZ2V0U2hhcmVkRnVuY3Rpb25SZWYoZ3JhZGllbnQsIGludGVy
cG9sYXRpb24pLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBz
aGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoZGV2aWNlUkdCQ29sb3JTcGFj
ZVJlZigpIC8qIEZJWE1FICovLCBzdGFydFBvaW50LCBzdGFydFJhZGl1cywgc3RvcFBvaW50LCBz
dG9wUmFkaXVzLCBnZXRTaGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiks
IGZhbHNlLCBmYWxzZSkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHNoYWRp
bmcuZ2V0KCkpOwogfQogCkBAIC0zOTIsMTIgKzM5MiwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludENoZWNrYm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0
IFBhaQogICAgICAgICB9OwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
VGhpY2tuZXNzKGxpbmVXaWR0aCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAu
MGYsIDAuMGYsIDAuMGYsIDAuN2YpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdKb2luZWRMaW5lcyhzaGFkb3csIDMsIHRydWUsIGtDR0xpbmVDYXBTcXVhcmUpOwogCiAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6bWluKGNsaXAu
d2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQw
IC8gMjU1LjBmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8gMjU1LjBm
KSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMobGluZSwg
MywgdHJ1ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBib29sIFJlbmRlclRo
ZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNv
bnN0IFBhaW50SQogICAgICAgICBjbGlwLmluZmxhdGVYKC1jbGlwLndpZHRoKCkgKiBJbm5lcklu
dmVyc2VSYXRpbyk7CiAgICAgICAgIGNsaXAuaW5mbGF0ZVkoLWNsaXAuaGVpZ2h0KCkgKiBJbm5l
ckludmVyc2VSYXRpbyk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2Vk
RWxsaXBzZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0Nv
bG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmRyYXdSYWlzZWRFbGxpcHNlKGNsaXAsIENvbG9yOjp3aGl0ZSwgc2hhZG93Q29sb3IoKSk7CiAK
ICAgICAgICAgRmxvYXRTaXplIHJhZGl1cyhjbGlwLndpZHRoKCkgLyAyLjBmLCBjbGlwLmhlaWdo
dCgpIC8gMi4wZik7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7
CkBAIC02NDgsNyArNjQ4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICAgICAg
RmxvYXRTaXplKDAsIDApLCBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9w
UmlnaHRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRX
aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdo
dCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpLAogICAgICAgICAg
ICAgRmxvYXRTaXplKDAsIDApLCBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVy
UmlnaHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1
cygpLmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkp
KSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChidXR0b25DbGlwLCBz
dHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qo
YnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3IpKTsKIAogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRp
ZW50V2l0aE5hbWUoaXNGb2N1c2VkKGJveCkgJiYgIWlzUmVhZE9ubHlDb250cm9sKGJveCkgPyBD
b25jYXZlR3JhZGllbnQgOiBDb252ZXhHcmFkaWVudCksIGJ1dHRvbkNsaXAubG9jYXRpb24oKSwg
RmxvYXRQb2ludChidXR0b25DbGlwLngoKSwgYnV0dG9uQ2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRl
cnBvbGF0aW9uKTsKICAgICB9CkBAIC02NjMsNyArNjYzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBj
b25zdAogICAgICAgICBGbG9hdFJlY3QgZWxsaXBzZShidXR0b25DbGlwLngoKSArIChidXR0b25D
bGlwLndpZHRoKCkgLSBjb3VudCAqIChzaXplICsgcGFkZGluZykgKyBwYWRkaW5nKSAvIDIuMCwg
YnV0dG9uQ2xpcC5tYXhZKCkgLSAxMC4wLCBzaXplLCBzaXplKTsKIAogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjVmKSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNlKGVs
bGlwc2UsIENvbG9yOjp3aGl0ZSwgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41ZikpOwogICAg
ICAgICAgICAgZWxsaXBzZS5tb3ZlKHNpemUgKyBwYWRkaW5nLCAwKTsKICAgICAgICAgfQogICAg
IH0gIGVsc2UgewpAQCAtNjgyLDEyICs2ODIsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAog
ICAgICAgICBzaGFkb3dbMl0gPSBGbG9hdFBvaW50KGFycm93WzJdLngoKSwgYXJyb3dbMl0ueSgp
ICsgMS4wZik7CiAKICAgICAgICAgZmxvYXQgb3BhY2l0eSA9IGlzUmVhZE9ubHlDb250cm9sKGJv
eCkgPyAwLjIgOiAwLjU7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAw
LjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3Bh
Y2l0eSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZHJhd0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsKIAotICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0
ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CiAgICAgfQogCkBAIC03NzIsOSArNzcy
LDkgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJP
YmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJgogCiAgICAgICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICBp
ZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKENvbG9yKDE3OCwgMTc4LCAxNzgpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3
OCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKENvbG9yKDc2LCA3NiwgNzYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoNzYsIDc2LCA3
NikpOwogCiAgICAgICAgIFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiByb3VuZGVkUmVjdFBh
dGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgICAgIENHUGF0aEFkZFJv
dW5kZWRSZWN0KHJvdW5kZWRSZWN0UGF0aC5nZXQoKSwgMCwgdHJhY2tDbGlwLCBjb3JuZXJXaWR0
aCwgY29ybmVySGVpZ2h0KTsKQEAgLTg1OSw4ICs4NTksNyBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBh
aW50SQogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAw
eDhkLCAweDhkKSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHJlbmRl
cmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
KDI1NSwgMjU1LCAyNTUpLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKICAgICBQYXRoIHRyYWNrUGF0aDsKICAgICBGbG9hdFJl
Y3QgdHJhY2tSZWN0KHJlY3QueCgpICsgMC4yNSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IDAuMjUsIHJlY3Qud2lkdGgoKSAtIDAuNSwgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAwLjUpOwpAQCAt
MTAyNCw4ICsxMDIzLDggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKIAogICAgICAgICAvLyBC
YWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGljb24gd2l0aCBh
IGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJhY2tncm91bmRJ
bWFnZUNvbG9yID0gQ29sb3IoYnV0dG9uUmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpKTsKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQ
aWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3Ju
ZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJ
bWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJh
bWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwg
cGljdHVyZUZyYW1lQ29sb3IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0
KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yKTsKICAgICAgICAgewogICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMihwYWludEluZm8uY29u
dGV4dCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwpAQCAtMTA0NSw3ICsxMDQ0LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFIKICAgICB9CiAKICAgICAvLyBGb3JlZ3JvdW5kIHBpY3R1cmUgZnJh
bWUgYW5kIGljb24uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwg
Y29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yKTsK
ICAgICBpY29uLT5wYWludChwYWludEluZm8uY29udGV4dCgpLCB0aHVtYm5haWxSZWN0KTsKIAog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQppbmRleCA5MmFmMGNmNWFjNWE4M2Y4MGI3NjEwN2U0NWZlZmY2NmVkY2FmM2JkLi43Zjhk
YzI0MjE5MGY5ZTBkMDk2MTUzMTNmOGIyMjY3YzliZWFlMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xMTU2LDcgKzExNTYsNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
T2JqZWN0LCBjb25zdCBQYQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0
U2l6ZSgtMSwgMSkpOwogICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0Lmxv
Y2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGMKIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
IAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHJlbmRlcmVyLnN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCByZW5kZXJlci5zdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVu
ZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwogCiAgICAg
RmxvYXRQb2ludCBhcnJvdzFbM107CkBAIC0xMzMwLDExICsxMzMwLDExIEBAIGJvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gm
IHJlbmRlcmVyLCBjCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRo
ZSBhcnJvd3MKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsg
Ly8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBsb29rcyBuaWNlciBpZiBpdCBz
dGF5cyB0aGluLgogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRT
dHJva2UpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFy
YXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvcik7CiAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFy
YXRvciwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFy
YXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNwYWNl
LCBib3VuZHMubWF4WSgpKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkxNCw3ICsxOTE0LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lk
dGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBwbHVnSW5SZW5k
ZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNv
dXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdp
blJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MjE4NCw3ICsyMTg0LDcgQEAgc3RhdGljIE5TQ29sb3IgKnRpdGxlVGV4dENvbG9yRm9yQXR0YWNo
bWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIGlmIChhdHRhY2ht
ZW50LnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAg
ICAgICAgIGlmIChhdHRhY2htZW50LmZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0
aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250
cm9sVGV4dENvbG9yXTsgICAgCi0gICAgICAgIHJldHVybiAoTlNDb2xvciAqKWNhY2hlZENHQ29s
b3IoYXR0YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgIHJldHVybiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNobWVudFRp
dGxlSW5hY3RpdmVUZXh0Q29sb3IoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFtOU0NvbG9yIGJs
YWNrQ29sb3JdOwpAQCAtMjI5NCw3ICsyMjk0LDcgQEAgdm9pZCBBdHRhY2htZW50TGF5b3V0Ojps
YXlPdXRTdWJ0aXRsZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIFJl
dGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJRm9udEZvckxh
bmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnRTaXplLCBs
YW5ndWFnZSkpOwogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAewogICAgICAg
ICAoaWQpa0NURm9udEF0dHJpYnV0ZU5hbWU6IChpZClmb250LmdldCgpLAotICAgICAgICAoaWQp
a0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKE5TQ29sb3IgKiljYWNoZWRDR0NvbG9y
KGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKQorICAg
ICAgICAoaWQpa0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKE5TQ29sb3IgKiljYWNo
ZWRDR0NvbG9yKGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvcigpKQogICAgIH07CiAgICAgUmV0
YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN1YnRpdGxlVGV4dCA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnN1YnRpdGxlVGV4
dCBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CiAgICAgc3VidGl0bGVMaW5lID0gYWRvcHRD
RihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVm
KWF0dHJpYnV0ZWRTdWJ0aXRsZVRleHQuZ2V0KCkpKTsKQEAgLTIzNTUsNyArMjM1NSw3IEBAIHN0
YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFj
aG1lbnQmLCBHcmFwaGljc0NvbnRlCiAgICAgaWYgKHBhaW50Qm9yZGVyKQogICAgICAgICBiYWNr
Z3JvdW5kUmVjdC5pbmZsYXRlKC1hdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcmRlclRoaWNrbmVz
cyk7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJhY2tn
cm91bmRSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShhdHRhY2htZW50SWNvbkJhY2tncm91
bmRSYWRpdXMpKSwgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChi
YWNrZ3JvdW5kUmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkoYXR0YWNobWVudEljb25CYWNr
Z3JvdW5kUmFkaXVzKSksIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZENvbG9yKCkpOwogCiAgICAg
aWYgKHBhaW50Qm9yZGVyKSB7CiAgICAgICAgIEZsb2F0UmVjdCBib3JkZXJSZWN0ID0gbGF5b3V0
Lmljb25CYWNrZ3JvdW5kUmVjdDsKQEAgLTIzNjQsNyArMjM2NCw3IEBAIHN0YXRpYyB2b2lkIHBh
aW50QXR0YWNobWVudEljb25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmLCBHcmFw
aGljc0NvbnRlCiAgICAgICAgIEZsb2F0U2l6ZSBpY29uQmFja2dyb3VuZFJhZGl1c1NpemUoYXR0
YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVzLCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRp
dXMpOwogICAgICAgICBQYXRoIGJvcmRlclBhdGg7CiAgICAgICAgIGJvcmRlclBhdGguYWRkUm91
bmRlZFJlY3QoYm9yZGVyUmVjdCwgaWNvbkJhY2tncm91bmRSYWRpdXNTaXplKTsKLSAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFjaG1l
bnRJY29uQm9yZGVyQ29sb3IoKSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNz
KGF0dGFjaG1lbnRJY29uU2VsZWN0aW9uQm9yZGVyVGhpY2tuZXNzKTsKICAgICAgICAgY29udGV4
dC5zdHJva2VQYXRoKGJvcmRlclBhdGgpOwogICAgIH0KQEAgLTIzOTcsNyArMjM5Nyw3IEBAIHN0
YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRpdGxlQmFja2dyb3VuZChjb25zdCBSZW5kZXJBdHRh
Y2htZW50JiBhdHRhY2htZW50LCBHCiAgICAgZWxzZQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3Ig
PSBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xvcigpOwogCi0gICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgUGF0aCBiYWNr
Z3JvdW5kUGF0aCA9IFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKGJh
Y2tncm91bmRSZWN0cywgYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFJhZGl1cyk7CiAgICAgY29u
dGV4dC5maWxsUGF0aChiYWNrZ3JvdW5kUGF0aCk7CkBAIC0yNDQ3LDcgKzI0NDcsNyBAQCBzdGF0
aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBh
dHRhY2htZW50LCBHcmFwaGljcwogICAgIGJhY2tncm91bmRSZWN0LmluZmxhdGUoLWF0dGFjaG1l
bnRQcm9ncmVzc0JhckJvcmRlcldpZHRoIC8gMik7CiAKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJh
Y2tncm91bmRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkoYmFja2dyb3VuZFJlY3QuaGVpZ2h0KCkgLyAyKSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRl
ZFJlY3QoYmFja2dyb3VuZFJvdW5kZWRSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3Jv
dW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRl
ZFJlY3QoYmFja2dyb3VuZFJvdW5kZWRSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3Jv
dW5kQ29sb3IoKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
Y2xpcFNhdmVyKGNvbnRleHQpOwpAQCAtMjQ1NywxMyArMjQ1NywxMyBAQCBzdGF0aWMgdm9pZCBw
YWludEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50
LCBHcmFwaGljcwogICAgICAgICBwcm9ncmVzc1JlY3Quc2V0V2lkdGgocHJvZ3Jlc3NSZWN0Lndp
ZHRoKCkgKiBwcm9ncmVzcyk7CiAgICAgICAgIHByb2dyZXNzUmVjdCA9IGVuY2xvc2VSZWN0VG9E
ZXZpY2VQaXhlbHMocHJvZ3Jlc3NSZWN0LCBhdHRhY2htZW50LmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CiAKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChwcm9ncmVzc1JlY3QsIGF0
dGFjaG1lbnRQcm9ncmVzc0JhckZpbGxDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgY29udGV4dC5maWxsUmVjdChwcm9ncmVzc1JlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0Jh
ckZpbGxDb2xvcigpKTsKICAgICB9CiAKICAgICBQYXRoIGJvcmRlclBhdGg7CiAgICAgZmxvYXQg
Ym9yZGVyUmFkaXVzID0gYm9yZGVyUmVjdC5oZWlnaHQoKSAvIDI7CiAgICAgYm9yZGVyUGF0aC5h
ZGRSb3VuZGVkUmVjdChib3JkZXJSZWN0LCBGbG9hdFNpemUoYm9yZGVyUmFkaXVzLCBib3JkZXJS
YWRpdXMpKTsKLSAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRQcm9ncmVzc0Jh
ckJvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IoKSk7CiAgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGgpOwog
ICAgIGNvbnRleHQuc3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5MDI5NWNiMWFjOTVlNDA5YzQ0OWY5MDk1YjkzZmQ4
NmU0ZDcxZDU3Li4yZDE1NGRlMjE0MDc0ZTg5MjBjOTY2MjVhYzdhMmNhYzFkYmI0NTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAg
dm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgLy8gVGhpcyBhdm9pZHMgcGFpbnRpbmcgZ2FyYmFn
ZSBiZXR3ZWVuIGNvbHVtbnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4gZ2FwLgogICAgIGlmIChmcmFt
ZVZpZXcoKS5wYWdpbmF0aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCAmJiBw
YWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tn
cm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91
bmRDb2xvcigpKTsKIAogICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwog
fQpAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICBpZiAo
YmFja2dyb3VuZENvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
IHByZXZpb3VzT3BlcmF0b3IgPSBwYWludEluZm8uY29udGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlv
bigpOwogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxS
ZWN0KHBhaW50SW5mby5yZWN0LCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJbmZvLnJl
Y3QsIGJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsZWFyUmVjdChwYWludEluZm8ucmVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDQ1NDFlOTBj
OGYwNGM4ZGU3NzM4ZGYwZWJlMDVlYWM1N2ZkNWI3MTYuLmNjOWI4Y2U0MmM0OTcxNTEzMTc0YmI4
ZTkwYjQ1NmJlMDRjZmVlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgLy8g
UGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMu
CiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmludGluZygpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1dGUsIG5vdCBwYWludGlu
ZyBjb29yZGluYXRlcy4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFw
cGVkSW50UmVjdChzZWxlY3Rpb25SZWN0KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxS
ZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpKTsKICAgICB9CiAKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5jYW5SZXNp
emUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCBj
ZmRhNWNmYmQ0ODQ4YzVkNTRkZjE5ODc1NDVhMWI4MzhlYTFjMzY2Li5jOTE4YTZjMTg1ZGU4NTk4
MmRiY2MxMmMyZTk0ZWEyYTFjZjZkOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCkBAIC00NzcsNyArNDc3LDcgQEAgR2FwUmVjdHMgUm9vdElubGluZUJv
eDo6bGluZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQ
b2kKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNh
bFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBsb2dpY2FsUmVj
dCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzUHJldmlvdXNCb3hTZWxlY3RlZCAmJiBnYXBSZWN0
LndpZHRoKCkgPiAwICYmIGdhcFJlY3QuaGVpZ2h0KCkgPiAwKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChwYWludEluZm8gJiYgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0KCkuZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5z
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNv
bnRleHQoKS5maWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVmlzaWJsZVNl
bGVjdGlvbiBtYXkgYmUgbm9uLWNvbnRpZ3VvdXMsIHNlZSBjb21tZW50IGFib3ZlLgogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQudW5pdGVDZW50ZXIoZ2FwUmVjdCk7CiAgICAgICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCmluZGV4IDY1NmM3ZDQyOWIxODg4YjIxNmE4M2VhN2Q1NTU5N2ZjOGI0
YjdjN2MuLjMyMmMxYjJlOTUyZDI2NTkzYWRlYzJmN2U3MzhmYzVhOGZlZjJlOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKQEAgLTU3LDggKzU3LDggQEAgc3RhdGljIHZvaWQgcGFpbnREZWJ1Z0JvcmRlcnMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRSZWN0IGJvcmRlclJlY3QsIGMKICAgICBpZiAo
c25hcHBlZFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCkpOworICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgY29udGV4dC5kcmF3UmVj
dChzbmFwcGVkUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
U3R5bGUuY3BwCmluZGV4IDIyMjZlY2RmNjllNTNiYmY2YmM4OWRlOWRiZWJjNzM2MDM5NTZhMzEu
LmUxZGViYmI3ZGM0NWRkOWNhMjNkNjM2Y2NlODU4ZTNjNDI0YmI3MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcApAQCAtMzksMjcgKzM5LDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKLSAgICA6IGNvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAs
IHN0cm9rZVdpZHRoKDApCi0jaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgICwgdXNlTGV0dGVy
cHJlc3NFZmZlY3QoZmFsc2UpCi0jZW5kaWYKLXsKLX0KLQotVGV4dFBhaW50U3R5bGU6OlRleHRQ
YWludFN0eWxlKENvbG9yIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgOiBjb2xv
clNwYWNlKGNvbG9yU3BhY2UpCi0gICAgLCBmaWxsQ29sb3IoY29sb3IpCitUZXh0UGFpbnRTdHls
ZTo6VGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIDogZmlsbENvbG9yKGNv
bG9yKQogICAgICwgc3Ryb2tlQ29sb3IoY29sb3IpCi0gICAgLCBzdHJva2VXaWR0aCgwKQotI2lm
IEVOQUJMRShMRVRURVJQUkVTUykKLSAgICAsIHVzZUxldHRlcnByZXNzRWZmZWN0KGZhbHNlKQot
I2VuZGlmCiB7CiB9CiAKLXN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlPbkJh
Y2tncm91bmQoQ29sb3IgdGV4dENvbG9yLCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IpCitzdGF0aWMg
Q29sb3IgYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKGNvbnN0IENvbG9yJiB0
ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAgICAgaW50IGQgPSBk
aWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvcik7CiAgICAgLy8gU2Vt
aS1hcmJpdHJhcmlseSBjaG9zZSA2NTAyNSAoMjU1XjIpIHZhbHVlIGhlcmUgYWZ0ZXIgYSBmZXcg
dGVzdHMuCkBAIC03Niw3ICs2Miw3IEBAIHN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2li
aWxpdHlPbkJhY2tncm91bmQoQ29sb3IgdGV4dENvbG9yLCBDb2xvciBiYWNrZ3JvCiAKIFRleHRQ
YWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRTdHlsZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewot
ICAgIFRleHRQYWludFN0eWxlIHBhaW50U3R5bGUobGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgVGV4dFBhaW50U3R5bGUgcGFpbnRTdHlsZTsKIAogI2lmIEVOQUJMRShMRVRURVJQUkVTUykK
ICAgICBwYWludFN0eWxlLnVzZUxldHRlcnByZXNzRWZmZWN0ID0gbGluZVN0eWxlLnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvbkxldHRlcnByZXNzOwpAQCAtMTk4LDEy
ICsxODQsMTIgQEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBUZXh0UGFpbnRTdHlsZSYgcGFpbnQKICAgICB9CiAKICAgICBDb2xvciBm
aWxsQ29sb3IgPSBmaWxsQ29sb3JUeXBlID09IFVzZUVtcGhhc2lzTWFya0NvbG9yID8gcGFpbnRT
dHlsZS5lbXBoYXNpc01hcmtDb2xvciA6IHBhaW50U3R5bGUuZmlsbENvbG9yOwotICAgIGlmICht
b2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSB8
fCBwYWludFN0eWxlLmNvbG9yU3BhY2UgIT0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpKSkKLSAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBwYWludFN0eWxlLmNvbG9yU3Bh
Y2UpOworICAgIGlmIChtb2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4
dC5maWxsQ29sb3IoKSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7
CiAKICAgICBpZiAobW9kZSAmIFRleHRNb2RlU3Ryb2tlKSB7CiAgICAgICAgIGlmIChwYWludFN0
eWxlLnN0cm9rZUNvbG9yICE9IGNvbnRleHQuc3Ryb2tlQ29sb3IoKSkKLSAgICAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRTdHlsZS5zdHJva2VDb2xvciwgcGFpbnRTdHlsZS5j
b2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRTdHls
ZS5zdHJva2VDb2xvcik7CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRoICE9IGNv
bnRleHQuc3Ryb2tlVGhpY2tuZXNzKCkpCiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRo
aWNrbmVzcyhwYWludFN0eWxlLnN0cm9rZVdpZHRoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCmluZGV4IDk5NGU0NWRjZjRlOGE0ODk4ODRjZGNiYzIz
YjFjMjA2YjcwYTk4MDYuLmYwY2JlYmI5Zjg0N2M1YTU3ZTY4YTAxNTRmZDQ0NzBkNmFhYWQ2Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0zOSwxNiAr
MzksMTUgQEAgY2xhc3MgU2hhZG93RGF0YTsKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBU
ZXh0UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSk7Ci0gICAgVGV4
dFBhaW50U3R5bGUoQ29sb3IsIENvbG9yU3BhY2UpOworICAgIFRleHRQYWludFN0eWxlKCkgeyB9
CisgICAgVGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImKTsKIAotICAgIENvbG9yU3BhY2UgY29s
b3JTcGFjZTsKICAgICBDb2xvciBmaWxsQ29sb3I7CiAgICAgQ29sb3Igc3Ryb2tlQ29sb3I7CiAg
ICAgQ29sb3IgZW1waGFzaXNNYXJrQ29sb3I7Ci0gICAgZmxvYXQgc3Ryb2tlV2lkdGg7CisgICAg
ZmxvYXQgc3Ryb2tlV2lkdGggeyAwIH07CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgIGJv
b2wgdXNlTGV0dGVycHJlc3NFZmZlY3Q7CisgICAgYm9vbCB1c2VMZXR0ZXJwcmVzc0VmZmVjdCB7
IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
ZXIuY3BwCmluZGV4IGU0Mjg2YzA0MTAzY2NiNzliNGU2ZTY2YjdiYmI1NDI2ZmMyZDY4NzMuLmVj
MjMwMmNjZWVlNjFiNjM0M2UxNjQ5ZjdmMjY2YWRiZTU0ZTg3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFNoYWRvd0FwcGxp
ZXI6OlNoYWRvd0FwcGxpZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFkb3dE
YXRhKiBzaGFkb3csCiAgICAgfQogCiAgICAgaWYgKCFtX2F2b2lkRHJhd2luZ1NoYWRvdykKLSAg
ICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRv
d0NvbG9yLCBjb250ZXh0LmZpbGxDb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogfQogCiBTaGFk
b3dBcHBsaWVyOjp+U2hhZG93QXBwbGllcigpCkBAIC0xMTgsMTEgKzExOCwxMCBAQCBzdGF0aWMg
dm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmbwogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgYm9vbCBzdHJv
a2VkLCBib29sIGhvcml6b250YWwpCiB7CiAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5m
aWxsQ29sb3IoKTsKLSAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxs
Q29sb3JTcGFjZSgpOwogICAgIGJvb2wgb3BhcXVlID0gIWZpbGxDb2xvci5oYXNBbHBoYSgpOwog
ICAgIGJvb2wgbGFzdFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0ID0gIXN0cm9rZWQgJiYg
b3BhcXVlOwogICAgIGlmICghb3BhcXVlKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIGRvIHsKICAgICAgICAgU2hhZG93QXBwbGllciBzaGFk
b3dBcHBsaWVyKGNvbnRleHQsIHNoYWRvdywgYm94UmVjdCwgbGFzdFNoYWRvd0l0ZXJhdGlvblNo
b3VsZERyYXdUZXh0LCBvcGFxdWUsIGhvcml6b250YWwgPyBIb3Jpem9udGFsIDogVmVydGljYWwp
OwpAQCAtMTMzLDcgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvCiAKICAgICAgICAg
SW50U2l6ZSBleHRyYU9mZnNldCA9IHJvdW5kZWRJbnRTaXplKHNoYWRvd0FwcGxpZXIuZXh0cmFP
ZmZzZXQoKSk7CiAgICAgICAgIGlmICghc2hhZG93ICYmICFvcGFxdWUpCi0gICAgICAgICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7CiAKICAgICAgICAgaWYgKHN0YXJ0
T2Zmc2V0IDw9IGVuZE9mZnNldCkKICAgICAgICAgICAgIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtz
KGNvbnRleHQsIGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0
LCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcAppbmRleCBiNmRlNzllOGIyNDY1OTlmZDJhNDU5MjRjNzY5NGEyMTdhODhiMTk3Li45MGM1
OWNlOTU0MTAxMzNkYzVhOTlkYWUxMTk4ZjE1YzY1Zjk5NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgaW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIAogICAgIGluZm8uY29udGV4
dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Io
Q29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNl
dFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSkpOwogICAgIAogICAgIGluZm8uY29udGV4dCgp
LmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkpKTsKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRP
ZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNl
dEhlaWdodCgpKSk7CkBAIC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2Nr
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
ICAgICAKICAgICBpbnQgdG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0Ip
OworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCkpOwog
ICAgIAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSwgSW50UG9pbnQo
YWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1
c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSk7CiAgICAgCiAgICAgaW50IGJhc2VsaW5l
ID0gcm91bmRUb0ludChiYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwg
SG9yaXpvbnRhbExpbmUpKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xv
cihDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSk7CiAgICAgCiAgICAgaW5mby5jb250ZXh0
KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFp
bnRPZmZzZXQueSgpICsgYmFzZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsg
YmFzZWxpbmUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggNTE5YmIzODg4OTYzMjY1Mzg1Njk2
ODI4ZWEwYzZiN2YwNjVkMmQ3Yi4uOTJlMjE4MjUwNTE4OTdjMWRjYjhhYmNmODEzNmJhYzA5OGRk
M2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTEZyYWN0aW9uOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldAogICAgIAogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyht
X2xpbmVUaGlja25lc3MpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZVNSR0IpOworICAg
IGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1
c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWlu
dE9mZnNldC54KCkgKyBkZW5vbWluYXRvcldyYXBwZXItPm9mZnNldFdpZHRoKCksIGFkanVzdGVk
UGFpbnRPZmZzZXQueSgpKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IGI4NmUzNjI5YTZi
NzhlNDA0YTVmYmFkZTQ0NzhkMmU0NzQ1NDc2OTEuLmU5ZTUzNGM0M2Q1NDdmZWJkM2JlYmI2MzM3
OWIwMWNkZWY5NjJhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlVGhpY2tuZXNzKDEpOwogICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgICAgICAvLyBUT0RP
IGFkZCBzdXBwb3J0IGZvciBub3RhdGlvbiB2YWx1ZSB1cGRpYWdvbmFsYXJyb3cgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ2NgogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG5vdGF0aW9uYWxWYWx1ZVNpemU7IGkrKykgewogICAgICAgICAgICAgaWYg
KG5vdGF0aW9uVmFsdWVzW2ldID09ICJ1cGRpYWdvbmFsc3RyaWtlIikKQEAgLTEyOSw3ICsxMjks
NyBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgICAgICAgICAgZWxzZSBpZiAobm90YXRp
b25WYWx1ZXNbaV0gPT0gImhvcml6b250YWxzdHJpa2UiKQogICAgICAgICAgICAgICAgIGluZm8u
Y29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJ
bnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJjaXJjbGUiKSB7Ci0gICAgICAgICAg
ICAgICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0
KCkuZHJhd0VsbGlwc2UocmVjdCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vdGF0aW9uVmFs
dWVzW2ldID09ICJsb25nZGl2IikKICAgICAgICAgICAgICAgICBpc0RlZmF1bHRMb25nRGl2ID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggM2NmZWIyMWNhOGQyNTdmM2VmZTUwYWExZTljZGMx
N2U0OTIyYzFhYy4uNjYwMjEwZjM0Y2Y2MGNjYmY3NzZmNTFiZDAwZjEzNjdkYmNiZWZmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAKQEAgLTE4ODksNyArMTg4OSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0CiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihpbmZvLmNvbnRleHQoKSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9y
KHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKIAogICAgIGlmIChtX3N0
cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd1NpemVWYXJpYW50KSB7CiAgICAgICAgIEFTU0VSVCht
X3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZ2x5cGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3Iu
Y3BwCmluZGV4IDY5MjVhNzlkNTU5ZDYxYmVkZDk0Y2M4NWQ3ZDA3ZTc0MjM0ZTliYjUuLjE4MDgy
OWRmMDkxMDc0NDNiNzExZTY1MGY0NDJiNGVkMjgyOWI5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxP
cGVyYXRvci5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJhZGljYWxP
cGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgog
CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsTGluZVRoaWNr
bmVzc0VtcyAqIHN0eWxlKCkuZm9udFNpemUoKSk7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9y
KHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgaW5mby5jb250
ZXh0KCkuc2V0TGluZUpvaW4oTWl0ZXJKb2luKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRNaXRl
ckxpbWl0KHN0eWxlKCkuZm9udFNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IGFjNGExNWRkODRhNDkz
NDQyZjM0NTljNWE0NTAyMTMxNGEwMTc1ZTYuLmMyNDNkMjBlOGE3YjJhMDg3N2Q1MDkzMTMxZTRm
OGJlMjgwOWFjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCiAKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9ydWxlVGhp
Y2tuZXNzKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7
Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGlu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpKTsKIAogICAgIC8vIFRoZSBwcmVmZXJyZWQgd2lkdGggb2YgdGhl
IHJhZGljYWwgaXMgc29tZXRpbWVzIGluY29ycmVjdCwgc28gd2UgZHJhdyBhIHNsaWdodGx5IGxv
bmdlciBsaW5lIHRvIGVuc3VyZSBpdCB0b3VjaGVzIHRoZSByYWRpY2FsIHN5bWJvbCAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNikuCiAgICAgTGF5b3V0VW5p
dCBzaXplRXJyb3IgPSByYWRpY2FsLT50cmFpbGluZ1NwYWNlRXJyb3IoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggZTBjYWVhYzljZDgwMWExYjhiNzMw
YjhmNGI5ZDdhNmQ3MTdlYmFhZC4uZmNjOGI3YTg4OTM1NGMyMmE1NjBkZDlhMjlmYjgxZWE2M2I5
NzI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4
NSw3ICsxODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJT
aGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIGlmIChpbWFnZUJ1ZmZl
cikgewogICAgICAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVm
ZmVyLT5jb250ZXh0KCk7CiAgICAgICAgIGlmIChpbWFnZSkKLSAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KElu
dFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkp
KTsKIAogICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFn
ZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1h
Z2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4
ZWxBcnJheS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L05pbmVQaWVjZUltYWdlLmNwcAppbmRleCBjOTM5YWU3NWQxZGZiYjkzYzIwMGQ5NDBjYTZkNGEy
OWE3NmE2YmQwLi41ZGVkYjU1NjJiODM0MWE3YWU2NzU5OTM4NmQwYjkxMGY4ZWMzMzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAK
QEAgLTIwOSwyMCArMjA5LDE4IEBAIHZvaWQgTmluZVBpZWNlSW1hZ2U6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBSZW5kZXJFbGVtZW50KiByZW5kCiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5
bGUuY29sb3JTcGFjZSgpOwotCiAgICAgZm9yIChJbWFnZVBpZWNlIHBpZWNlID0gTWluUGllY2U7
IHBpZWNlIDwgTWF4UGllY2U7ICsrcGllY2UpIHsKICAgICAgICAgaWYgKChwaWVjZSA9PSBNaWRk
bGVQaWVjZSAmJiAhZmlsbCgpKSB8fCBpc0VtcHR5UGllY2VSZWN0KHBpZWNlLCBkZXN0aW5hdGlv
blJlY3RzLCBzb3VyY2VSZWN0cykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBp
ZiAoaXNDb3JuZXJQaWVjZShwaWVjZSkpIHsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5k
cmF3SW1hZ2UoKmltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291
cmNlUmVjdHNbcGllY2VdLCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0lt
YWdlKCppbWFnZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwg
b3ApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFnZTo6
VGlsZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJ
bWFnZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwog
ICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2UpID8g
c3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6U3Ry
ZXRjaFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2Us
IGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0s
IHRpbGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsKKyAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNv
dXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAppbmRleCAyYjY0NTA3NzY3MDg2ODgyMGNjZTk3ZjAwNGE1NDU1OTcyZjBlYjI3Li5iZjFjMjE5
MDJkMmY0ZjA3NDBlNjdjZGUxZTE0Mzc2ZmIzNjAwOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtOTAyLDcgKzkwMiw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldFRleHRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBs
b2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdCB7IGdldFNoYWRvd0Js
b2NrRGlyZWN0aW9uRXh0ZW50KHRleHRTaGFkb3coKSwgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRv
bSk7IH0KIAogICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlV2lkdGg7IH0KLSAgICBzdGF0aWMgQ29sb3JTcGFjZSBj
b2xvclNwYWNlKCkgeyByZXR1cm4gQ29sb3JTcGFjZVNSR0I7IH0gLy8gRklYTUU6IFJlbW92ZSBh
ZnRlciBhZGRpbmcgY29sb3Igc3BhY2UgaGFuZGxpbmcgaW50byB0aGUgQ29sb3IgY2xhc3MuCiAg
ICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5v
cGFjaXR5OyB9CiAgICAgQ29udHJvbFBhcnQgYXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PENvbnRyb2xQYXJ0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNl
KTsgfQogICAgIEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxBc3BlY3RSYXRpb1R5cGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Fz
cGVjdFJhdGlvVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAKaW5kZXggZWY3NTdlNzM2M2YzNDhkYmRmZmE1MmZjY2RlOGFkMmNjMDJi
NzM1Ni4uZWE0MDIwNzI5MDdkNjQ4YWMzOGQ1MWFhNjVjM2I1MGNhMDViMTliNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE2OSw3
ICsxNjksNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8pCiAKICAgICBpbWFnZUVsZW1lbnQoKS5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCku
dHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CiAKLSAgICBwYWludEluZm8uY29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0
LCBzcmNSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZlcmVk
Rm9yZWdyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQ
YXRoLmNwcAppbmRleCAxZDAxM2FkN2MxZTBlOGM0MDE0MDA4NjhhMjcyNTkzYWJhY2EyZDA1Li4y
OTRjYjQ2MjNkZDc4MTNkYjY3ODgzNzVmZDZlYTI2ZDNiZDY1ZWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
c3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4o
KSkKICAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqcGF0dGVybik7CiAgICAgZWxzZQot
ICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb250ZXh0LnN0cm9rZUNvbG9yKCksIGNvbnRl
eHQuc3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29u
dGV4dC5zdHJva2VDb2xvcigpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFw
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDRm
M2JkNzg4MjdjNTYyMGQxNWI3NjI3ZjI2ZjY1ZWE0YTcwY2YxYTMuLjE2YWVkYjczMjY2ZGJmZmY3
Yzk5M2FmYjlmNThhZGQ4N2Q2N2Q2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNzEsNyArMjcx
LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNh
dENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwog
CiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZp
bHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXIt
PmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCks
IGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRhLT5maWx0ZXItPmZp
bHRlclJlc29sdXRpb24oKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0
ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5j
cHAKaW5kZXggZmI4OGZjOGI0YjI4Yjc4NTlkZDhmMjE1YjkwMjUxZDdlMGQyODNlNy4uNGIyMGRh
NThmOWU1YzNlYzkwNWY5ZWEzNmNmMzhkZjZkNzYzY2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9y
LmNwcApAQCAtNDIsNyArNDIsNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6
YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUgogICAgIEFTU0VS
VChyZXNvdXJjZU1vZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKIAogICAgIGNvbnN0IFNWR1Jl
bmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7Ci0gICAgQ29sb3JTcGFjZSBj
b2xvclNwYWNlID0gc3R5bGUuY29sb3JTcGFjZSgpOwogCiAgICAgYm9vbCBpc1JlbmRlcmluZ01h
c2sgPSByZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRC
ZWhhdmlvclJlbmRlcmluZ1NWR01hc2s7CiAKQEAgLTUxLDcgKzUwLDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFIKICAgICAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLmZpbGxP
cGFjaXR5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRBbHBoYSgx
KTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY29sb3IsIGNvbG9yU3BhY2UpOwor
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgICAgIGlmICghaXNS
ZW5kZXJpbmdNYXNrKQogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoc3ZnU3R5bGUu
ZmlsbFJ1bGUoKSk7CiAKQEAgLTYxLDcgKzYwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFIK
ICAgICAgICAgLy8gV2hlbiByZW5kZXJpbmcgdGhlIG1hc2sgZm9yIGEgUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLCB0aGUgc3Ryb2tlIGNvZGUgcGF0aCBpcyBuZXZlciBoaXQuCiAgICAgICAgIEFT
U0VSVCghaXNSZW5kZXJpbmdNYXNrKTsKICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3ZnU3R5
bGUuc3Ryb2tlT3BhY2l0eSgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9j
b2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fY29s
b3IpOwogCiAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRl
eHQoY29udGV4dCwgc3R5bGUsIHJlbmRlcmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNjlmMjk2MDZjNmNjZjEwNDBk
NWEwOWEzNWZkM2IyNDNjODk2NmY2OC4uNmU1ZGYzMDNlMjJkMDg4YzYxZmEyZjMwMGRkNDVhMzM0
ZGQ1OWM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCkBAIC0yMjUsOCArMjI1LDggQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgICAgIGlm
ICghZnJhZ21lbnRUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogCi0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25S
ZWN0Rm9yVGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdt
ZW50RW5kUG9zaXRpb24sICZzdHlsZSksIGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25S
ZWN0Rm9yVGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdt
ZW50RW5kUG9zaXRpb24sICZzdHlsZSksIGJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAgbV9w
YWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9EZWZhdWx0TW9kZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCBkMDJlZTUwYmQ2Y2EzN2U2MGE1MmVkNGY2ODA0NmVmZjkwODFhOGJjLi42Yzk5MDU1MmY4
MWNhMTQ5MDA4NzkxODhjMTYxNGUxN2YxM2M1MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNo
YWRvdykgewotICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zZXRTaGFkb3coSW50
U2l6ZShyb3VuZFRvSW50KHNoYWRvdy0+eCgpKSwgcm91bmRUb0ludChzaGFkb3ctPnkoKSkpLCBz
aGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJvdW5k
VG9JbnQoc2hhZG93LT54KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+cmFk
aXVzKCksIHNoYWRvdy0+Y29sb3IoKSk7CiAgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4
dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgICAgICBtX3JlbmRlcmluZ0Zs
YWdzIHw9IEVuZFNoYWRvd0xheWVyOwogICAgICAgICB9CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9v
bCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4mIGltYWdlQnUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGJvdW5kaW5nQm94KTsKKyAgICBtX3BhaW50SW5mby0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGJvdW5kaW5nQm94KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCmlu
ZGV4IGRlOGEyMmJhZDJiNWFjN2ZlOTQ5MWMxNzgwMzI5MTgxNzJkMGE3NmIuLmM2YjQ5NThiNzFl
ZjU0MzIwZDRjMmFkNDJiMzE4Zjk1YjE0ZTkzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRDb2xvci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTVkdBbmltYXRlZENvbG9yQW5p
bWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQK
ICAgICBmbG9hdCBhbHBoYSA9IGFuaW1hdGVkQ29sb3IuYWxwaGEoKTsKICAgICBtX2FuaW1hdGlv
bkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwg
ZnJvbUNvbG9yLmFscGhhKCksIHRvQ29sb3IuYWxwaGEoKSwgdG9BdEVuZE9mRHVyYXRpb25Db2xv
ci5hbHBoYSgpLCBhbHBoYSk7CiAKLSAgICBhbmltYXRlZENvbG9yID0geyB7IHJvdW5kQW5kQ2xh
bXBDb2xvckNoYW5uZWwocmVkKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChncmVlbiksIHJv
dW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYmx1ZSksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwo
YWxwaGEpIH0sIENvbG9yU3BhY2VTUkdCIH07CisgICAgYW5pbWF0ZWRDb2xvciA9IHsgcm91bmRB
bmRDbGFtcENvbG9yQ2hhbm5lbChyZWQpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGdyZWVu
KSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChibHVlKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hh
bm5lbChhbHBoYSkgfTsKIH0KIAogZmxvYXQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxj
dWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA3NTQ0
YTc2ZjM1ZjM1ZGEzYWE1OWRiMjc1OGExYTYyYTlhMjlmZjkyLi43NjljNTRlYTZiZjhkZjk3YWVm
MWNmNTA2ZjgwZmQzMzBmMzIyMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJT
aXplKCkgY29uc3QKIH0KIAogdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6
b29tLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFNW
R0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRTaXplIGNvbnRhaQogICAgIGFkanVzdGVkU3JjU2l6ZS5zY2FsZShyb3VuZGVkQ29udGFp
bmVyU2l6ZS53aWR0aCgpIC8gY29udGFpbmVyU2l6ZS53aWR0aCgpLCByb3VuZGVkQ29udGFpbmVy
U2l6ZS5oZWlnaHQoKSAvIGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOwogICAgIHNjYWxlZFNyYy5z
ZXRTaXplKGFkanVzdGVkU3JjU2l6ZSk7CiAKLSAgICBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNj
YWxlZFNyYywgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3Jj
LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7
CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKIH0KQEAgLTE3OSw3ICsxNzksNyBA
QCBQYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1h
bCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoYnVmZmVyLT5jb250
ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIEZJWE1FOiBXSyhC
dWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAg
IHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICNlbmRpZgogCiB2b2lkIFNW
R0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBGbG9h
dFJlY3Qgem9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRh
aW5lclNpemUpOwogICAgIHpvb21lZENvbnRhaW5lclJlY3Quc2NhbGUoem9vbSk7CkBAIC0yMDQs
NyArMjA0LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgY29udGV4dCwgdHJ1ZSk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBh
bGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1
ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUsIHpv
b21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRl
eHQoKSwgY29udGFpbmVyU2l6ZSwgem9vbSwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWlu
ZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgIGlmIChj
b250ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVt
aW5hbmNlTWFzaygpOwogCkBAIC0yMTksMTAgKzIxOSwxMCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3
UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
U2l6ZQogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJT
Y2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKICAgICBjb250
ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAgICBpbWFnZS0+ZHJhd1BhdHRlcm4o
Y29udGV4dCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVu
ZE1vZGUpOwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKaW5kZXggMWFiYTkyYWU4NzkzYTRjZTRlYjgzNjc1ODg2Njc1ZDhhMGExNGUxYi4uNzk4MDMx
NGU4Nzk5ZjcwOTQwZWI0YTA5N2NkOTg0NDQ4MjVmMjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTVkdJbWFnZShJ
bWFnZU9ic2VydmVyJiwgY29uc3QgVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
b1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
em9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNw
YWNlLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUs
IGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAogICAgICAgICBDb21w
b3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKIAogICAgIFNWR1NW
R0VsZW1lbnQqIHJvb3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCA1YTM4MzUxMTY1MDhk
N2QwZGZjYmEwZTQzNjBlNjVjZjUzMTA3NDMwLi40ZTE2MWUzZjBkNDRhNmFhNmVhNmMwM2Y1ZWQ5
YWJjMTllYmFlYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTM1LDE1ICszNSwxNSBAQCBGbG9hdFNpemUgU1ZH
SW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKLSAgICBtX2ltYWdlLT5kcmF3Rm9yQ29udGFp
bmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBzcmNSZWN0LCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBtX2ltYWdlLT5kcmF3Rm9y
Q29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBzcmNS
ZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBTVkdJbWFnZUZvckNvbnRh
aW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSkKIHsKLSAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2Nv
bnRhaW5lclNpemUsIG1fem9vbSwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29t
cG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIFBhc3NOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRl
eCA2YWJiYmM2ZDAyMmUwMGJjYzliMTg2ZmE1OTg4OGI5YWQ3ZWVhNWYzLi5kZTk4ZmYyMTY2MWUz
ZDQ0MjEzY2IyZTc2ZDFmMzJkNGNjZmMzMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJs
aWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNp
Y1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAg
ICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IDY2MThjZjU0ODRlNDllZTIxY2NjZjY3ODk0ZDAwMmY2
MGUxN2U4MDYuLjdmN2E5YzMyZGY4NWYxYjFlODQxNjA3NWU4Y2I4MThlZWVkNjc2YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3Bw
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2UoKm1faW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0
KTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqbV9pbWFnZSwgZGVzdFJl
Y3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIEZFSW1hZ2U6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCmluZGV4IDYxZjE5YmYxNjUw
MWE5ZGZmMTZkN2I5ZTg5ODIwNDg0ZTIxMTE1ZDguLmNiYzM4NTYzNzEzYmY3ZTdkYjk2OGQxN2Zl
Yjk2OTMxMDkyNTJiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1Bh
Z2VPdmVybGF5Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdl
T3ZlcmxheUNsaWVudC5jcHAKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lkIE1vY2tQYWdlT3Zlcmxh
eUNsaWVudDo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYg
Y29udAogICAgIEZsb2F0UmVjdCBpbnNldFJlY3QgPSBvdmVybGF5LmJvdW5kcygpOwogCiAgICAg
aWYgKG92ZXJsYXkub3ZlcmxheVR5cGUoKSA9PSBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRv
Y3VtZW50KSB7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAw
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3Io
Q29sb3IoMCwgMjU1LCAwKSk7CiAgICAgICAgIGluc2V0UmVjdC5pbmZsYXRlKC01MCk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihD
b2xvcigwLCAwLCAyNTUpKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTIwKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCBmMWU3
NDk5M2FjNzg0MjBlNTE1Njk4MDE0MTc4MDhlOGFlZGJhMzZjLi41MTkyZmI4MTliODM5MDE5ZWNj
OWVmMDk5ZTBmNmRiMGVjM2E1YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJW
aWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQ
REZWaWV3SU9TLm1tCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIENHQ29sb3JSZWYgY3JlYXRl
Q0dDb2xvcldpdGhEZXZpY2VXaGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQogICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAgICAgQ0dGbG9hdCBoZWlnaHQgPSBXZWJL
aXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9GTElQUEVEX1NIQURP
V1MpID8gMi4wZiA6IC0yLjBmOwogICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250
ZXh0LCBDR1NpemVNYWtlKDAuMGYsIGhlaWdodCksIDMuMGYsIFtbc2VsZiBjbGFzc10gc2hhZG93
Q29sb3JdKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2Fj
aGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICBDR0Nv
bnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6
d2hpdGUpKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBwYWdlUmVjdCk7CiAgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsgICAgCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQppbmRleCAxZTBlMDdjNGY5N2Zl
ZTRhYTQyMDEzYjE1MTZjYjRjOTM4ZDk5OGQyLi45MDc3MjIwNjMxY2E1OGFiZDgyMmMxMmM5MzZh
ZGMxMWQwNWI1OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBs
YWluV2hpdGVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5X
aGl0ZVZpZXcubW0KQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAt
ICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVjdAogewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENv
bG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRl
eHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7CiAgICAgV0tSZWN0RmlsbChjb250ZXh0
LCBbc2VsZiBib3VuZHNdKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggMDAyNWFlMjkzMDIxN2EyYWU2NjJmZjA0ZDZhMGI2NGM5
YjRiZGRhZC4uY2Y3OGRiMzNiN2YyZTdhZTYwMDBjNzc5ZDZjYmI3MTA0Zjc2YmZhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xMDAs
NyArMTAwLDcgQEAgc3RhdGljIEJPT0wgY2FuVXNlRmFzdFJlbmRlcmVyKGNvbnN0IFVuaUNoYXIg
KmJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICBDR0Zsb2F0IGJsdWU7CiAgICAgICAg
IENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNl
TmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVl
OiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAy
NTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBo
YSAqIDI1NSkpOwogCiAgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4
dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBv
aW50LnkpKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
V2ViTm9kZUhpZ2hsaWdodFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
V2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KaW5kZXggZGIwNWIzNGRiZWI5NGQ2OGU2NmUyZGJmYmMy
OTI3YzI2ZjVmYzEwYi4uMzhhYmJiNGQ0MTYxNjg5ZmViNjgyZjA3MDgyYmVhYTNhOTYyZDU0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGln
aHRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGln
aGxpZ2h0Vmlldy5tbQpAQCAtMjgwLDEwICsyODAsMTAgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRo
KENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogICAgIEZs
b2F0UXVhZCBwYWRkaW5nUXVhZCA9IGhpZ2hsaWdodC0+cXVhZHNbMl07CiAgICAgRmxvYXRRdWFk
IGNvbnRlbnRRdWFkID0gaGlnaGxpZ2h0LT5xdWFkc1szXTsKIAotICAgIG1hcmdpbkxheWVyLmZp
bGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5tYXJnaW5Db2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvciho
aWdobGlnaHQtPmJvcmRlckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWRkaW5n
TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPnBhZGRpbmdDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hl
ZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5tYXJn
aW5Db2xvcik7CisgICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdo
bGlnaHQtPmJvcmRlckNvbG9yKTsKKyAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVk
Q0dDb2xvcihoaWdobGlnaHQtPnBhZGRpbmdDb2xvcik7CisgICAgY29udGVudExheWVyLmZpbGxD
b2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IpOwogCiAgICAgbGF5
ZXJQYXRoV2l0aEhvbGUobWFyZ2luTGF5ZXIsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQpOwogICAg
IGxheWVyUGF0aFdpdGhIb2xlKGJvcmRlckxheWVyLCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCk7
CkBAIC0zMDEsNyArMzAxLDcgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hhcGVMYXllciAq
bGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogCiAgICAgW3NlbGYgX2F0dGFjaDpw
YXJlbnRMYXllciBudW1MYXllcnM6bnVtTGF5ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29udGVu
dENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPmNvbnRlbnRDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBjYWNoZWRDR0NvbG9y
KGhpZ2hsaWdodC0+Y29udGVudENvbG9yKTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkg
PCBudW1MYXllcnM7ICsraSkgewogICAgICAgICBDQVNoYXBlTGF5ZXIgKmxheWVyID0gW19sYXll
cnMgb2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgbGF5ZXIuZmlsbENvbG9yID0gY29udGVudENv
bG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYzVjN2U3ZDFhYzdl
ZDM0MmFlNzg2OGRlNWU4MDFhNjUyMzU0NjUxZC4uZjIxOTA2MGVhYTY3YTE0NDdkY2MwMDgxMDNj
YjFlNmJkOTJlODdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0x
MDI5LDcgKzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHJldHVybiBu
c0NvbG9yKGNvbG9yKTsKICNlbHNlCi0gICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHJldHVybiBjYWNoZWRDR0NvbG9yKGNvbG9yKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4
IDFjN2ZhNGE0ODliMzkxYWMwZDdjYzhmZWYyMWNiMGM3OTFmMzdjMTMuLmFjMGU3NzI0ZmNjMTE2
YWQ3YTk2OTk1ZGQ0MTJhYjJlYjljNmI4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVWaWV3Lm1tCkBAIC01MjYsNyArNTI2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpD
Q2wKICAgICAgICAgICAgIE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dD
b250ZXh0UmVmIGNnQ29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAg
ICAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVk
Q0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29sb3Io
Q29sb3I6OndoaXRlKSk7CiAgICAgICAgICAgICBXS1JlY3RGaWxsKGNnQ29udGV4dCwgcmVjdCk7
CiAjZW5kaWYKICAgICAgICAgfQpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mg
b2JqQ0NsCiAgICAgICAgICAgICBOU1JlY3RGaWxsKHJlY3QpOwogI2Vsc2UKICAgICAgICAgICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBXS0dldEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsK
LSAgICAgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNh
Y2hlZENHQ29sb3IoQ29sb3I6OmN5YW4sIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29s
b3IoQ29sb3I6OmN5YW4pKTsKICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCByZWN0
KTsKICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkluZGljYXRlTGF5ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYklu
ZGljYXRlTGF5ZXIubW0KaW5kZXggNWVkODRiYzczODJlOGY3MjA0YmMzZTE4ZTI5ZTE1YmRjODdm
NDAwNi4uZjk0NDRkYzM3NGUwNDJiNmQwNTA3NzBhMjYwNzJlMWU3YmUxMmM0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQpAQCAtNTAsNyArNTAs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogICAgIC8vIEJsdWUgaGlnaGxpZ2h0IGNv
bG9yLgogICAgIHN0YXRpYyBDb2xvciBoaWdobGlnaHRDb2xvcigxMTEuMGYgLyAyNTUuMGYsIDE2
OC4wZiAvIDI1NS4wZiwgMjIwLjBmIC8gMjU1LjBmLCAwLjY2Zik7Ci0gICAgc2VsZi5iYWNrZ3Jv
dW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodENvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0
Q29sb3IpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IDk5YzIzZmU4OWIwYjMyMzNiYTkxMjE3MTFkMDU0
NzVmZDQxODNkMzIuLmJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01Nyw2
ICs1Nyw2IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYg
aW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIEZs
b2F0UmVjdCByZWN0KEZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhpY3ND
b250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZl
SW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQiwg
cmVjdCwgcmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VS
ZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJl
bGVhc2UoKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRl
eHRNZW51Q29udGV4dERhdGEuY3BwCmluZGV4IGViODc2NzM4ZGVkODcyOGQ5MWQ1OTcwOWY5ODM5
OTYyNTg0ZjBiNjguLmI1NDU0ZjQ3MmY0MDY0MzAyNmRlZGU3MmU5NzE2YjgyNmI2NzFkMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKIAogICAgIC8vIEZJWE1F
OiBmaWd1cmUgb3V0IHRoZSByb3VuZGluZyBzdGFydGVneSBmb3IgU2hhcmVhYmxlQml0bWFwLgog
ICAgIG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
SW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsK
LSAgICBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFn
ZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAgIG1fY29udHJv
bGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgSW50
UG9pbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmMGUyNjM2MmU1MWI3MDkzYmVmNGIwZjE5N2QwYjNl
MjllOWQ2MmIwLi4zOWRmN2ZiMWFlYTliNjAwYjIwNjE3YzBhMmM3MzZmNmI5NDRhNDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
NzQyLDcgKzc0Miw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlCiBzdGF0aWMgdm9pZCBlbmNv
ZGVJbWFnZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKICAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSk7Ci0gICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbQppbmRleCAyY2NiYWM3ZmM3ZjI3MDljMGZhYzJlMjBlZWM5OWY0MGNi
YWY5ZmM1Li5jN2JjNjEwMWRhNGMzNDFmMDZmNzk4NjIyNjc4YWZhYjUzYjJlZWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogCiAjaWZuZGVm
IE5ERUJVRwogICAgIGlmIChtX2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNj
YWxlZExheWVyQm91bmRzLCBDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgY29udGV4dC5maWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywgQ29sb3IoMjU1LCAw
LCAwKSk7CiAjZW5kaWYKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBlMGJhYjM3M2VjZWFhODM5ZGY4YzE2ZDIwYTA5ZjYyYjRhY2Y5
NWU4Li5lN2VmZjJmMGQxYmJmODE5ZDE5M2E1MDI2YjZhMmZmNmRlZWNlZmRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk0LDcg
Kzg5NCw3IEBAIHN0YXRpYyBXZWJDb3JlOjpDb2xvciBzY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
KFdLV2ViVmlldyAqd2ViVmlldykKIAogICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0g
Y29sb3I7CiAKLSAgICBhdXRvIHVpQmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3Ig
YWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBXZWJDb3JlOjpDb2xv
clNwYWNlRGV2aWNlUkdCKV0pOworICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5T
KFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXSk7
CiAgICAgW19zY3JvbGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5n
ZXQoKV07CiAKICAgICAvLyBVcGRhdGUgdGhlIGluZGljYXRvciBzdHlsZSBiYXNlZCBvbiB0aGUg
bGlnaHRuZXNzL2RhcmtuZXNzIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KaW5kZXgg
MzZjZGFiYTNjZGZmOTc2OTRjODQ0NjMwMTJlYTM5NWUxMjA2NmY5Zi4uNWVlNTVhNWU2ZDcxNGQ4
MDFhY2I1YjM4ODE5YjgwNmZhN2IwNTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0yMjksMTAgKzIyOSwxMCBA
QCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxvYXRR
dWFkJiBvdXRlclF1YWQpCiAgICAgRmxvYXRRdWFkIHBhZGRpbmdRdWFkID0gaGlnaGxpZ2h0LnF1
YWRzW29mZnNldCArIDJdOwogICAgIEZsb2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hsaWdodC5x
dWFkc1tvZmZzZXQgKyAzXTsKIAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENH
Q29sb3IoaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBi
b3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5ib3JkZXJDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNh
Y2hlZENHQ29sb3IoaGlnaGxpZ2h0LnBhZGRpbmdDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgY29udGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNv
bnRlbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgbWFyZ2luTGF5ZXIuZmlsbENv
bG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQubWFyZ2luQ29sb3IpOworICAgIGJvcmRlckxh
eWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yKTsKKyAg
ICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQucGFkZGlu
Z0NvbG9yKTsKKyAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdo
bGlnaHQuY29udGVudENvbG9yKTsKIAogICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxheWVy
LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkKTsKICAgICBsYXllclBhdGhXaXRoSG9sZShib3JkZXJM
YXllciwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRp
YyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91
dGVyUXVhZCkKIAogICAgIFtzZWxmIF9jcmVhdGVMYXllcnM6bnVtTGF5ZXJzXTsKIAotICAgIENH
Q29sb3JSZWYgY29udGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9
IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvcik7CiAgICAgZm9yIChOU1VJbnRl
Z2VyIGkgPSAwOyBpIDwgbnVtTGF5ZXJzOyArK2kpIHsKICAgICAgICAgQ0FTaGFwZUxheWVyICps
YXllciA9IFtfbGF5ZXJzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAgIGxheWVyLmZpbGxDb2xv
ciA9IGNvbnRlbnRDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMmY0OGRiYjFkNDQxY2U3NWQ0
NjQ4NzY5YzZlNTNhNjZkOTkyYmMyMy4uNmY5MTE3NjU0MGJkZWNiNTMxMGI3YmQ5NjRiNjlkNjU2
ZTZiMzAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0
aXZlVHJhbnNpdGlvbgogICAgICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250ZW50
cyA9IHNuYXBzaG90LT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgQ29sb3IgY29yZUNvbG9y
ID0gc25hcHNob3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29yZUNvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9y
IGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpXSk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtb
VUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29yZUNvbG9yKV0p
OwogICAgIH0KIAogICAgIFttX3NuYXBzaG90VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFja2dy
b3VuZENvbG9yLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOGVlNmE3YTk4ZjAyOGRiYzNl
MGQ4Y2Q4YWJhZTVlNGM0MWQ5MGJmMS4uYzQzZWYzYTFlMTc1MzM3NWU5NGJlNmQxMzFiYmM3NzBk
MWZiNzljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTc4OSw3ICs3ODksNyBAQCBzdGF0aWMgTlNW
YWx1ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNpemUg
Ym9yZGVyUmFkaXVzLAogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIFJldGFpblB0
cjxVSUNvbG9yPiBoaWdobGlnaHRVSUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2Nd
IGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5j
b2xvciwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQildKTsKKyAgICAgICAgUmV0YWluUHRy
PFVJQ29sb3I+IGhpZ2hsaWdodFVJS2l0Q29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10g
aW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNv
bG9yKV0pOwogICAgICAgICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6aGlnaGxpZ2h0VUlLaXRD
b2xvci5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDQwYjRmN2FlMDUxOGFi
NTJjZmQ3YWVlNGY2NDg1YzdkNDkyMzcxZjQuLjY2YzhiMGY5ZGM5OTc1YmYyZjVkZjcwNWM1ZGVj
ZmFkZGNiNDkwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIHRhcmdldEl0ZW0KIAogICAgICAgICBDb2xvciBjb3JlQ29sb3IgPSBzbmFwc2hvdC0+
YmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChjb3JlQ29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dD
b2xvcihjb3JlQ29sb3IpOwogICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gc25hcHNo
b3Q7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0ZpbmRDb250cm9sbGVyLmNwcAppbmRleCAzMDNlMWI3MzM2YmExNTdjODBiNjM2MTcyMDgzYzM5
NTcxMmQ1MzYzLi44YTc2MzFlMTEyODI3NjNmYTM5MzcwOTQ0YWRlNDBmYjliOWM5ODA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdSZWN0
KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAg
VmVjdG9yPEludFJlY3Q+IHJlY3RzID0gcmVjdHNGb3JUZXh0TWF0Y2hlc0luUmVjdChib3JkZXJJ
bmZsYXRlZERpcnR5UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kLgotICAgIGdy
YXBoaWNzQ29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3QsIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3Is
IENvbG9yU3BhY2VTUkdCKTsKKyAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0
LCBvdmVybGF5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zm
c2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIHNoYWRvd0Nv
bG9yQWxwaGEpLCBDb2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlU1JHQik7CisgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkp
LCBzaGFkb3dCbHVyUmFkaXVzLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dDb2xvckFs
cGhhKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRl
KTsKIAogICAgICAgICAvLyBEcmF3IHdoaXRlIGZyYW1lcyBhcm91bmQgdGhlIGhvbGVzLgogICAg
ICAgICBmb3IgKGF1dG8mIHJlY3QgOiByZWN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjUwYjQyYjlkYzdlZWRmNGE0ODBkMDBk
MzM0YmMzMTk5MTRjZWY4NS4uMDhiODdkMTM0YzU4OGY1YTY0NDM2NDIyNjczZWU2MzM4ZjM4Mjk1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC04NDgsNyArODQ4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1l
OjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSBzaGFyZWRTbmFwc2hvdC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rv
cigpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRldmljZVNjYWxlRmFj
dG9yLCBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdl
QnVmZmVyKCpzbmFwc2hvdCwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRQb2ludCgpKTsKKyAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqc25hcHNob3QsIEZsb2F0UG9pbnQo
KSk7CiAKICAgICByZXR1cm4gc2hhcmVkU25hcHNob3QucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA1NTYwOThhYTAy
MGU0MTlkNDhkNmM2Mjk2NzJmMWIwZDhkMTQwMTcuLjQzMjcxNDgwNzQ5MzRhNzI3OGI4N2Y5YWE1
ZjQwZGUyZTQzNWQ0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTE3ODAsNyArMTc4MCw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdl
YlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
CiAKICAgICBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+ZG9jdW1l
bnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoY29yZUZy
YW1lLT5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkgJiYgZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9y
IDogZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpLCBiYWNrZ3JvdW5kQ29s
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAg
IGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3Ip
KSB7CiAgICAgICAgIGRvdWJsZSBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmlj
ZVNjYWxlRmFjdG9yKCk7CkBAIC0xODAzLDcgKzE4MDMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdl
PiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJgogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJl
Y3RhbmdsZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gbV9tYWlu
RnJhbWUtPmNvcmVGcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKTsKLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigweEZGLCAwLCAwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMHhGRiwgMCwgMCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnN0cm9rZVJl
Y3Qoc2VsZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5t
bQppbmRleCBkYmEyZDA1OGNhNTkyNWMxMDhkMDNmOWY2ZWQ1OTgwYmMxMGE2ZDQwLi4xZDY5MDhi
ZTllZmI1OGRjZjNhZGM3MGEzYTE5ZTVkMDcxNDNlZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0K
QEAgLTc5LDExICs3OSwxMSBAQCB2b2lkIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TOjpk
cmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZQogICAgIFZlY3RvcjxG
bG9hdFJlY3Q+IHRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBtX3RleHRJbmRp
Y2F0b3ItPnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMoKTsKICAgICBWZWN0b3I8
UGF0aD4gcGF0aHMgPSBQYXRoVXRpbGl0aWVzOjpwYXRoc1dpdGhTaHJpbmtXcmFwcGVkUmVjdHMo
dGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgY29ybmVyUmFkaXVzKTsKIAotICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKCkpOwogICAgIGZv
ciAoY29uc3QgYXV0byYgcGF0aCA6IHBhdGhzKQogICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBh
dGgpOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmluZGljYXRvckltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBvdmVybGF5LmJvdW5kcygpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW5k
aWNhdG9ySW1hZ2UsIG92ZXJsYXkuYm91bmRzKCkpOwogfQogCiBib29sIEZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2lu
Z092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiODIzYjhlOWYzMTdmNWY0
ZGMzNDdmNTIyZGNjN2Y4ODFhOTkyOGZhLi42N2Q2MjQ1N2UwMDljZjA2ZTY2ZWI3OTAzNTc4Njkx
MTBlNmY5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMjE5LDcgKzIyMTksNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbklu
Zm9ybWF0aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUgYml0bWFw
U2l6ZSA9IHNjYWxlZFNpemUud2lkdGgoKSA8IGltYWdlLT5zaXplKCkud2lkdGgoKSA/IHNjYWxl
ZFNpemUgOiBpbWFnZS0+c2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgU2hhcmVhYmxlQml0bWFwOjpT
dXBwb3J0c0FscGhhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3QoMCwgMCwgYml0
bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZs
b2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRC
aXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlZWM2NWFiNDc1NDcyMzIy
ZDg4NmNkY2E3NWIzZjg0ZTM4NDg1ZDkyLi4wYmYzNjRjMTQzN2UzNTYxZGExMWIyZGI2ZTJhY2Ux
YmExZTIyNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAog
ICAgIFt2aWRlb0xheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKDAsIDApXTsKLSAgICBbdmlk
ZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICBbdmlkZW9M
YXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJh
bnNwYXJlbnQpXTsKIAogICAgIC8vIFNldCBhIHNjYWxlIGZhY3RvciBoZXJlIHRvIG1ha2UgY29u
dmVydFJlY3Q6dG9MYXllcjpuaWwgdGFrZSBzY2FsZSBmYWN0b3IgaW50byBhY2NvdW50LiA8cmRh
cjovL3Byb2JsZW0vMTgzMTY1NDI+LgogICAgIC8vIFRoaXMgc2NhbGUgZmFjdG9yIGlzIGludmVy
dGVkIGluIHRoZSBob3N0aW5nIHByb2Nlc3MuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264919</attachid>
            <date>2015-11-05 23:24:13 -0800</date>
            <delta_ts>2015-11-06 08:29:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150967-20151105232311.patch</filename>
            <type>text/plain</type>
            <size>316153</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzMDRmYTY1MDg1ODVm
ZTI5ZjViZjEwMTIzODVlZGIxNTg4ZGY2Mi4uNDY3OTAzODA0OWI2OTJiYjBhYjY5N2I0OGNjYjAz
MTk3Zjg0MTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NCBAQAorMjAxNS0xMS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29s
b3JTcGFjZSBhcmd1bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSAtd2Via2l0LWNvbG9y
LWNvcnJlY3Rpb24gQ1NTIHByb3BlcnR5IHdhcyByZW1vdmVkIGluIHIxODgyMDIsIGFuZCBDb2xv
clNwYWNlRGV2aWNlUkdCCisgICAgICAgIGFuZCBDb2xvclNwYWNlU1JHQiBhcmUgZnVuY3Rpb25h
bGx5IGVxdWl2YWxlbnQsIHdlIGNhbiByZW1vdmUgYWxsIHRoZSBDb2xvclNwYWNlIGFyZ3VtZW50
cyBwYXNzZWQKKyAgICAgICAgdG8gZHJhd2luZyBmdW5jdGlvbnMsIGFuZCByZW1vdmUgUmVuZGVy
U3R5bGU6OmNvbG9yU3BhY2UoKSwgd2hpY2ggd2FzIGhhcmRjb2RlZCB0byByZXR1cm4gQ29sb3JT
cGFjZVNSR0IuCisgICAgICAgIAorICAgICAgICBGaWxsIGFuZCBzdHJva2UgQ29sb3JTcGFjZXMg
YXJlIGFsc28gcmVtb3ZlIGZyb20gZ3JhcGhpY3Mgc3RhdGUsIHNpbXBsaWZ5aW5nIGNvbG9yIHNh
dmUvcmVzdG9yZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoX3BsYXRmb3JtQ29s
b3IpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZp
bGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3
SW1hZ2VJbnRvQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Ny
b2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZTo6ZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRy
YXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2Fj
eVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxDb2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3U2hhZG93QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVy
QW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YmVn
aW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjplbmRTaGFkb3dM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0
cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdS
ZXBhaW50Q291bnRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldENH
RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNG
b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lU
aWxlR3JpZFRpbGU6OnNob3dCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENv
bXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRD
b21wb3NpdGlvblVuZGVybGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCb3hTaGFkb3dGb3JC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0F4aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWlu
dFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVV
cGxvYWRJY29uRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9y
Rm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50TGF5b3V0OjpsYXlP
dXRTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlv
bkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnREZWJ1Z0JvcmRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGll
cjo6U2hhZG93QXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93
cyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUt
MTEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmlldyBvbiBhcHBsZS5jb20vY29udGFjdCB3aXRoIGFsbCB0ZXh0IHNlbGVjdGVkIHNob3dz
IGEgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTBiMGFkZDAzNWQxZTE5ODljZjI0ZWYzNzdiODYw
NjZkOWE2MzgwMi4uY2MyMmQ3NjhhMjBlM2Y2YmU2MWIwMmZhMmUyMTJiYTUxODIyNTQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFy
Z3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlv
biBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZp
Y2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZh
bGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAor
ICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29s
b3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1t
OgorCiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXhlZCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTE5MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NGUxODNhNDc5ZTczOTc1MTRjMjA3MGI0NzU1YzZkYWJiYWU4NWFmZC4uNDFkZmQzZDBjYjFhNjNl
NTFkNmFmZTNiZDBiNmYzZDE3ZjkxMjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBj
YWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQg
aW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3Bh
Y2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhl
IENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9u
cywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNv
ZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9u
dDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dFZpZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJO
b2RlSGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklu
ZGljYXRlTGF5ZXIubW06CisKIDIwMTUtMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0sxXSBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcgQmxpbmsg
bGF5b3V0IHRlc3QgZWRpdGluZy9pbnB1dC90ZXh0LWlucHV0LWNvbnRyb2xsZXItbm8tZWRpdGFi
bGUtbm8tY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhMGRkZDQ3MjQ2MmU5YTE0M2RiNTUzYmFh
NWQ1ZTQzZGRhMjhhZTQuLjk4MDQ5MDAxOTg3OGNiMWNkOWUwZjM4ZGYxYmRiNjQxMWJhZWQzNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNS0xMS0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JTcGFjZSBhcmd1
bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9Db250
ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6b2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0XSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250
cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0xMS0wNSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2aWV3IG9uIGFwcGxlLmNv
bS9jb250YWN0IHdpdGggYWxsIHRleHQgc2VsZWN0ZWQgc2hvd3MgYSBtYXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4
IDQxNzE5ODc0YzdkNjEwMWUyYzg2MDJmMzQ2NjA2ODQ1NmRkMTg0MjAuLmYzNzJhMTBlMDMzZWRl
YmZjNTM1OGRmM2ZkMTI0YWYyMGNiZTU2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTM0Nyw3ICsxMzQ3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxU
eXBlIGVxICJDb2xvciIpIHsKICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZUNHQ29sb3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6OmNh
Y2hlZENHQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsIC49ICIsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpIjsKKyAg
ICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
V2ViQ29yZTo6bnNDb2xvcigkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCmluZGV4IGJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0Yzc3MjYw
NjAyM2IuLjIzMWEzMmQ2YWE1MGIzNTFjNWEzYTA5NjI4ZGI2OWE1MDcwOTRlNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFn
ZSgpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBpbWFnZVJlY3QpOworICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3QpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
PiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAgICBm
aWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RGOjptb3ZlKHRleHR1cmUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYTcxZThiNWI5YjExMTJl
NWEzZGJkM2Q2ODVlZWZjZTQwNGUzZjg3Yi4uNmU0YjMxZWYzMzY4YjZlYmEzYTU5NzhhZGJkZDk2
ZGM4MmUxMWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE1NzAsNyArMTU3MCw2IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5v
ZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2Rl
LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCA9IG5v
ZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIApAQCAtMTU4MywxNyArMTU4MiwxNCBAQCB2b2lk
IENhcmV0QmFzZTo6cGFpbnRDYXJldChOb2RlKiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAgYXV0byBlbGVtZW50QkdDb2xvciA9IGVs
ZW1lbnRTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwogICAgICAgICAgICAgaWYgKGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChlbGVtZW50QkdD
b2xvciwgcm9vdEVkaXRhYmxlQkdDb2xvcikpIHsKICAgICAgICAgICAgICAgICBjYXJldENvbG9y
ID0gcm9vdEVkaXRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwotICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UgPSByb290RWRpdGFibGVTdHlsZS5jb2xv
clNwYWNlKCk7CiAgICAgICAgICAgICAgICAgc2V0VG9Sb290RWRpdGFibGVFbGVtZW50ID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRh
YmxlRWxlbWVudCkgeworICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRhYmxlRWxlbWVudCkKICAg
ICAgICAgICAgIGNhcmV0Q29sb3IgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAgICAgIGNvbG9yU3Bh
Y2UgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IsIGNvbG9y
U3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQzZDQ2
NWZiN2QwNDdkMzgyYTU1NWI4MjU2ZmI0ODAzMjgxZjNkOGUuLjc1ZGI3MWQ0MDE1OWQ5NDhhZmE4
MThjYWQ1NmU1N2Y4NDIxNzgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgTlNCdW5kbGUgKl93
ZWJLaXRCdW5kbGUoKQogCiBzdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENv
bG9yIGNvbG9yKQogewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0
ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBX
ZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKIH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0
Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAppbmRleCA1NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExLi5j
MGZiNDhiZmE0YmY2MWFmOGUzM2ZjNjcwNDlkMTFiZDZiZGRhN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAg
ICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJ
bnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGIxOWQ5
ZTBkYzcwM2Q1NTUzZjczMjYyMTMzYzIwYzk0ZjYyOGM3OWYuLmQyYmRkMGJjMjUyNDE1YTg2YzI4
NzE0OGI1Y2IxMmJlMzBhNjY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE1NCw3ICsxMTU0LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkg
ewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0gdHJ1ZTsKLSAgICAg
ICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNw
YXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lT
aGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgfQogICAgIGlm
IChzdGF0ZSgpLmdsb2JhbEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAt
MTMxOSw5ICsxMzE5LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hh
ZG93KCkKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkgewogICAgICAgICBmbG9hdCB3aWR0
aCA9IHN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9
IHN0YXRlKCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpOwotICAgICAgICBjLT5zZXRMZWdhY3lTaGFk
b3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5zaGFkb3dCbHVyLCBzdGF0ZSgp
LnNoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYy0+c2V0TGVnYWN5
U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkuc2hhZG93Qmx1ciwgc3Rh
dGUoKS5zaGFkb3dDb2xvcik7CiAgICAgfSBlbHNlCi0gICAgICAgIGMtPnNldExlZ2FjeVNoYWRv
dyhGbG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJh
bnNwYXJlbnQpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxkRHJh
d1NoYWRvd3MoKSBjb25zdApAQCAtMTQ0OCwxNyArMTQ0OCwxNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCwg
Y29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERz
dFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKKyAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBp
ZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAg
ICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAg
IGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1
MzYsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2Fu
dmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENv
bnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKLSAg
ICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOworICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52
YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0
ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xv
YmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBk
aWREcmF3KGRzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE2MTIsNyArMTYxMiw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8s
IGNvbnN0IEZsb2F0UmVjCiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAg
Yy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8tPnZpZGVvV2lkdGgoKSwg
dmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8t
PnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsK
ICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpAQCAtMTcyNiwyMSArMTcyNiwyMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7CiAg
ICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwogICAgIGMtPnJlc3RvcmUoKTsKLSAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0Lmxv
Y2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoYnVmZmVyLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
KTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBv
cCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKTsK
IApAQCAtMTc2Niw3ICsxNzY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAgICBidWZm
ZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9u
KCkueCgpLCAtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0LndpZHRoKCksIGNyb3BwZWRP
ZmZzZXQuaGVpZ2h0KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3Rp
dmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250
ZXh0KCksIHN0eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAogICAgIGNvbXBvc2l0
ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkBAIC0yNDQwLDggKzI0NDAsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICAgICAgICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICAgICAgICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgICAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgICAgICAgICAgYy0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAgICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZs
YXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7CkBAIC0yNDUwLDEyICsyNDQ5LDEyIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgICAgIHNoYWRvd09mZnNldCArPSBvZmZzZXQ7CiAK
LSAgICAgICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICAgICAgYy0+c2V0TGVn
YWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGMtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24gKyBvZmZz
ZXQsIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQpA
QCAtMjQ2Nyw5ICsyNDY2LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdU
ZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGZpbGwpCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAppbmRleCA4NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4NDE1OTQ1M2Q5Li5k
Njk5OWJmM2MzZmUwNmVjMjU3ZDA3MDVjYjkzMDA2ZDM3YzExODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0zNjcsNyArMzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZShUJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGQzNThhMjE3OTU4ODM5NmJmYjcwYTVmZDdjZWI1
MjgwMjRmZTM5MTkuLmI2ODNhMmVhNjk5ZWJhY2E4YTM2NTIxNzM2ZTdhMDg1MmQ3ZjFjMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0
IEFQSS4KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNv
bG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAg
IENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jbXlrYS0+YywgbV9jbXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+
YSk7CiAjZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NteWthLT5yZ2Jh
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jbXlrYS0+cmdiYSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29u
dGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215a2Et
PmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwogI2Vs
c2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY215a2EtPnJnYmEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jbXlrYS0+cmdi
YSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2
NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNjZmYwN2U1YmNjLi4zMzBjOTUwNGIwNzY5ZDk0
MDcyMzE3ZGRkMjk5M2QyOThiOWY5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE3Niw3ICsz
MTc2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJh
d0ltYWdlSW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGkKIAogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBidWYtPmNvbnRleHQo
KS5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICByZXR1cm4gYnVmLT5j
b3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3NDA4MDQw
NzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLjBlY2Y4M2Q5Njk3ZjY2ZDJhZmEzN2JmYmE3ZDFkOWE2
ODY0ZjdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmUKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7Ci0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgQ29sb3JTcGFjZVNSR0IpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgIGZvciAoYXV0byByZWN0IDogbV9yZWdp
b24tPnJlY3RzKCkpIHsKICAgICAKICAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhkaXJ0eVJl
Y3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEyMjk2NGE3OWVkYmJjNGViYTlk
OTcxM2FlYzUzODU3YjdmNjZlODMuLmI2ZjY5YjU5YTJjODBlMWFiYjM3Y2U1MWI5NzExNDYzMDY4
N2NiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM3MzYsNyArMzczNiw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tn
cm91bmRDb2xvcigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3NDksNyArMzc0OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJCiAg
ICAgaWYgKGJhci5pc0N1c3RvbVNjcm9sbGJhcigpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBJbnRSZWN0IHRvRmlsbCA9IGJhci5mcmFtZVJlY3QoKTsKICAgICAgICAgdG9G
aWxsLmludGVyc2VjdChyZWN0KTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAg
IFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKGNvbnRleHQsIGJhciwgcmVjdCk7CkBAIC00MDE3
LDcgKzQwMTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFJl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGZpbGxXaXRoUmVkKQotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCkp
OwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdTaXplQWRqdXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDI2Mzc1MTE0NDYwNzU4YWE2NzRh
OGIyMjIzN2NhNWFhMTNkYzllYmUuLjAzNDY4OWFjYjdmOTA5MWQ5MDM3MWQ3MzBkZjkxOWIxNzY0
ZGRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMzNyw3ICszMzcs
NyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1l
JiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VS
ZWN0cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAg
IC8vIEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1
KSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lk
dGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwpAQCAtMzU2
LDggKzM1Niw4IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJp
ZXMoRnJhbWUmIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyCiAgICAgICAgICAgICBpbnQgYm91
bmRhcnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOwogI2VuZGlmCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0xpbmUoSW50UG9pbnQoMCwgYm91bmRhcnlMaW5lWSksIEludFBvaW50KHBhZ2VXaWR0aCwgYm91
bmRhcnlMaW5lWSkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxNWEwYmIx
ZDBjMjRkZDMxZWNjMjkzZDQ3ODE2ZDI1YjRiY2FjODMyLi5kZGVkZTY1MWQ4ZDg0NTE3MWM2YjIw
MGU2ZGM2NjFhYjQ3OGY5OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0g
bV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQ
b2ludCA9IHBhcmVudCgpLT53aW5kb3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdD
UG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBpY29uR0NQb2lu
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgKaW5kZXggZTU0YzQ2YWExY2ZmMjY0NzQ5Yzc5ODQ0OGY1YjRjMDdjYzM5OWYzOS4uY2Fl
NTI5OTQzMmNmOGViODQ4YmMzMDAyZTdhNTU1ZTI5NDVkNTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0
UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9p
ZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQorICAgIHN0YXRpYyB2b2lkIGRlZmF1
bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDcyZjJh
NjM2ZGExOGMwMmI3YzZlY2E5NGY0MDY2NWE4MDBiMmRhN2YuLjQ2ZDllZTY3MmQzNzdmNTgyM2Rj
MTM3ZmYzMjNiNGEzNTlmY2Q1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSk7CiB9CiAKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVj
dChTY3JvbGxiYXImIHNjcm9sbGJhcikKQEAgLTI4MSwxMSArMjgxLDExIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAog
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKICAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgp
KQogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3Zlcmhh
bmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlKTsKICAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDM5MDYzNDJm
NTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQuLjE5MzRiMzU2NTMyNTFlMzgzZjQ4ODU5
YzExNzIwN2U2MmNmODk0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIC8vIERyYXcgYSBnZW5l
cmljIFdpcmVsZXNzIFBsYXliYWNrIGljb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5jcHAKaW5kZXggOGZjY2RjNWZmNTk4M2ExOGFkYzFkYTdlMTM2ODc4
ZTY4ZWQwNzU2OC4uMzE0ZWVkNTMxNTNhMTcwOTdmYTE5NmU5M2RjNzcwMjQ3MWY0ZWVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5h
bWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJh
Y2tTcmNTaXplKDMyLCAyNC4wMTYpOwogICAgIGZpdENvbnRleHRUb0JveChjb250ZXh0LCB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSwgcmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDAwNTMzYWYzOTdjNzg1OTVk
YmU0MjZiNzc5ODRiNjY0NTIxMmEzYmMuLjNlYTFiNWY4OTQ3OWMxNDQ4ZDIwZDhkNjI1NDllNjU3
MjMxYjhjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTYwNywxMyArNjA3LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0
QW5pbWF0aW9uKCkKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKLSAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKCFtX2NhY2hlZEltYWdlKSB7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LAogICAgICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2Ug
ZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhp
cyByZWxheW91dC4KICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAg
ICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgIH0K
IAogICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIG1fY2FjaGVkSW1h
Z2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDQwZmM3NGEzOTJkNGQ2Njg5
NzI5ODBiZmMxY2FlNDA5YmUwYzYzZWIuLjg5MWU4YzQyM2NjNTZiYWVkYzQ5Zjg5MzU5N2FkZjFj
YTg1NDJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlk
ZTsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKQEAgLTIw
MSwxMyArMjAxLDEzIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVy
YXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoV0lOR0RJKQogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpOwogI2VuZGlmCiAKICAgICBzaXplX3QgY3VycmVudEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IGQxZDRlNzI3NzAwZDllMjhjMGNmZGIzNTRlYmI5YzljYWY5ZDE4NzUuLmNm
MmY4MGJhOTQ3YjZlM2M1ZWFkNjRlYjg1ZjU3ZWQ0YjIyY2EyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGludCBkaWZmZXJl
bmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CiB1aW50MTZfdCBmYXN0RGl2
aWRlQnkyNTUodWludDE2X3QpOwogCiAjaWYgVVNFKENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiBp
bmxpbmUgUkdCQTo6UkdCQSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNDM2ODJiMGQ3
ZWU0NzI0OGUyNjRlNWU4YTZiMmQ0NWJlYTc4MjY4NC4uNTdlM2YxYTRmMTkwNmEyNjY5ZmZmZmRk
MjAxNTU5Y2IzZWI1Y2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIENvbXBvcwogCiAgICAgaWYgKHRhcmdldFNpemUgIT0gaW1h
Z2VTaXplKQogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh0YXJnZXRTaXplLndpZHRo
KCkgLyBpbWFnZVNpemUud2lkdGgoKSwgdGFyZ2V0U2l6ZS5oZWlnaHQoKSAvIGltYWdlU2l6ZS5o
ZWlnaHQoKSkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRQb2ludCgpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQo
KSk7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9
CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAgZHJh
d0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVm
ZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRl
eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9y
U3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaAppbmRleCA4MDI4MzQ0ODBiZWIzZjUwZTg4OGQwYTM5MzM4N2M1ZWI3YWZlZTg2
Li44YWViYmM1NzM3MTQ2MGNiN2RiMzM0MDg0ZjE0NGRkZGVkNDczMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAog
ICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0lt
YWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAppbmRleCBiMTAyM2IwYWQ5ZTUxMjg5YjUwYjUyYjU1YWZhODc0
ODA0MGRmOGMxLi4wYzAzOGQ5OTYyZjU0MWEwZTRlMjVhMGQ2ODJlZWFmMTNmYjM0YzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
QEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGUgPSAwOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGY1
Y2ViNzA1MzNhNjNlNThkNDdlOWEyYjlhNjVjYzdlNDUxY2EyN2UuLjM3MjY5MWE5YjJiNzVmZTkz
MWQ1MWZmY2RhMGIxYTQzOTAxOTRkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEdyYWRpZW50
SW1hZ2U6On5HcmFkaWVudEltYWdlKCkKIHsKIH0KIAotdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK3ZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50
IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXpl
IGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHMKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAK
ICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0
LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRl
cm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRl
eCAwNTgyOGY1YTg0OTY4OTk1NGRjYzM4YjY1NzQwMTc2YTU5YjM0ZDlkLi45MjUwOWZiMWVjNTJj
NGY3MzIxNDg3ZTQ4YjhlZmM2ODIzYzVlMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAg
ICAgR3JhZGllbnRJbWFnZShQYXNzUmVmUHRyPEdyYWRpZW50PiwgY29uc3QgRmxvYXRTaXplJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDIzMDlmNWRkNWRkNTZmNjhmMWUxZWU0NmU1Y2UxN2E0NzE2Njc3MWYu
LjM4ODg5YzQ3NDA1ZTMyNzExMmY0Zjk2MTk5Y2QzYWVmMzI4YThkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MTQyLDIwICsxNDIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFp
c2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29s
b3IsIENvbG9yU3BhY2UgZWxsaXBzZUNvbG9yU3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNhdmUoKTsKIAotICAgIHNldFN0cm9r
ZUNvbG9yKHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICBzZXRGaWxsQ29sb3Io
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHNldFN0cm9rZUNvbG9yKHNoYWRv
d0NvbG9yKTsKKyAgICBzZXRGaWxsQ29sb3Ioc2hhZG93Q29sb3IpOwogCiAgICAgZHJhd0VsbGlw
c2UoRmxvYXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIDEsIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogCi0gICAgc2V0U3Ryb2tlQ29sb3IoZWxsaXBzZUNvbG9yLCBlbGxpcHNlQ29s
b3JTcGFjZSk7Ci0gICAgc2V0RmlsbENvbG9yKGVsbGlwc2VDb2xvciwgZWxsaXBzZUNvbG9yU3Bh
Y2UpOworICAgIHNldFN0cm9rZUNvbG9yKGVsbGlwc2VDb2xvcik7CisgICAgc2V0RmlsbENvbG9y
KGVsbGlwc2VDb2xvcik7CiAKICAgICBkcmF3RWxsaXBzZShyZWN0KTsgIAogCkBAIC0xNzQsMzQg
KzE3NCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwot
ICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
bV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29s
b3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID0g
dHJ1ZTsKICNlbmRpZgotICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Is
IGNvbG9yU3BhY2UpOworICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQpAQCAtMjA5LDE2ICsy
MDYsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBtX3N0YXRl
LnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7
CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dD
b2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBjbGVhclBsYXRmb3JtU2hhZG93
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNv
bnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBm
bG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUu
c2hhZG93T2Zmc2V0OwogICAgIGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3Ig
PSBtX3N0YXRlLnNoYWRvd0NvbG9yOwotICAgIGNvbG9yU3BhY2UgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2U7CiAKICAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CkBAIC0yNDEsMTMgKzIzNiwx
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogfQog
I2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKLSAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQpAQCAtMzc4LDEyICsz
NzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMo
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0
aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkp
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qo
ZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
LnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
RmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5vcmlnaW5hbFNpemUoKSk7CkBA
IC0zOTEsMjkgKzM4NSwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdAogICAgIEZsb2F0UmVj
dCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAK
LSAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
RGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
LSAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJh
d1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCkBAIC00MjEsMzIgKzQxNSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAKICAgICBp
ZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRyYXdJbWFnZShp
bWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5kcmF3
VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5sb2dp
Y2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UubG9naWNhbFNpemUoKSks
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIEZsb2F0
UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNl
LCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxv
Z2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVy
cG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5k
cmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC01MDksMjkgKzUwMywy
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHBy
ZXZpb3VzT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7Ci0gICAgZmlsbFJlY3QocmVjdCwgY29sb3IsIHN0eWxl
Q29sb3JTcGFjZSk7CisgICAgZmlsbFJlY3QocmVjdCwgY29sb3IpOwogICAgIHNldENvbXBvc2l0
ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAg
IGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKLSAgICAgICAgcGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QocmVjdCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZpbGxSZWN0KHJlY3Qu
cmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9k
ZSk7CisgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29tcG9zaXRlT3BlcmF0
aW9uKCksIGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ2LDE1ICs1NDAs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIAogICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxl
ID0gZmlsbFJ1bGUoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAg
ICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKICAgICAK
ICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgIHNldEZpbGxDb2xvcihjb2xvciwg
Y29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBh
dGgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29s
b3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9s
ZEZpbGxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiOWRjMDIzMDlmNmMzNjYxZmIyNmQ2
NzJjMjVmM2UzMjY5MTk1NDM0Li5iZTIwYTczNzlmZDg0MjkwMDFjYzFjODY1OTM3YTMxNGZlZjYz
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHRfaAog
I2RlZmluZSBHcmFwaGljc0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCkBAIC0xNDgsMTAgKzE0Nyw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAg
IFdpbmRSdWxlIGZpbGxSdWxlIHsgUlVMRV9OT05aRVJPIH07CiAKLSAgICBDb2xvclNwYWNlIHN0
cm9rZUNvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0gICAgQ29sb3JTcGFjZSBm
aWxsQ29sb3JTcGFjZSB7IENvbG9yU3BhY2VEZXZpY2VSR0IgfTsKLSAgICBDb2xvclNwYWNlIHNo
YWRvd0NvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0KICAgICBmbG9hdCBhbHBo
YSB7IDEgfTsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBv
c2l0ZVNvdXJjZU92ZXIgfTsKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9y
bWFsIH07CkBAIC0yMTQsOSArMjA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Ryb2tlU3R5
bGUoU3Ryb2tlU3R5bGUpOwogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KLSAgICBDb2xvclNw
YWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9y
U3BhY2U7IH0KIAogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAg
ICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybi5nZXQoKTsgfQpAQCAtMjI3LDkgKzIyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVs
ZTsgfQogICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
UnVsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBDb2xvciYpOwogICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yU3BhY2U7IH0KIAogICAgIHZvaWQgc2V0RmlsbFBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQpAQCAtMjYxLDcgKzI1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICB2b2lkIGRyYXdQYXRoKGNv
bnN0IFBhdGgmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBjbGlw
VG9OYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgYnVmZmVyU2l6ZSk7CiAgICAgCkBAIC0yODgsNyArMjgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHZv
aWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKTsKICAgICB2b2lkIGRyYXdDb252ZXhQ
b2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFu
dGlhbGlhcyA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29u
c3QgUGF0aCYpOwpAQCAtMjk4LDI5ICsyOTEsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKTsK
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7Ci0gICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgdm9pZCBm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFn
ZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0g
ICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAor
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJ
bWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7IH0KQEAgLTM3NiwxMyArMzY5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgYm9vbCBpc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDAp
ICYmIHN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICAvLyBMZWdhY3kgc2hh
ZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRv
dy4KICAgICAvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLSAg
ICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0TGVnYWN5U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyU2hhZG93KCk7Ci0gICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxv
YXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGdldFNoYWRvdyhGbG9h
dFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CiAKICAgICBib29sIGhhc1Zpc2libGVTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0
YXRlLnNoYWRvd0NvbG9yLmFscGhhKCk7IH0KICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OyB9CkBAIC00NjMsOCArNDU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZyYW1lQ29udHJv
bChjb25zdCBJbnRSZWN0JiByZWN0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGF0ZSk7CiAg
ICAgdm9pZCBkcmF3Rm9jdXNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpOwogICAgIHZvaWQgcGFp
bnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwotICAgIHZv
aWQgZHJhd0JpdG1hcChTaGFyZWRCaXRtYXAqLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpOwotICAgIHZvaWQgZHJh
d0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0bWFwKiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdElu
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFNpemUmIG9yaWdTb3VyY2VT
aXplKTsKKyAgICB2b2lkIGRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiwgY29uc3QgSW50UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CisgICAgdm9pZCBkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRtYXAqLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6ZSk7CiAgICAg
dm9pZCBkcmF3SWNvbihISUNPTiBpY29uLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBVSU5UIGZs
YWdzKTsKICAgICB2b2lkIGRyYXdSb3VuZENvcm5lcihib29sIG5ld0NsaXAsIFJFQ1QgY2xpcFJl
Y3QsIFJFQ1QgcmVjdFdpbiwgSERDIGRjLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2Vsc2UK
QEAgLTUyOSwxNyArNTIyLDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBsYXRmb3JtVGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKIAotICAgIHZvaWQgc2V0UGxhdGZv
cm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1TdHJv
a2VTdHlsZShTdHJva2VTdHlsZSk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVz
cyhmbG9hdCk7CiAKLSAgICB2b2lkIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYp
OwogCiAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sKTsKICAgICB2b2lk
IHNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9y
bUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCi0gICAg
dm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIGNsZWFyUGxh
dGZvcm1TaGFkb3coKTsKIAogICAgIHZvaWQgc2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CkBAIC01
NTUsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wm
IHNob3VsZEFudGlhbGlhcywgQ29sb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRlM2Q2MTUyZjY1OGFhMDkwOWVlNzBiMjY5NzAzYmM1Mjhl
NjBjZDMuLjgxZmJiMGYxZTdhY2JmMmYwOGVlZTc1NDI4YjY1OTMxMTdhNmIwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc5LDIxICs3OSwyMSBA
QCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsK
ICAgICBpZiAoIWNvbG9yLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb21w
b3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY3R4dC5jb21wb3NpdGVPcGVyYXRpb24o
KTsKICAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0
LmZpbGxSZWN0KGRzdFJlY3QsIGNvbG9yLCBzdHlsZUNvbG9yU3BhY2UpOworICAgIGN0eHQuZmls
bFJlY3QoZHN0UmVjdCwgY29sb3IpOwogICAgIGN0eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xp
ZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFko
KGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgp
IC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbAogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0
KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9u
KG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0
aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RS
ZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRp
b24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNj
YWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICAgICAgZHJhdyhjdHh0LCB0b1JlY3QsIGZy
b21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnRUaWxlUmVjdC5zaGlmdFhFZGdlVG8ob25lVGlsZVJlY3QueCgp
KTsKICAgICAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbAogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFu
c2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwog
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsK
LSAgICBkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qs
IGJsZW5kTW9kZSk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxl
bmRNb2RlKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGFydEFuaW1hdGlvbihEb05vdENh
dGNoVXApOwpAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKIAog
Ly8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5j
ZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCiB2b2lkIElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgc29saWRDb2xv
cigpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0
eHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwgb3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvCiAgICAgICAg
IHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAog
ICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0
LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkc3RS
ZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
YXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wLCBkc3RSZWN0KTsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggYTViMWU0YWUzZGNmZTk3NjE2MzBhMzBhNTY0NTI4OGU2
ZDE0NjVjYS4uNDczNzliM2U5MmU5ZTY3NWI3NTkyMzUyMDg1NTZjMzAwYjk4N2RhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
ZGVmaW5lIEltYWdlX2gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTE1NCw3ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1h
Z2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlV2l0aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBvcmlnaW5hbEltYWdlLCBDb2xvclNwYWNl
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTcxLDcgKzE2OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKICAgICBGbG9hdFJlY3QgYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1w
bGluZyhjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNjYWxlZFNpemUp
IGNvbnN0OwpAQCAtMTg2LDE2ICsxODQsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElt
YWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgdm9pZCBmaWxsV2l0
aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAKLSAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQg
Zm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0K
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgLCBCbGVu
ZE1vZGUpOwotICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pID0gMDsKKyAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUs
IFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5n
IHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCmluZGV4IDM2NjAzYjc5ZjhkMGE3ZTkyNzA3YzI1YzQ2ZDI0ZmQzZDllNTA1
MzAuLjM4M2I1NDQ0NjVkZTJmNDQ5ZmEwOGM5MjZiMjE5OTc0MzRjNjQ3NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtNjksNyArNjks
NyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VC
dWZmZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJl
dHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCKQorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQiAvKiBGSVhNRSBzUkdC
ICovKQogICAgIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIHN1Y2Nlc3MpKTsKQEAgLTEz
NCw4ICsxMzQsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwpOworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggZDBiYWQzMGU5MjcyZGZjODFhYzQ3NmYz
Njg1MTY2MGIzYzBkZjI4NS4uYTBmNjQzNGU4OWE4ODhjYjY5NzAyNmM1NmM4OGM4ZTc3MzY2ZTAy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC00MCw3ICs0MCw3IEBAIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBj
b25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7
CiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
CiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwg
dHJ1ZSk7CkBAIC03MiwxNCArNzIsMTMgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZm
ZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1v
ZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5k
TW9kZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFS
QU0oc3JjUmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIFVO
VVNFRF9QQVJBTShwaGFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwotICAgIFVOVVNF
RF9QQVJBTShzdHlsZUNvbG9yU3BhY2UpOwogICAgIFVOVVNFRF9QQVJBTShkc3RSZWN0KTsKICAg
ICBVTlVTRURfUEFSQU0oY29tcG9zaXRlT3ApOwogICAgIFVOVVNFRF9QQVJBTShibGVuZE1vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA2ZjRlY2Q5YjcyYjZjM2YzNzc3NWVjM2I5MWRl
MzFjMGNmYjdhNWNiLi5kOWYwYWMxZjMxNmM4NzYzZmFiNzc4MzRkZTEyOTIyOTZiM2U4YTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9h
dFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcAppbmRleCA4NWFlZWVmZjcyZWUyNzBlNzYwMDgwZGM2MGVlYjJiMDVjODE3NGEzLi44
YWNiZGEyODdhYzIzYWRiOGZkNTFkYmI5ZTViMzM1NWQ3MTMwZWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtODUsMTUgKzg1LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAgICAgfQog
Ci0gICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29u
c3QgRmxvYXRTaXplJiBsYXllclNpemUpCisgICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNv
bnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKLSAgICAgICAgaWYgKCFtX2xhc3RXYXNJ
bnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYm
IG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RTaGFkb3dSZWN0ID09IHNo
YWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9PSBs
YXllclNpemUpCisgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09
IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RTaGFkb3dSZWN0ID09IHNo
YWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9PSBs
YXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9sYXN0V2Fz
SW5zZXQgPSBmYWxzZTsKICAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVzOwogICAgICAgICBt
X2xhc3RDb2xvciA9IGNvbG9yOwotICAgICAgICBtX2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFj
ZTsKICAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9IHNoYWRvd1JlY3Q7CiAgICAgICAgIG1fbGFz
dFJhZGlpID0gcmFkaWk7CiAgICAgICAgIG1fbGFzdExheWVyU2l6ZSA9IGxheWVyU2l6ZTsKQEAg
LTEwMSwxNiArMTAwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJh
ZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKKyAgICBib29sIHNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7Ci0gICAgICAgIGlmIChtX2xhc3RX
YXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9y
ICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RJbnNldEJvdW5kcyA9
PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1f
bGFzdFJhZGlpKQorICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09
IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBi
b3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFz
dFJhZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fbGFzdFdhc0lu
c2V0ID0gdHJ1ZTsKICAgICAgICAgbV9sYXN0SW5zZXRCb3VuZHMgPSBib3VuZHM7CiAgICAgICAg
IG1fbGFzdFJhZGl1cyA9IHJhZGl1czsKICAgICAgICAgbV9sYXN0Q29sb3IgPSBjb2xvcjsKLSAg
ICAgICAgbV9sYXN0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgICAgIG1fbGFzdFNoYWRv
d1JlY3QgPSBzaGFkb3dSZWN0OwogICAgICAgICBtX2xhc3RSYWRpaSA9IHJhZGlpOwogCkBAIC0x
NDYsNyArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9sYXN0U2hhZG93UmVjdDsK
ICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKICAgICBDb2xvciBtX2xh
c3RDb2xvcjsKLSAgICBDb2xvclNwYWNlIG1fbGFzdENvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXpl
IG1fbGFzdFJhZGl1czsKICAgICBib29sIG1fbGFzdFdhc0luc2V0OwogICAgIEZsb2F0U2l6ZSBt
X2xhc3RMYXllclNpemU7CkBAIC0xNzEsOSArMTY4LDggQEAgc3RhdGljIGZsb2F0IHJhZGl1c1Rv
TGVnYWN5UmFkaXVzKGZsb2F0IHJhZGl1cykKIH0KICNlbmRpZgogCi1TaGFkb3dCbHVyOjpTaGFk
b3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitTaGFkb3dCbHVyOjpT
aGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNl
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIDogbV9jb2xvcihjb2xvcikKLSAgICAsIG1fY29s
b3JTcGFjZShjb2xvclNwYWNlKQogICAgICwgbV9ibHVyUmFkaXVzKHJhZGl1cykKICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKICAgICAsIG1fbGF5ZXJJbWFnZSgwKQpAQCAtMTg0LDcgKzE4MCw2IEBA
IFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDCiAKIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIDogbV9jb2xvcihzdGF0ZS5zaGFkb3dD
b2xvcikKLSAgICAsIG1fY29sb3JTcGFjZShzdGF0ZS5zaGFkb3dDb2xvclNwYWNlKQogICAgICwg
bV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0JsdXIsIHN0YXRlLnNoYWRvd0JsdXIpCiAgICAgLCBt
X29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQpCiAgICAgLCBtX2xheWVySW1hZ2UoMCkKQEAgLTIw
NiwxMiArMjAxLDExIEBAIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoKQogewogfQogCi12b2lkIFNo
YWRvd0JsdXI6OnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
RmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCit2b2lkIFNoYWRvd0JsdXI6OnNldFNoYWRvd1Zh
bHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNv
bnN0IENvbG9yJiBjb2xvciwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKQogewogICAgIG1fYmx1clJh
ZGl1cyA9IHJhZGl1czsKICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICBtX2NvbG9yID0gY29s
b3I7Ci0gICAgbV9jb2xvclNwYWNlID0gY29sb3JTcGFjZTsKICAgICBtX3NoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zID0gaWdub3JlVHJhbnNmb3JtczsKIAogICAgIHVwZGF0ZVNoYWRvd0JsdXJWYWx1
ZXMoKTsKQEAgLTQ3Myw3ICs0NjcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5jbGlwKEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOwogICAgIH0K
ICAgICBncmFwaGljc0NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgRmxv
YXRSZWN0KG1fbGF5ZXJPcmlnaW4sIGJ1ZmZlclNpemUpKTsKLSAgICBncmFwaGljc0NvbnRleHQu
c2V0RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LnNldEZpbGxDb2xvcihtX2NvbG9yKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRv
dygpOwogICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QobV9sYXllck9yaWdp
biwgbV9zb3VyY2VSZWN0LnNpemUoKSkpOwpAQCAtNTcyLDcgKzU2Niw3IEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBjCiAgICAgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QubW92ZShtX2xheWVy
Q29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNo
IGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAg
IGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVk
U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1f
bGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmds
ZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywg
YnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QsIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVy
U2l6ZSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQm
IHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwpAQCAtNTgwLDcg
KzU3NCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgICAgIC8vIEFkZCBhIHBpeGVs
IHRvIGF2b2lkIGxhdGVyIGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgogICAgICAgICBzaGFk
b3dDb250ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgbV9sYXllclNpemUud2lkdGgoKSAr
IDEsIG1fbGF5ZXJTaXplLmhlaWdodCgpICsgMSkpOwogICAgICAgICBzaGFkb3dDb250ZXh0LnRy
YW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgaWYg
KHNoYWRvd2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgc2hhZG93Q29udGV4
dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CkBAIC02MTAs
NyArNjA0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LAogICAgIGJ1ZmZlclJlbGF0aXZlSG9s
ZVJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9ubHkgcmVk
cmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1h
dGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2lu
Z2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVs
YXRpdmVIb2xlUmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQg
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyht
X2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxh
dGl2ZUhvbGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+
Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
c2hhZG93Q29udGV4dCk7CkBAIC02MjcsNyArNjIxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LAogICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChob2xlUmVjdCk7CiAKICAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFkb3dD
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAg
ICBzaGFkb3dDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogCiAgICAgICAgIGJsdXJTaGFkb3dCdWZm
ZXIoZXhwYW5kZWRJbnRTaXplKG1fbGF5ZXJTaXplKSk7CkBAIC02ODEsMTQgKzY3NSwxNCBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZUhvbGUgPSBGbG9h
dFJlY3QoZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53
aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIg
KiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRj
aCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAg
ICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hl
ZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0
ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xlLCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBib29s
IHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0
U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVCb3VuZHMsIHRlbXBs
YXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAg
ICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgogICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogICAgICAgICBzaGFkb3dDb250ZXh0LmNsZWFyUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7
CiAgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
KTsKIAogICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgIHBhdGguYWRkUmVjdCh0ZW1wbGF0ZUJv
dW5kcyk7CkBAIC03MjQsNyArNzE4LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgZmlsbFN0YXRlU2F2ZXIoZ3JhcGhp
Y3NDb250ZXh0KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZF
Tk9ERCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9j
b2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9y
KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5maWxsUGF0aChleHRlcmlvclBhdGgpOwogICAgIH0KQEAgLTc0NSwxNCArNzM5
LDE0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlU2hh
ZG93ID0gRmxvYXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhlaWdodCgpLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVp
Z2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4g
dGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3Vy
IG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBzY3JhdGNoQnVmZmVyLnNldENhY2hlZFNo
YWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVT
aGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CisgICAgYm9vbCByZWRy
YXdOZWVkZWQgPSBzY3JhdGNoQnVmZmVyLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRp
dXMsIG1fY29sb3IsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CiAKICAgICAgICAgc2hh
ZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgp
LCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwpAQCAtNzk4LDE0ICs3OTIsMTQgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmUKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0ludGVyaW9yKHNoYWRv
d0JvdW5kcy54KCkgKyBsZWZ0U2xpY2UsIHNoYWRvd0JvdW5kcy55KCkgKyB0b3BTbGljZSwgY2Vu
dGVyV2lkdGgsIGNlbnRlckhlaWdodCk7CiAgICAgICAgIGlmICghc2hhZG93SW50ZXJpb3IuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xl
YXJTaGFkb3coKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJ
bnRlcmlvcik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKLSAgICBncmFwaGljc0NvbnRleHQuc2V0
RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
IAogICAgIC8vIE5vdGUgdGhhdCBkcmF3aW5nIHRoZSBJbWFnZUJ1ZmZlciBpcyBmYXN0ZXIgdGhh
biBjcmVhdGluZyBhIEltYWdlIGFuZCBkcmF3aW5nIHRoYXQsCkBAIC04MTYsNDYgKzgxMCw0NiBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZQogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVj
dCB0aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwg
dG9wU2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0
LngoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BT
bGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdl
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNz
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSBzaWRlLgogICAgIHRpbGVSZWN0LnNldFkodGVt
cGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UpOwogICAgIHRpbGVSZWN0LnNldEhlaWdo
dChib3R0b21TbGljZSk7CiAgICAgZGVzdFJlY3Quc2V0WShjZW50ZXJSZWN0Lm1heFkoKSk7CiAg
ICAgZGVzdFJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9s
YXllckltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gTGVmdCBzaWRlLgogICAg
IHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHRlbXBsYXRlU2lk
ZUxlbmd0aCk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0
U2xpY2UsIGNlbnRlclJlY3QueSgpLCBsZWZ0U2xpY2UsIGNlbnRlclJlY3QuaGVpZ2h0KCkpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogCiAgICAgLy8gVG9wIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRS
ZWN0KDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0
KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBs
ZWZ0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0
UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gVG9wIHJpZ2h0IGNvcm5lci4KICAgICB0aWxlUmVj
dCA9IEZsb2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0
U2xpY2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lm1h
eFgoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgcmlnaHRTbGljZSwgdG9wU2xpY2UpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRlbXBs
YXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90
dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0
UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2UsIGJv
dHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogCiAgICAgLy8gQm90dG9tIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxv
YXRSZWN0KDAsIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAt
IGxlZnRTbGljZSwgY2VudGVyUmVjdC5tYXhZKCksIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiB9CiAK
IApAQCAtODc4LDcgKzg3Miw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93
QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBHcmFwaGljc0NvbnRleHQm
IHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CiAgICAgc2hhZG93Q29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgc2hhZG93
Q29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgc2hhZG93Q29udGV4dC5maWxsUmVj
dChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWln
aHQoKSkpOwogfQogCkBAIC04OTQsNyArODg4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBTaGFkb3dC
bHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmwK
ICAgICAvLyBXZSByZXNldCB0aGUgc2NyYXRjaCBidWZmZXIgdmFsdWVzIGhlcmUsIGJlY2F1c2Ug
dGhlIGJ1ZmZlciB3aWxsIG5vIGxvbmdlciBjb250YWluCiAgICAgLy8gZGF0YSBmcm9tIGFueSBw
cmV2aW91cyByZWN0YW5nbGUgb3IgaW5zZXQgc2hhZG93cyBkcmF3biB2aWEgdGhlIHRpbGluZyBw
YXRoLgogICAgIGF1dG8mIHNjcmF0Y2hCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KTsKLSAgICBzY3JhdGNoQnVmZmVyLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUoKSwg
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KCksIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBzY3JhdGNoQnVmZmVyLnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUoKSwgQ29sb3I6OmJsYWNrLCBJbnRSZWN0KCksIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKICAgICBtX2xheWVySW1hZ2UgPSBz
Y3JhdGNoQnVmZmVyLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAKICAgICBH
cmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsK
QEAgLTkxNSw3ICs5MDksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmVuZFNoYWRvd0xheWVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZShjb250ZXh0KTsKIAogICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9h
dFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5jb21wb3NpdGVPcGVyYXRp
b24oKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgRmxvYXRS
ZWN0KHJvdW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBtX2xheWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9u
KCkpOwogCiAgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpz
aW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDIwNTBhYjljZGZhZjM5Zjdj
NjYwYTE5N2ZhNTJlYmIwYjUyNDljNWQuLmVkMTY2Y2ZjNDJjZDA0YzkyNzA0M2NhZmEyYzVhN2Yz
NWRlNGRmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmgKQEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEJsdXJTaGFkb3cKICAg
ICB9OwogCi0gICAgU2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgU2hhZG93Qmx1
cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0
IENvbG9yJik7CiAgICAgU2hhZG93Qmx1cihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwog
ICAgIFNoYWRvd0JsdXIoKTsKIAotICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIGJvb2wg
aWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFNoYWRvd1ZhbHVlcyhjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmICwgY29uc3QgQ29sb3ImLCBib29sIGlnbm9y
ZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKGJvb2wgaWdub3JlVHJhbnNmb3JtcykgeyBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0g
aWdub3JlVHJhbnNmb3JtczsgfQogICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBj
b25zdCB7IHJldHVybiBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CkBAIC0xMDQsNyArMTA0
LDYgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dUeXBlIG1fdHlwZTsKIAogICAgIENvbG9yIG1fY29s
b3I7Ci0gICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXplIG1fYmx1clJh
ZGl1czsKICAgICBGbG9hdFNpemUgbV9vZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEuLjU1YjNkNDdlNDY2
MWI5ZWY1YjM2OTdjNTE5MzY2MTg4YWRjYTEwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlQVZQbGF5ZXJMYXllcigpCiAKICAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdE5TKFth
bGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbbV92aWRlb0xheWVyIHNl
dFBsYXllcjptX2F2UGxheWVyLmdldCgpXTsKLSAgICBbbV92aWRlb0xheWVyIHNldEJhY2tncm91
bmRDb2xvcjpjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQild
OworICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoQ29s
b3I6OmJsYWNrKV07CiAjaWZuZGVmIE5ERUJVRwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0TmFtZTpA
Ik1lZGlhUGxheWVyUHJpdmF0ZSBBVlBsYXllckxheWVyIl07CiAjZW5kaWYKQEAgLTIzNDcsNyAr
MjM0Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRX
aXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7Cisg
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8vIElmIHdl
IGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3QgZHVlIHRv
IG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRlbyBmcmFt
ZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKaW5kZXggODA3ZWUxMzk1MmYxZDNjYWNiMGY1MGFmOTUxNDYwNmE4NTExYzg2OS4uNzNiY2M1
ZGYxNTUyN2UxMjIyOTc1MzliZmYxMTM3NTVjMzcwODAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC05
ODYsOCArOTg2LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCiAgICAgICAgIGlmICghbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpbWFnZSBjaGFuZ2VkOyB3ZSBoYXZl
IHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2FsbCB0bwotICAgICAgICAvLyBDR0ltYWdlQ3JlYXRl
Q29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cgY2FuIGNyZWF0ZSBhIG5ldyBpbWFnZSBldmVyeSB0
aW1lLgogICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUdyaWQuY3BwCmluZGV4IGYxODA5ZmNmMmRkYmUxMDUzMGE4YThlZGY5MDhkZTRkOTEyNmIzNWYu
LjY4Yjk1NjI4NDA1YWUwZTIxNmUzNDE0ZjNhMThiOTE3NjRiNDRmYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTY3MCw3ICs2
NzAsNyBAQCB2b2lkIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRm
b3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBHcgogCiAgICAgaW50IHJlcGFpbnRDb3VudCA9
IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChwbGF0Zm9ybUNBTGF5ZXIpOwog
ICAgIGlmIChtX2NvbnRyb2xsZXIucm9vdExheWVyKCkub3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
U2hvd1JlcGFpbnRDb3VudGVyKDApKQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBh
aW50SW5kaWNhdG9yKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIHBsYXRmb3JtQ0FMYXllciwg
cmVwYWludENvdW50LCBjYWNoZWRDR0NvbG9yKG1fY29udHJvbGxlci50aWxlRGVidWdCb3JkZXJD
b2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6
ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1D
QUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3IobV9jb250cm9sbGVyLnRpbGVEZWJ1
Z0JvcmRlckNvbG9yKCkpKTsKIAogICAgIGlmIChtX2NvbnRyb2xsZXIuc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUGFydChw
bGF0Zm9ybUNBTGF5ZXItPnBvc2l0aW9uKCkueCgpLCBwbGF0Zm9ybUNBTGF5ZXItPnBvc2l0aW9u
KCkueSgpLCBwbGF0Zm9ybUNBTGF5ZXItPmJvdW5kcygpLnNpemUoKS53aWR0aCgpLCBwbGF0Zm9y
bUNBTGF5ZXItPmJvdW5kcygpLnNpemUoKS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbkludGVybmFsLmNwcAppbmRleCA3MjEzYjViNTcxMGFjZjYxZWUxMTg3ZjNiOTQ1
N2FhNDFhMmY2NTNhLi40M2NkOWU0N2RkNTkzZjQ5NWRlZTk3YTVhNTI1MDQwNWU1YTJmMGE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpkcmF3UmVwYWludENvdW50
ZXJzKENBQ0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbgogICAgIGlmIChib3JkZXJXaWR0aCA+IDAp
CiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGNhTGF5
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihD
b2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYmFja2dyb3Vu
ZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcigyNTUsIDAsIDApKTsKIAogICAgIFBsYXRmb3Jt
Q0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dCwgb3duZXIoKSwgZHJhd0NvdW50
LCBiYWNrZ3JvdW5kQ29sb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBmNWUzZGUw
ZTUzNGIwMTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0Li43NTViNjNiZDlhOTk3NTk2MzlkODMx
YWYzMjdjMGMwNGVlNzRlZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwog
fQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKICAgICBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCiB7CiAgICAgaWYg
KCFkc3Qud2lkdGgoKSB8fCAhZHN0LmhlaWdodCgpIHx8ICFzcmMud2lkdGgoKSB8fCAhc3JjLmhl
aWdodCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGE0MmI1NGQzODJjNDky
YjUwNDg2MTkzMzAwMGQzZmQyMTM0ZDg4NGIuLmJmNmFmYTI0YWUwOTZlZGIzYWU3YmJkMWM1MGYx
YzlkNjRjYjc3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQ1MSw3ICs0
NTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRoKCp0aGlzKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTcyNCwxMyArNzI0LDEzIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBt
X2RhdGEtPnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYpCiB7CiAgICAgLy8gQ2Fp
cm8gY29udGV4dHMgY2FuJ3QgaG9sZCBzZXBhcmF0ZSBmaWxsIGFuZCBzdHJva2UgY29sb3JzCiAg
ICAgLy8gc28gd2Ugc2V0IHRoZW0ganVzdCBiZWZvcmUgd2UgYWN0dWFsbHkgZmlsbCBvciBzdHJv
a2UKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29u
c3QgQ29sb3ImLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3Jt
U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKQogewogICAgIC8vIENhaXJvIGNvbnRleHRzIGNhbid0
IGhvbGQgc2VwYXJhdGUgZmlsbCBhbmQgc3Ryb2tlIGNvbG9ycwogICAgIC8vIHNvIHdlIHNldCB0
aGVtIGp1c3QgYmVmb3JlIHdlIGFjdHVhbGx5IGZpbGwgb3Igc3Ryb2tlCkBAIC03OTgsNyArNzk4
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKICAgICBtX2RhdGEtPnNldENUTSh0cmFuc2Zvcm0pOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRTaXplIGNvbnN0JiBzaXplLCBm
bG9hdCwgQ29sb3IgY29uc3QmLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0
JikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0x
MDE5LDcgKzEwMTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9h
dFJlY3QmIHIpCiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
cm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDU5
LDcgKzEwNTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIGNhaXJvX3Jlc3RvcmUo
Y3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UubmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3Mg
dG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cAppbmRleCAzZTUyMTNmODZkYTY1MTJkZTYxZGZhNWJmOWY2NWFlNzFjODJlM2RmLi4yNTZkMWNj
ODMxM2JhOGIwNzE4N2M3NTBiMWM5NjQ2NzJkZjhlMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cApAQCAtMTY1LDE5ICsxNjUsMTkgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbWFza1JlY3QpIGNvbnMKICAgICBjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0
KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUpCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNv
bnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdT
dG9yZTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAg
ICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRl
c3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgQmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4o
Y29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxl
Q29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0KTsKKyAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNv
bnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVz
dFJlY3QpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3Bh
Y2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCBlNGM2M2Ez
NDZlMjJkZmIzNGVjZWJiNzcyNjNiNzRlMzc3N2IwZTk0Li4xMWU1N2I0YmQxYzA4NWVjNDE4NzA5
ZGU0N2VmYTgyYjkyNzdhMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQor
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQogewotICAgIGNvbnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0
LCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUp
OwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
aWREcmF3KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCA1OWE4Y2RiZGU2ZGE1MjllYzUxMWNjYzIyMGM0
NzI4MDgxMDMyYmNjLi5iZjZmMjg2OTM2ZmZhY2ExNDU1ZjRhNTg2MGU3MTBhNjM5ZDVjMDUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFn
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRt
YXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkKICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRp
b24oRG9Ob3RDYXRjaFVwKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xv
cigpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRD
b2xvcigpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgZmlsbFdpdGhT
b2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xpZENvbG9yKCksIGNvbXBvc2l0ZU9wKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkg
PT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVP
cmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwg
c2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAg
IGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
Y2FsZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAg
ICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXco
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCmluZGV4IDhhN2ZlYmVkNTQwODM3ZWQxMjMwMGQ3YjI4YjM3YmFiNzg2ZmZmMzUuLjlhNDhh
MzMxZGYzMDgzNzBhM2NlMzM1ODZhYzVlMjVmYzhhZGRlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC05OSwyNiArOTksMjYgQEAg
Q29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IpCiAgICAgbV92YWxpZCA9IHRydWU7CiB9CiAK
LXN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQorc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogewogICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKICAgICBjb2xvci5nZXRS
R0JBKGNvbXBvbmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVu
dHNbM10pOwotICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGNhY2hlZENHQ29sb3JTcGFjZShjb2xv
clNwYWNlKSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2VSZWYoKSwgY29tcG9uZW50cyk7CiB9CiAKLXRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JT
cGFjZT4gc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CitDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHN3
aXRjaCAoY29sb3IucmdiKCkpIHsKICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDogewotICAg
ICAgICBzdGF0aWMgQ0dDb2xvclJlZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihj
b2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50
Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50
Q0dDb2xvcjsKICAgICB9CiAgICAgY2FzZSBDb2xvcjo6YmxhY2s6IHsKLSAgICAgICAgc3RhdGlj
IENHQ29sb3JSZWYgYmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2Up
OworICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihj
b2xvcik7CiAgICAgICAgIHJldHVybiBibGFja0NHQ29sb3I7CiAgICAgfQogICAgIGNhc2UgQ29s
b3I6OndoaXRlOiB7Ci0gICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxl
YWtDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgc3RhdGljIENHQ29sb3JSZWYg
d2hpdGVDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICByZXR1cm4gd2hpdGVD
R0NvbG9yOwogICAgIH0KICAgICB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdGVtcGxhdGU8Q29sb3JT
cGFjZSBjb2xvclNwYWNlPiBzdGF0aWMgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENv
bG9yJiBjb2wKICAgICAgICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9yc1tpXS5nZXQoKTsKICAg
ICB9CiAKLSAgICBDR0NvbG9yUmVmIG5ld0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29s
b3JTcGFjZSk7CisgICAgQ0dDb2xvclJlZiBuZXdDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3Ip
OwogCiAgICAgc3RhdGljIHNpemVfdCBjdXJzb3I7CiAgICAgY2FjaGVkUkdCQVZhbHVlc1tjdXJz
b3JdID0gY29sb3IucmdiKCk7CkBAIC0xNDUsMjAgKzE0NSw2IEBAIHRlbXBsYXRlPENvbG9yU3Bh
Y2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xv
ciYgY29sCiAgICAgcmV0dXJuIG5ld0NHQ29sb3I7CiB9CiAKLUNHQ29sb3JSZWYgY2FjaGVkQ0dD
b2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBz
d2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAg
ICAgIHJldHVybiBjYWNoZWRDR0NvbG9yPENvbG9yU3BhY2VEZXZpY2VSR0I+KGNvbG9yKTsKLSAg
ICBjYXNlIENvbG9yU3BhY2VTUkdCOgotICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xv
clNwYWNlU1JHQj4oY29sb3IpOwotICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAg
ICAgcmV0dXJuIGNhY2hlZENHQ29sb3I8Q29sb3JTcGFjZUxpbmVhclJHQj4oY29sb3IpOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihj
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDRykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggOTRhYWFhOTMwNWIzZTBkNDZiZWI1OWQ4MjE2OTgx
OGU2MTA0MmE3My4uMzdhNzI4OTkwOTM4MTdjYjg5YTMxMWUwYzA5N2MzZmU0MmIwYjM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgY2Fu
dmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29w
eSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXpl
LCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3Np
dGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmlu
ZGV4IDM2MGUzODdjYzgzMWE2MzA3NzY0MzNiZjYxNWNjOGJjYzgzZThkNWYuLjJhYzk0YjJkNTEy
N2ZkMDhlZjVmZmMyOWRiMTMxNzAwZmNjYjU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTYz
LDE2ICs2MywxNyBAQCB1c2luZyBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2
b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29s
b3IpCiB7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hl
ZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JX
aXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvcikpOwogfQogCi1zdGF0aWMgdm9p
ZCBzZXRDR1N0cm9rZUNvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENHU3Ryb2tlQ29sb3Io
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBDR0NvbnRl
eHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBj
b2xvclNwYWNlKSk7CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4
dCwgY2FjaGVkQ0dDb2xvcihjb2xvcikpOwogfQogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
cmVtb3ZlZCBzb29uLgogQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQog
ewogICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlU3BhY2UgPSBDR0NvbG9yU3BhY2VD
cmVhdGVEZXZpY2VSR0IoKTsKQEAgLTgxLDkgKzgyLDYgQEAgQ0dDb2xvclNwYWNlUmVmIGRldmlj
ZVJHQkNvbG9yU3BhY2VSZWYoKQogCiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYo
KQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gZGV2aWNlUkdCQ29sb3JTcGFjZVJl
ZigpOwotI2Vsc2UKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKICNpZiBQTEFURk9STShX
SU4pCiAgICAgLy8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBr
Q0dDb2xvclNwYWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9pZHMKQEAgLTkzLDcgKzkxLDYgQEAgQ0dD
b2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCkKICAgICAgICAgc1JHQlNwYWNlID0gZGV2
aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICAgICByZXR1
cm4gc1JHQlNwYWNlOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIH0KIAogI2lmIFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oSU9TKQpAQCAtMTI3LDggKzEyNCw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybUluaXQoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKICAgICBzZXRQYWlu
dGluZ0Rpc2FibGVkKCFjZ0NvbnRleHQpOwogICAgIGlmIChjZ0NvbnRleHQpIHsKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgot
ICAgICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2Uo
KSk7Ci0gICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tl
Q29sb3JTcGFjZSgpKTsKKyAgICAgICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCkp
OworICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOwogICAgICAg
ICBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAg
IG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNvbnZlcnRJbnRlcnBvbGF0aW9u
UXVhbGl0eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQo
KSkpOwogICAgIH0KQEAgLTE2Myw3ICsxNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVz
dG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1L
bm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1h
Z2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CiAKQEAgLTI1NCw5ICsyNTEsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250
ZXh0LCAwLCBhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNU
TShjb250ZXh0LCAxLCAtMSk7CiAKLSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAg
IGltYWdlID0gSW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29s
b3JTcGFjZSk7Ci0KICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogfQpAQCAtMjgwLDcg
KzI3NCw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykK
ICAgICB9KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQogewogICAgIGlmICghcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzIwLDkgKzMxNCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAg
ICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRp
bGVJbWFnZSwgdGlsZVJlY3QpKTsKICAgICB9CiAKLSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNw
YWNlLgotICAgIHN1YkltYWdlID0gSW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2Uoc3ViSW1hZ2Uu
Z2V0KCksIHN0eWxlQ29sb3JTcGFjZSk7Ci0KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdh
cHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdl
IG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmlj
aWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0
aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFu
c2Zvcm0uYSgpKTsKQEAgLTM1MCw3ICszNDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAog
ICAgICAgICBpZiAoIXBhdHRlcm4pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVQYXR0ZXJuKDApKTsKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4g
cGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKG51bGxwdHIp
KTsKIAogICAgICAgICBDR0Zsb2F0IGFscGhhID0gMTsKICAgICAgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNw
YWNlLmdldCgpLCBwYXR0ZXJuLmdldCgpLCAmYWxwaGEpKTsKQEAgLTM5NCw3ICszODUsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9h
dCBib3JkZXJUaGlja25lc3MpCiAgICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3Rz
IHRvIHNpbXVsYXRlIHRoZSBzdHJva2Ugb2YgYSBib3JkZXIuCiAgICAgICAgIENvbG9yIG9sZEZp
bGxDb2xvciA9IGZpbGxDb2xvcigpOwogICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9r
ZUNvbG9yKCkpCi0gICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xv
cigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29u
dGV4dCwgc3Ryb2tlQ29sb3IoKSk7CiAgICAgICAgIENHUmVjdCByZWN0c1s0XSA9IHsKICAgICAg
ICAgICAgIEZsb2F0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgYm9yZGVy
VGhpY2tuZXNzKSwKICAgICAgICAgICAgIEZsb2F0UmVjdChyZWN0LngoKSwgcmVjdC5tYXhZKCkg
LSBib3JkZXJUaGlja25lc3MsIHJlY3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKQEAgLTQw
Myw3ICszOTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgICAgIH07CiAgICAgICAgIENH
Q29udGV4dEZpbGxSZWN0cyhjb250ZXh0LCByZWN0cywgNCk7CiAgICAgICAgIGlmIChvbGRGaWxs
Q29sb3IgIT0gc3Ryb2tlQ29sb3IoKSkKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIG9sZEZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBzZXRDR0Zp
bGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IpOwogICAgIH0KIH0KIApAQCAtNDMyLDcgKzQy
Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBw
b2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50CiAgICAgaWYgKGRyYXdzRGFzaGVkTGluZSkg
ewogICAgICAgICAvLyBGaWd1cmUgb3V0IGVuZCBwb2ludHMgdG8gZW5zdXJlIHdlIGFsd2F5cyBw
YWludCBjb3JuZXJzLgogICAgICAgICBjb3JuZXJXaWR0aCA9IHN0cm9rZVN0eWxlID09IERvdHRl
ZFN0cm9rZSA/IHRoaWNrbmVzcyA6IHN0ZDo6bWluKDIgKiB0aGlja25lc3MsIHN0ZDo6bWF4KHRo
aWNrbmVzcywgc3Ryb2tlV2lkdGggLyAzKSk7Ci0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIHN0cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmls
bENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBpZiAoaXNWZXJ0aWNhbExp
bmUpIHsKICAgICAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIEZsb2F0UmVjdChw
b2ludDEueCgpLCBwb2ludDEueSgpLCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBGbG9hdFJlY3QocG9pbnQxLngoKSwgcG9p
bnQyLnkoKSAtIGNvcm5lcldpZHRoLCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CkBAIC02MDcs
NyArNTk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAg
IGlmICghcGxhdGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBwYXR0ZXJuU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZVBhdHRlcm4oMCkpOworICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybihudWxscHRyKSk7CiAgICAgQ0dD
b250ZXh0U2V0RmlsbENvbG9yU3BhY2UoY2dDb250ZXh0LCBwYXR0ZXJuU3BhY2UuZ2V0KCkpOwog
CiAgICAgY29uc3QgQ0dGbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOwpAQCAtODM3LDE3ICs4MjgsMTYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBm
aWxsQ29sb3IoKTsKLSAgICBDb2xvclNwYWNlIG9sZENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFj
ZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9
IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yKQorICAgICAgICBzZXRDR0Zp
bGxDb2xvcihjb250ZXh0LCBjb2xvcik7CiAKICAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMg
eWV0LgogICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBkcmF3T3du
U2hhZG93KTsKQEAgLTg2NCwyMSArODU0LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAg
ICAgaWYgKGRyYXdPd25TaGFkb3cpCiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCi0g
ICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3Bh
Y2UpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29s
b3JTcGFjZSk7CisgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvcikKKyAgICAgICAgc2V0Q0dG
aWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3Jt
Q29udGV4dCgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwotICAgIENv
bG9yU3BhY2Ugb2xkQ29sb3JTcGFjZSA9IGZpbGxDb2xvclNwYWNlKCk7CiAKLSAgICBpZiAob2xk
RmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAg
ICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgIGlmIChv
bGRGaWxsQ29sb3IgIT0gY29sb3IpCisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNv
bG9yKTsKIAogICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgp
ICYmIGhhc0JsdXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
czsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgQ0dDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGRyYXdPd25TaGFkb3cpOwpAQCAtOTA2LDEx
ICs4OTUsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnMKICAgICBpZiAoZHJhd093blNoYWRv
dykKICAgICAgICAgc3RhdGVTYXZlci5yZXN0b3JlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9y
ICE9IGNvbG9yIHx8IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dG
aWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yLCBvbGRDb2xvclNwYWNlKTsKKyAgICBpZiAo
b2xkRmlsbENvbG9yICE9IGNvbG9yKQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBv
bGRGaWxsQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBy
b3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTI3LDEwICs5MTYsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAog
CiAgICAgV2luZFJ1bGUgb2xkRmlsbFJ1bGUgPSBmaWxsUnVsZSgpOwogICAgIENvbG9yIG9sZEZp
bGxDb2xvciA9IGZpbGxDb2xvcigpOwotICAgIENvbG9yU3BhY2Ugb2xkRmlsbENvbG9yU3BhY2Ug
PSBmaWxsQ29sb3JTcGFjZSgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7
Ci0gICAgc2V0RmlsbENvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRGaWxsQ29sb3Io
Y29sb3IpOwogCiAgICAgLy8gZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQg
dGhlIGVkZ2VzIG9mIHJlY3QgYXJlIGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQg
c2hhZG93cyBjYXN0IGFyb3VuZCBpbnNpZGUgdGhlIGhvbGUuCiAgICAgYm9vbCBkcmF3T3duU2hh
ZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFt
X3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwpAQCAtOTQ5LDcgKzkzNyw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIAog
ICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENv
bG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvcik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
QEAgLTEwNTksNyArMTA0Nyw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fy
b3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5OSw3ICsxMDg3
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb24KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwg
eU9mZnNldCksIGJsdXJSYWRpdXMpOwogICAgIGVsc2UKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJS
YWRpdXMsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpKTsKKyAgICAgICAgQ0dDb250
ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNl
dCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3coKQpAQCAtMTM5NiwxMiArMTM4NCwxMiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgY29uc3QgRGFzaEFycmF5JgogICAgIH0KIAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVx
dWFsVG9TdHJva2VDb2xvcikKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0
KCksIGxvY2FsU3Ryb2tlQ29sb3IsIHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENH
RmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBsb2NhbFN0cm9rZUNvbG9yKTsKIAogICAgIENH
Q29udGV4dEZpbGxSZWN0cyhwbGF0Zm9ybUNvbnRleHQoKSwgZGFzaEJvdW5kcy5kYXRhKCksIGRh
c2hCb3VuZHMuc2l6ZSgpKTsKIAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VD
b2xvcikKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xv
cigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1D
b250ZXh0KCksIGZpbGxDb2xvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVS
TEZvclJlY3QoY29uc3QgVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKQEAgLTE1
MDEsMTEgKzE0ODksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERy
YXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgfQogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3Is
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q0dTdHJva2VDb2xvcihwbGF0Zm9ybUNv
bnRleHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgIHNldENHU3Ryb2tlQ29sb3IocGxhdGZv
cm1Db250ZXh0KCksIGNvbG9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKQEAgLTE1MTUsMTEgKzE1MDMsMTEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0
IHRoaWNrbmVzcykKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCks
IHN0ZDo6bWF4KHRoaWNrbmVzcywgMC5mKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvciwgY29sb3JT
cGFjZSk7CisgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wg
ZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcAppbmRleCAzMjIzMjAyYjcyNzg4MjcyZjE2ODAzMTY0YjYzYjE3YmRk
YTI5YTBjLi45NTA0NjlhYTU2MjQyOWRlMGIyZDVmMWVlYzQwZTM4MjJlY2FmYWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvCiAgICAgICAg
IGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGludGVy
bmFsU2l6ZSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgpLndp
ZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0KSk7CisgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2lj
YWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGRldmljZVJH
QkNvbG9yU3BhY2VSZWYoKSAvKiBGSVhNRSAqLywga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dC
bGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKSk7CiAgICAgICAg
IEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFjZSA9IHNjYWxlU2l6ZVRvVXNlclNwYWNlKGxv
Z2ljYWxTaXplKCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CkBA
IC0yMjgsMTAgKzIyOCw5IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yCiAgICAgcmV0dXJuIGlt
YWdlOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBz
dHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAg
aWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkpCkBAIC0yNDEsMTAgKzI0MCwxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LAogCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0g
ICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2lu
Z1N0b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBt
X2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CkBAIC0yNTIsMTQgKzI1MSwxNCBAQCB2b2lkIEltYWdl
QnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHNyYwogICAgIGlmICghY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKICAgICAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0
LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+
IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpIC8vIERyYXdpbmcgaW50byBvdXIg
b3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCi0gICAgICAgICAgICAgICAgY29weS0+ZHJh
d1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUp
OworICAgICAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3Rl
ZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3Qs
IGJsZW5kTW9kZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPElt
YWdlPiBpbWFnZUZvclJlbmRlcmluZyA9IGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkp
Ci0gICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250
ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAg
ICBpbWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxl
bmRNb2RlKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChSZWZQdHI8SW1h
Z2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICBjb3B5
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5k
TW9kZSk7CisgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0
LCBibGVuZE1vZGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUNHLmNwcAppbmRleCA3NWFiYmY4Y2QxNjRjZDUzOTU4ZDRmZDY2Y2Ex
M2E5NDE4Njk4NzQ5Li5mM2RkMDIyYTkwNWE2MmU0YzExODM5YWRkNGNhNmYwYjA5MzYxYzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApA
QCAtNDUsMzUgKzQ1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmV0YWluUHRyPENH
SW1hZ2VSZWY+IEltYWdlOjppbWFnZVdpdGhDb2xvclNwYWNlKENHSW1hZ2VSZWYgb3JpZ2luYWxJ
bWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIENHQ29sb3JTcGFjZVJlZiBvcmln
aW5hbENvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShvcmlnaW5hbEltYWdlKTsKLQot
ICAgIC8vIElmIHRoZSBpbWFnZSBhbHJlYWR5IGhhcyBhIChub24tZGV2aWNlKSBjb2xvciBzcGFj
ZSwgd2UgZG9uJ3Qgd2FudCB0bwotICAgIC8vIG92ZXJyaWRlIGl0LCBzbyByZXR1cm4uCi0gICAg
aWYgKCFvcmlnaW5hbENvbG9yU3BhY2UgfHwgIUNGRXF1YWwob3JpZ2luYWxDb2xvclNwYWNlLCBk
ZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkpKQotICAgICAgICByZXR1cm4gb3JpZ2luYWxJbWFnZTsK
LQotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZURldmljZVJH
QjoKLSAgICAgICAgcmV0dXJuIG9yaWdpbmFsSW1hZ2U7Ci0gICAgY2FzZSBDb2xvclNwYWNlU1JH
QjoKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFj
ZShvcmlnaW5hbEltYWdlLCBzUkdCQ29sb3JTcGFjZVJlZigpKSk7Ci0gICAgY2FzZSBDb2xvclNw
YWNlTGluZWFyUkdCOgotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29weVdp
dGhDb2xvclNwYWNlKG9yaWdpbmFsSW1hZ2UsIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKSkpOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBvcmlnaW5hbElt
YWdlOwotfQotCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCiB7CiAgICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjdHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0
LCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwog
CiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWRE
cmF3KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCA4MmEzYTViNGRlYThmNGY2NjI1YTJlYWY1
NDczZDNhZWRlYzY0ZTVhLi5iZmNlYTI4ODk4Nzc5OTZjMGU2OGQyN2E5NjhhNzE3MzViNmQ3MGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0CiAgICAgfQogfQogCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1f
aGFzUGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwog
CiAgICAgICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKm1fY2FjaGVkSW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fY2FjaGVk
SW1hZ2VCdWZmZXIsIGRzdFJlY3QpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHRyYW5z
Zm9ybUNvbnRleHRGb3JQYWludGluZyhjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0KTsKICAgICAg
ICAgICAgIGRyYXdQREZQYWdlKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCmluZGV4IDdmZmQ2MDNiNmYx
YmYzOTAzMTU1NGNiMGQwN2UzM2Y1ZjkyY2Q4YmYuLjlhNGMxZTllMGI1MWUzOWQ1MGE0NGIxOWI5
MTU1NWJkOWIwNTY5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRy
aW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2lj
UmF0aW8pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBs
ZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCmlu
ZGV4IDgzOWNhMDNkOTM2ZjUyZDYzNDA1YjI1ZWU5OWY4OTgwNmNlYmQ3MjMuLmQxZGNiZDY2ZWVh
ZWMzNmVkYTFmNzgyYTUyNGMwYmM1MDViNWQyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQpAQCAt
MzMzLDkgKzMzMyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgRmxvYXRTaXplIHNo
YWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9y
OwotICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBDb2xvclNwYWNlIGZpbGxD
b2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQuZ2V0U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3Bh
Y2UpOworICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0gPSBjb250ZXh0Lmdl
dENUTSgpOwogICAgIGZsb2F0IHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250LnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKTsKQEAgLTM1MiwxNCArMzUwLDE0IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBH
CiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgQ29sb3IgZmlsbENvbG9y
ID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNo
YWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCks
IHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7
CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xvcik7CiAgICAgICAg
IGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAg
ICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2
ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3JkaW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRp
dmUuCiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0
LmhlaWdodCgpICogKGNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7
CiAgICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwg
c2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBu
dW1HbHlwaHMpOwogICAgICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkKICAgICAgICAgICAg
IHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCArIHN5bnRoZXRp
Y0JvbGRPZmZzZXQsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmls
bENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZp
bGxDb2xvcik7CiAgICAgfQogCiAgICAgaWYgKHVzZUxldHRlcnByZXNzRWZmZWN0KQpAQCAtMzcw
LDcgKzM2OCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHCiAgICAgICAgIHNob3dHbHlwaHNX
aXRoQWR2YW5jZXMoRmxvYXRQb2ludChwb2ludC54KCkgKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBw
b2ludC55KCkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1H
bHlwaHMpOwogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgY29udGV4dC5zZXRT
aGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1
ciwgc2hhZG93Q29sb3IpOwogCiAjaWYgIVBMQVRGT1JNKElPUykKICNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggZWRlZjU3ODAxODJmY2M4
MGZlNTc5NTM5MTJkNGFkOTVhMzc2YTAzYy4uZmY5MTExYzRiNjAzMjU0NmQ0NzQzYzFjNGVmMDc4
NWIzYzQ2MTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC03NSw4ICs3NSw4IEBAIHZvaWQgRkVCbGVuZDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZl
cjIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENv
bXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIElt
YWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDc4ZmZkY2U0ZDU5MWFkNmE4MTIyZmU2Mzg4
MjM5M2ZmNTUxYWU3NzIuLjY4NjBkN2RkZmU2YTAxNWJlZjk4NDYwYzhiY2I3ZWJjYzRmZTU2Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRkVDb2xvck1h
dHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEltYWdlQnVmZmVyKiBpbkJ1ZmZl
ciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgaWYgKGluQnVmZmVyKQotICAgICAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkpKTsKKyAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmlu
QnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CiAKICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9n
aWNhbFNpemUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0g
cmVzdWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcAppbmRleCA5YTE1NmY4OTRkZjE0M2VlOGUzODU4Njg3OGQwNzA5MjI4ZTFiZmU5Li44
ODg4NDZhY2NlZDAyMjJiOGVjYjg5NDcxNGUyYmUxNmI0ZTFkMTBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cApAQCAtMjgxLDggKzI4MSw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BF
UkFUT1JfT1ZFUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09N
UE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAgIC8vIEFwcGxpZXMgb25seSB0byB0aGUgaW50
ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsyOTQsMjEgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24o
KTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVj
dCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigp
OwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3Qp
OwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBD
b21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlcjIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWRqdXN0
ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgotICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+
bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKKyAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUDoKLSAgICAgICAgZmlsdGVy
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsK
LSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJz
b2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFp
bnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgp
KSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01Q
T1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KElu
dFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgp
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4
IGRjZTVhYWUyNWYyOTdhYTg4YjZmOGE4M2NiYzJkYTg0YjAwY2U5NmUuLmMwZTg5NDI0MTU5MWY3
MzQzZmM3NmU0ZWU5NDY1ZDM0M2I4MmFhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTIwLDcg
KzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIK
IAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgog
I2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtOTMs
MTAgKzkyLDEwIEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKTsKICAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKG1fc2hhZG93T3BhY2l0eSk7Ci0gICAg
cmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldCk7CisgICAgcmVzdWx0Q29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldCk7CiAgICAg
cmVzdWx0Q29udGV4dC5zZXRBbHBoYSgxKTsKIAotICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRv
dyhibHVyUmFkaXVzLCBvZmZzZXQsIG1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhibHVyUmFkaXVzLCBvZmZzZXQsIG1fc2hh
ZG93Q29sb3IpOwogCiAgICAgLy8gVE9ETzogRGlyZWN0IHBpeGVsIGFjY2VzcyB0byBJbWFnZUJ1
ZmZlciB3b3VsZCBhdm9pZCBjb3B5aW5nIHRoZSBJbWFnZURhdGEuCiAgICAgSW50UmVjdCBzaGFk
b3dBcmVhKEludFBvaW50KCksIHJlc3VsdEltYWdlLT5pbnRlcm5hbFNpemUoKSk7CkBAIC0xMDcs
MTAgKzEwNiwxMCBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1BpeGVsQXJy
YXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgpLCBJbWFn
ZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAKICAgICByZXN1bHRDb250
ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VJbik7Ci0gICAgcmVzdWx0
Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVj
dCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHJl
c3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWlu
dFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yKTsKICAgICByZXN1bHRDb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRy
YXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZF
RHJvcFNoYWRvdzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAppbmRleCA3ZWQ0MjlmMDMzOTZlODJjODk2YjUzNjcw
MjI2ZDAxOGFiMjM3MmE0Li5lOGRhOGQzMWY0NTViZDllZGQ4Y2IwOWEzY2JmZTE5YzdhNDEyZmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Rmxvb2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVGbG9vZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBDb2xvciBjb2xvciA9IGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEoZmxvb2RDb2xvcigpLnJnYigpLCBmbG9vZE9wYWNpdHkoKSk7Ci0gICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBh
YnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IpOwogfQogCiB2b2lkIEZFRmxv
b2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggYTAyZDlmZGFlMjQ1YTVmZWRjNTE5YzgzMDBjMDMzMWQw
ZDcyMWJlNy4uMzJjZjI1NGQ1ZWNhZDMxNDYzYmE1M2RkYTQyODY1OTk0NmM0NTVhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2Uu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgRkVNZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZp
bHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsKICAgICAgICAgaWYgKEltYWdlQnVmZmVy
KiBpbkJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCkpCi0gICAgICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0
LmNwcAppbmRleCAxOGEyZTc5MWQ1ODNiYWNkY2QxYzdiZTZkMDU3ZjUwYjliNTE5MWNhLi5kZGVm
NTg3OTFjZmEyNDg1OGNhZmE2YjQyMDNjMGNkMjQ1Y2UxZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtODgs
NyArODgsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZs
b2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsK
ICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fZHgp
LCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb24pOworICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVy
KCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwCmluZGV4IGExODdiNzRmZmZmZGQ1YTk3NDRkYzY5N2NjYzVlZWFjMjBlZGYzMDIuLmM3MDQ0
YTAyNzFhNGJlMmU2ZDliY2FhMmUwMGVlNjI1ZTcyZGM5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBHcmFwaGlj
c0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKICAgICB0
aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1h
eEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+YWJzb2x1dGVQYWludFJlY3Qo
KS5sb2NhdGlvbigpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5C
dWZmZXIsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOwogCiAgICAgYXV0byB0
aWxlSW1hZ2VDb3B5ID0gdGlsZUltYWdlLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAg
ICAgaWYgKCF0aWxlSW1hZ2VDb3B5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAppbmRleCAxZTNiOTFhMjI0NDhm
MThjYWE0MTZmYjEwNmEyODQwYTAwMmEzMWJiLi43MjQ4OTNiYWEwNTgyMWYxYmU1OWFlNzZmNWU2
ZDFlY2ZkNTA4YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApAQCAtNTgsOCArNTgsOCBAQCB2b2lkIFNv
dXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBGbG9hdFJlY3QgaW1hZ2VSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5z
aXplKCkpOwotICAgIGZpbHRlckNvbnRleHQuZmlsbFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6Ymxh
Y2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9z
aXRlRGVzdGluYXRpb25Jbik7CisgICAgZmlsdGVyQ29udGV4dC5maWxsUmVjdChpbWFnZVJlY3Qs
IENvbG9yOjpibGFjayk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKIH0KIAogdm9pZCBT
b3VyY2VBbHBoYTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAppbmRleCBkZjRlZTZmMDc5YzU0
NTc1NDU5ZTg0MzY5MjY1OWQ2Y2QzMzAwZWJiLi42MWJiMWI4YmM5MjUzNzY2NzUxZjY2M2E0NDdj
OTU1YzFmZmUxOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9p
ZCBTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0
SW1hZ2UgfHwgIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHRJbWFn
ZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEludFBvaW50KCkpOworICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdl
QnVmZmVyKCpzb3VyY2VJbWFnZSwgSW50UG9pbnQoKSk7CiB9CiAKIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
b3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tCmluZGV4IGJlMzUwNzYwOTMwY2FhYmNjMWNmZWYzYmEyNGMyMTQyOTA3MTA2OWUuLjIx
NTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDliODFkOWQ3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC02OCw3ICs2OCw3IEBA
IHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7
CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlv
bkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcAppbmRleCA2OTgyODU0ODY5MWEwNTg4MTllZWM3NmY0Mjk3ZWY1NmMyNjhk
YzY3Li4wNjQyNDNiNGI5YmYxY2Y3YTQ4YzAwOTliMjBkYWM3OThiNWIxYzhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9TdXJmYWNl
Q29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewotICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtX3JlY3Qs
IG1fcmVjdCk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG1faW1hZ2UsIG1fcmVjdCwgbV9y
ZWN0KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFz
LmNwcAppbmRleCBmZTI4MTUxMjFhNTcwNDQ2NzYxMGE0NTA2NjRkMTk0OGQ4MTNmOGZkLi5kYjg2
Zjk1MTgyYTAwMjA1ZWMxYWNhZmI0ODAyZWQyMTRlNjcwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgaWYgKG1fc3VwcG9ydHNBbHBoYSkgewogICAgICAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9zaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBtX3NpemUpLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAg
ICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zl
cik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENHV2luLmNwcAppbmRleCBhMjdhMmVmNmZlY2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1
MjU2MWFmY2E2Li45MmNmNzJlMDIzOTNjYTU4YmQ3YTA3MmJjYmMyZWQxY2FhYjcwMjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNw
cApAQCAtMTgzLDE1ICsxODMsMTMgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9udCwKICAgICBGbG9h
dFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIGdyYXBoaWNz
Q29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwg
c2hhZG93Q29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIGJvb2wgaGFzU2ltcGxlU2hh
ZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAm
JiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRl
eHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCku
aXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CiAgICAgaWYgKGhhc1NpbXBsZVNo
YWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVh
ZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRp
YWxpYXNpbmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogICAgICAg
ICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yKCk7Ci0gICAgICAg
IENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yU3Bh
Y2UoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBz
aGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhh
KCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKICAgICAgICAg
ZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgc2hh
ZG93T2Zmc2V0LndpZHRoKCk7CkBAIC0yMDMsNyArMjAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6
ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYg
Zm9udCwKICAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBv
aW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZv
bnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQo
KSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5
cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0
aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUds
eXBocyk7CiAgICAgICAgIH0KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihm
aWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlv
bihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSAr
IHRyYW5zbGF0aW9uLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCmluZGV4IDI3
NDIyN2I5NmFlZGYwOGEzNDFiNGMyMzA4MWNjMDNiOGI2ZTQxNzguLmZiZjgxNTc2YWZlMjM3Y2Vm
ZGVjODM1ZWI0YTM3YzEyNzZhYjg4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAKICAgICBmbG9hdCByYWRp
dXMgPSAod2lkdGggLSAxKSAvIDIuMGY7CiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKLSAgICBDR0Nv
bG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihjb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQikgOiAwOworICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xv
ci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yKSA6IDA7CiAKICAgICBDR011dGFibGVQ
YXRoUmVmIGZvY3VzUmluZ1BhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7CiAgICAgdW5zaWdu
ZWQgcmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDA4MzQ3MDdkYTliYWY3MTFj
YmY3MjgxNzM2ZjI1MjJmN2YxMWE3NjUuLjYyZDQ5ODAyMmMxZjY4MmUyZDRiM2Y2OGYxZGVkOWRk
ODQzODM1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTc2LDkgKzc2LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0
SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKIAogICAgIEZs
b2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQot
ICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291
cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5m
by5ibUhlaWdodCksICpzaXplLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRy
YXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1I
ZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9k
ZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdj
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0
KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNl
KGNnQ29udGV4dCk7CkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50
U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsK
ICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnJhbWVzOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCBjNDM0ODBiM2IyZDVhYmY0MmJm
YzkyNmFhN2JmODg1MjY2NTg2MmI2Li4yOWEyMDIzZGI2M2E5MTQzNGMzOTQ4ZWFhNTUyM2JiNjFm
ZTgxMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6
OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAKICAg
ICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6
ZSkKLSAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJt
cEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAg
ICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZv
LmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVu
ZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJh
dyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhl
aWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgY2Fpcm9fZGVzdHJv
eSh0YXJnZXRSZWYpOwpAQCAtODksNyArODksNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklU
TUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUo
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291
cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCiB7
CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZyYW1lczsgKytpKSB7CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXQKICAgICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJm
YWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0
PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRG
cmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwot
ICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3Jj
U2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkp
OworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwg
c3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgbV9j
dXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogCiAgICAgLy8g
Tm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdp
bmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1h
Z2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUNhY2hlLm1tCmluZGV4IGE3MWI4Mjk5NDY4NThiOTdmNmNlOTdiNGNiMzcwMWNjMGJhYmM2
ODMuLmQ4ZDEwNTU4YjJmZDM1MWI2ZDQxYjYyODgzZmMwOTM2NzlhZTI4NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNTgwLDcgKzU4
MCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIoTGVnYWN5VGlsZUxheWVyKiBs
YXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUo
Y29udGV4dCk7CiAKICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGZyYW1l
Lm9yaWdpbi54LCBmcmFtZS5vcmlnaW4ueSk7Ci0gICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xv
cldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIo
W2xheWVyIHRpbGVHcmlkXSksIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3JGb3JH
cmlkVGlsZUJvcmRlcihbbGF5ZXIgdGlsZUdyaWRdKSkpOwogICAgICAgICAKICAgICAgICAgQ0dS
ZWN0IGxhYmVsQm91bmRzID0gW2xheWVyIGJvdW5kc107CiAgICAgICAgIGxhYmVsQm91bmRzLnNp
emUud2lkdGggPSAxMCArIDEyICogc3RybGVuKHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0KaW5kZXggMmE5YTVmY2FkYmRiNjFk
OWJhZjA1YzdkNTEwN2M5Y2ZiYmE5YmJiYy4uMzBhN2RiY2I5NmNkNjQ2ZTFjNWE5NjM3ODhkZmVl
MDAzZTU5NWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVHcmlkVGlsZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUdyaWRUaWxlLm1tCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBMZWdhY3lUaWxlR3JpZFRp
bGU6OnNob3dCb3JkZXIoYm9vbCBmbGFnKQogewogICAgIExlZ2FjeVRpbGVMYXllciogbGF5ZXIg
PSBtX3RpbGVMYXllci5nZXQoKTsKICAgICBpZiAoZmxhZykgewotICAgICAgICBbbGF5ZXIgc2V0
Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dDb2xvcihtX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5jb2xvckZv
ckdyaWRUaWxlQm9yZGVyKG1fdGlsZUdyaWQpLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAg
ICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRDR0NvbG9yKG1fdGlsZUdyaWQtPnRpbGVD
YWNoZSgpLmNvbG9yRm9yR3JpZFRpbGVCb3JkZXIobV90aWxlR3JpZCkpXTsKICAgICAgICAgW2xh
eWVyIHNldEJvcmRlcldpZHRoOjAuNWZdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFtsYXllciBz
ZXRCb3JkZXJDb2xvcjpuaWxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXgg
ZjZlYzkwOWU4YjIyY2RlYTcwZWFlNDgxZTdjNjg0ZDIyZDI2YmQwMS4uM2UyYThkNjIyYTljNTU3
MDdkMjkyMjJkOTYyZjUzYzhjMzY1M2U4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgUmV0YWluUHRyPENB
TGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXll
cl07CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5M
YXllcl0gewotICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9y
OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50LCBXZWJDb3JlOjpDb2xv
clNwYWNlRGV2aWNlUkdCKV07CisgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNr
Z3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsK
ICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVu
TGF5ZXIuZ2V0KCkpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmVu
dGVyRnVsbHNjcmVlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VN
YWMubW0KaW5kZXggNWZiMDUyZDQ1NjdkYTAwYmQ4MmRlMjFjOWFkNjkwMTA1NWQ1ZDkxOS4uNDE2
ZDVkZDk1NTY3OWJiODM2ZTQyOTIxMTg4MGMyYWI3MTEwOTZmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGlj
IHZvaWQgZHJhd0F0UG9pbnQoTlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNGb250
ICpmb250LCBOU0NvbG9yICoKICAgICAgICAgQ0dGbG9hdCBibHVlOwogICAgICAgICBDR0Zsb2F0
IGFscGhhOwogICAgICAgICBbW3RleHRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNE
ZXZpY2VSR0JDb2xvclNwYWNlXSBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBh
bHBoYTomYWxwaGFdOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VS
R0JBKHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Io
bWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUp
KTsKICAgICAgICAgCiAgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4
dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBv
aW50LnkpKSkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBlOTNkODcyZTM2NmEzNzUyMzI2ZDAyY2NmYjgyZjAx
NjQzOGFkNTA2Li45Y2ZkMDQ4OTkzMmNmZTU2ODFmYzFhYjAwYjcwMzQxYTEzNzViZTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBA
IC01NDYsNyArNTQ2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0VXBPdmVyaGFuZ0Fy
ZWFCYWNrZ3JvdW5kKENBTGF5ZXIgKmxheWVyLCBjb25zdCBDb2xvciYKICAgICBzdGF0aWMgQ0dD
b2xvclJlZiBjYWNoZWRMaW5lbkJhY2tncm91bmRDb2xvciA9IGxpbmVuQmFja2dyb3VuZENvbG9y
KCkubGVha1JlZigpOwogICAgIC8vIFdlIG9wZXJhdGUgb24gdGhlIENBTGF5ZXIgZGlyZWN0bHkg
aGVyZSwgc2luY2UgR3JhcGhpY3NMYXllciBkb2Vzbid0IGhhdmUgdGhlIGNvbmNlcHQKICAgICAv
LyBvZiBwYXR0ZXJuIGltYWdlcywgYW5kIHdlIGtub3cgdGhhdCBXZWJDb3JlIHdvbid0IHRvdWNo
IHRoaXMgbGF5ZXIuCi0gICAgbGF5ZXIuYmFja2dyb3VuZENvbG9yID0gY3VzdG9tQmFja2dyb3Vu
ZENvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29sb3IoY3VzdG9tQmFja2dyb3VuZENvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKSA6IGNhY2hlZExpbmVuQmFja2dyb3VuZENvbG9yOworICAgIGxh
eWVyLmJhY2tncm91bmRDb2xvciA9IGN1c3RvbUJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgPyBj
YWNoZWRDR0NvbG9yKGN1c3RvbUJhY2tncm91bmRDb2xvcikgOiBjYWNoZWRMaW5lbkJhY2tncm91
bmRDb2xvcjsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVtb3ZlT3ZlcmhhbmdBcmVh
QmFja2dyb3VuZChDQUxheWVyICpsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQppbmRleCBlNzU5MWJlZGJmNGQ1ZTBkNjllNzBkNzNlNzA0MjllZGY4MWJhMTViLi5m
MWUyMTEzY2Y3YWE1MTExMWUwYzRmZTc3MDFjNzE0NTE5MWExYzFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC02OTIsNyArNjkyLDcgQEAgYm9vbCBUaGVtZU1h
Yzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlNDZWxsICpjZWxsLCBH
cmFwaGljc0NvbnQKICAgICAgICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQoaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgICAgICAgICBuZWVkc1JlcGFp
bnQgPSBkcmF3Q2VsbE9yRm9jdXNSaW5nSW50b1JlY3RXaXRoVmlldyhjZWxsLCBpbWFnZUJ1ZmZl
ckRyYXdSZWN0LCB2aWV3LCBkcmF3QnV0dG9uQ2VsbCwgZHJhd0ZvY3VzUmluZyk7CiAgICAgICAg
IH0KLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNw
YWNlU1JHQiwgcmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxp
bmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgcmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXpl
KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
KSk7CiAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgfQogICAgIGlmIChkcmF3QnV0
dG9uQ2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCmluZGV4IGIwNTNjNDJiYWE5ZmExZDQ2YmZiYzky
ZDg3OTMwYmYyMGY5ZDM5ODYuLjZiNjU2Njg4ZWU5MDBkN2NiYWE3OTFjNmE3OTI3MzQyM2IzNGRj
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFT
dHJlYW1Qcml2YXRlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0Lnko
KSArIHJlY3QuaGVpZ2h0KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAt
MSkpOwogICAgICAgICBJbnRSZWN0IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChw
YWludFJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QocGFpbnRSZWN0LCBDb2xvcjo6YmxhY2spOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3Bw
CmluZGV4IDk5NTQ0N2I1NjgwMTAzOGNmZmUzMzE1ODljNzc2NDBiY2ZmYzgxNGEuLjlhZDc1N2Yz
ZWJhNTcyNmIxZDIxYzVhZDRlZGNkYzE5OWI2OGQxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAgLTQ0LDEzICs0NCwx
MyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUgY29udHJvbFNpemUpCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5maWxsUmVj
dCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogQ29s
b3IoMHhGRkUwRTBFMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJl
Y3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENv
bG9yKDB4RkZFMEUwRTApKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmIChzY3JvbGxiYXIuZW5hYmxlZCgpKQotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0aHVtYlJlY3QsIENvbG9y
OjpkYXJrR3JheSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZVdpbi5jcHAKaW5kZXggN2YzZmUzNDYxZjM2ZjIxNGMxNjg1ZmE0NmM4MzVlMTdkNTIwNDE0
NS4uOGU0Y2Q4OWQ2ZDliZWJjMjI4ZjhjMzI3MWEyOWY3YjhlNDdkMjI2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTE5Miw3ICsxOTIsNyBA
QCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBpbkxhYmVsLCBGb250UmVuZGVyaQogICAgIHN0YXRpYyBjb25zdCBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IoMTQwLCAxNDAsIDE0MCk7CiAgICAgc3RhdGljIGNvbnN0IEludFNpemUgcmFkaWko
RHJhZ0xhYmVsUmFkaXVzLCBEcmFnTGFiZWxSYWRpdXMpOwogICAgIEludFJlY3QgcmVjdCgwLCAw
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0LmZp
bGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWks
IHJhZGlpKSwgYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250
ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwg
cmFkaWksIHJhZGlpKSwgYmFja2dyb3VuZENvbG9yKTsKICAKICAgICAvLyBEcmF3IHRoZSB0ZXh0
CiAgICAgc3RhdGljIGNvbnN0IENvbG9yIHRvcENvbG9yKDAsIDAsIDAsIDI1NSk7IC8vIG9yaWdp
bmFsIGFscGhhID0gMC43NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcAppbmRleCBlZWRmNmZjNmYzNWZlZDRmNGI0MjhkODk4ZDlkZjIyOGMxZDNiODQwLi41
MzQ5MWNiN2VhMDc3ZTIwNGUwMDhmZDVmNGFmNTFiYWZiZjdjOGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtNjMyLDE4ICs2MzIsMTggQEAg
dm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBo
ZGMpCiAKICAgICAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBtZW51IGl0ZW0K
ICAgICAgICAgaWYgKGl0ZW1TdHlsZS5pc1Zpc2libGUoKSkKLSAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoaXRlbVJlY3QsIG9wdGlvbkJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGl0ZW1SZWN0LCBvcHRpb25CYWNr
Z3JvdW5kQ29sb3IpOwogCiAgICAgICAgIGlmIChjbGllbnQoKS0+aXRlbUlzU2VwYXJhdG9yKGlu
ZGV4KSkgewogICAgICAgICAgICAgSW50UmVjdCBzZXBhcmF0b3JSZWN0KGl0ZW1SZWN0LngoKSAr
IHNlcGFyYXRvclBhZGRpbmcsIGl0ZW1SZWN0LnkoKSArIChpdGVtUmVjdC5oZWlnaHQoKSAtIHNl
cGFyYXRvckhlaWdodCkgLyAyLCBpdGVtUmVjdC53aWR0aCgpIC0gMiAqIHNlcGFyYXRvclBhZGRp
bmcsIHNlcGFyYXRvckhlaWdodCk7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNlcGFy
YXRvclJlY3QsIG9wdGlvblRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHNlcGFyYXRvclJlY3QsIG9wdGlvblRleHRDb2xvcik7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZyBpdGVtVGV4
dCA9IGNsaWVudCgpLT5pdGVtVGV4dChpbmRleCk7CiAKICAgICAgICAgVGV4dFJ1biB0ZXh0UnVu
KGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtU3R5bGUudGV4dERp
cmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwotICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihvcHRpb25UZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihvcHRpb25UZXh0Q29sb3IpOwogICAg
ICAgICAKICAgICAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBjbGllbnQoKS0+bWVudVN0eWxl
KCkuZm9udCgpOwogICAgICAgICBpZiAoY2xpZW50KCktPml0ZW1Jc0xhYmVsKGluZGV4KSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVy
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCmluZGV4IGRmNTdlNWEzZTZkOTI3MmEwYTljMmVmOTg3MTI5OTNlZThhZjM5ZjIuLmYxY2Vm
MDlmNWM3ODE4ODE2ODZlOTQzZjU2N2E1MWYwYTU5NGM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKIHsKICAgICBUZXh0UnVuIHJ1bih0ZXh0KTsK
IAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7CiAgICAgaWYgKGlzT25lTGVmdFRvUmln
aHRSdW4ocnVuKSkKICAgICAgICAgZm9udC5kcmF3VGV4dChjb250ZXh0LCBydW4sIHBvaW50KTsK
ICAgICBlbHNlCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIGRvRHJhd1RleHRBdFBvaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zCiAgICAg
ICAgIEludFBvaW50IHVuZGVybGluZVBvaW50KHBvaW50KTsKICAgICAgICAgdW5kZXJsaW5lUG9p
bnQubW92ZShiZWZvcmVXaWR0aCwgMSk7CiAKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xv
cihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoY29sb3IpOwogICAgICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dCh1bmRlcmxpbmVQ
b2ludCwgdW5kZXJsaW5lZFdpZHRoLCBmYWxzZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggMmU4ZmQwYmIwYTJlMGJhNDNiNmVjNTU2MGE0
MzRkNmJmZmZkYjViZi4uMzY4NWNiZTEyYmJmMTI5ZTUwMjczZmViNWYxYjE5MDM5MTAzNTVhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC00NiwxMSArNDYs
MTEgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgQ29sb3IgdGV4dENvbG9yID0gbGluZVN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3Ip
OwogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKLSAgICAgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yKTsKICAgICBib29sIHNldFNoYWRv
dyA9IGZhbHNlOwogICAgIGlmIChsaW5lU3R5bGUudGV4dFNoYWRvdygpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U2hhZG93KExheW91dFNpemUobGluZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBs
aW5lU3R5bGUudGV4dFNoYWRvdygpLT55KCkpLAotICAgICAgICAgICAgbGluZVN0eWxlLnRleHRT
aGFkb3coKS0+cmFkaXVzKCksIGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPmNvbG9yKCksIGxpbmVT
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+
cmFkaXVzKCksIGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPmNvbG9yKCkpOwogICAgICAgICBzZXRT
aGFkb3cgPSB0cnVlOwogICAgIH0KIApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEVsbGlwc2lzQm94
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0LCBMYQogICAgICAgICAvLyBTZWxlY3QgdGhlIGNvcnJlY3QgY29sb3IgZm9yIHBhaW50aW5n
IHRoZSB0ZXh0LgogICAgICAgICBDb2xvciBmb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZvcmNlVGV4
dENvbG9yKCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9yKCkgOiBibG9ja0Zsb3coKS5zZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGZvcmVncm91bmQuaXNWYWxpZCgp
ICYmIGZvcmVncm91bmQgIT0gdGV4dENvbG9yKQotICAgICAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoZm9yZWdyb3VuZCwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihmb3JlZ3JvdW5kKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTog
V2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBm
bGFncyBiZWxvdy4KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKIAog
ICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENvbG9y
ICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRl
eHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKHRleHRDb2xvcik7CiAKICAgICBpZiAoc2V0U2hhZG93KQogICAgICAgICBjb250ZXh0
LmNsZWFyU2hhZG93KCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFp
bnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYg
cGEKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KHgoKSArIHBhaW50
T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3Ao
KSwgMCwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgVGV4dFJ1biBydW4gPSBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCksIGZvbnQsIG1fc3RyLCBzdHls
ZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yVGV4dChydW4sIHNlbGVjdGlvblJlY3QsIDAsIC0xKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwg
Yywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigp
LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYyk7CiB9CiAKIGJv
b2wgRWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRV
bml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0
QWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKaW5kZXggZmQ1MDllOGVhZDU5Njk3ZDQ2MGQzOGQzMTNlM2UwNDE2ZmE2NTg3Ny4u
NjUwMjk5YzQ4MGZmZTU0YWQ4MzJlODE1OTNiMWU5MGEyZDcxMDVhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC00MjksMTAg
KzQyOSw4IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZm
ZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25DCiAgICAgTGF5b3V0UmVjdCBkZXN0UmVj
dCA9IGZpbHRlci0+b3V0cHV0UmVjdCgpOwogICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNl
dC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKIAotICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0cHV0
QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkgewotICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCku
c3R5bGUoKS5jb2xvclNwYWNlKCksCi0gICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSkpOwotICAgIH0KKyAgICBpZiAoSW1hZ2VCdWZmZXIqIG91dHB1dEJ1ZmZlciA9
IGZpbHRlci0+b3V0cHV0KCkpCisgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKm91dHB1dEJ1ZmZlciwgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9y
ZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsK
IAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMDIxYTFhYjY2OTFkYmIxMTdh
ZTIwM2UzNjIxMjQ4MzhmZTdlMzliYi4uYzc4YjJjYWU2MDM4MTg0NmVlNjkwMDNjZTIzMGVlMjAy
MTg3OTg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApA
QCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAgICAgIGMgPSBD
b2xvcigweGZmIC0gYy5yZWQoKSwgMHhmZiAtIGMuZ3JlZW4oKSwgMHhmZiAtIGMuYmx1ZSgpKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoYywgc3R5bGUu
Y29sb3JTcGFjZSgpKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCisgICAgdXBkYXRlR3Jh
cGhpY3NDb250ZXh0KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGMpKTsgLy8gRG9uJ3QgZHJhdyB0
ZXh0IGF0IGFsbCEKICAgICAKICAgICAvLyBJZiB0aGUgdGV4dCBpcyB0cnVuY2F0ZWQsIGxldCB0
aGUgdGhpbmcgYmVpbmcgcGFpbnRlZCBpbiB0aGUgdHJ1bmNhdGlvbgogICAgIC8vIGRyYXcgaXRz
IG93biBoaWdobGlnaHQuCkBAIC03MjQsNyArNzI0LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQm
IGIKIAogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoYm94T3JpZ2lu
LngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSwgbV9sb2dpY2FsV2lkdGgsIHNlbGVjdGlvbkhl
aWdodCk7CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxl
Y3Rpb25SZWN0LCBzUG9zLCBlUG9zKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigp
LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMsIHN0eWxl
LmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLCBjKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShib3hPcmlnaW4pOwpAQCAt
NzQ1LDEzICs3NDUsMTMgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBDb2xvciBjb21wb3Np
dGlvbkNvbG9yID0gQ29sb3I6OmNvbXBvc2l0aW9uRmlsbDsKLSAgICB1cGRhdGVHcmFwaGljc0Nv
bnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29tcG9zaXRpb25Db2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCisgICAgdXBkYXRlR3JhcGhp
Y3NDb250ZXh0KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGNvbXBvc2l0aW9uQ29sb3IpKTsgLy8g
RG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKIAogICAgIExheW91dFVuaXQgZGVsdGFZID0gcmVuZGVy
ZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRv
bSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CiAg
ICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChib3hPcmlnaW4ueCgpLCBi
b3hPcmlnaW4ueSgpIC0gZGVsdGFZLCAwLCBzZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgVGV4dFJ1
biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZm9udCk7CiAgICAgZm9udC5hZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBzUG9zLCBlUG9z
KTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGlu
Z0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGNvbXBvc2l0aW9uQ29sb3IsIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CisgICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0
aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLCBjb21wb3NpdGlvbkNvbG9yKTsKIH0K
IAogc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKFRl
eHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlvblN0eWxlKQpAQCAtOTQ5LDcgKzk0OSw2IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgc2V0Q2xpcCA9IHRydWU7CiAgICAgfQogCi0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2Uo
KTsKICAgICBib29sIHNldFNoYWRvdyA9IGZhbHNlOwogCiAgICAgZG8gewpAQCAtOTYxLDcgKzk2
MCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGludCBzaGFkb3dYID0gaXNIb3Jpem9udGFsKCkgPyBzaGFkb3ctPngoKSA6IHNoYWRvdy0+eSgp
OwogICAgICAgICAgICAgaW50IHNoYWRvd1kgPSBpc0hvcml6b250YWwoKSA/IHNoYWRvdy0+eSgp
IDogLXNoYWRvdy0+eCgpOwotICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXpl
KHNoYWRvd1gsIHNoYWRvd1kgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+cmFkaXVzKCksIHNoYWRv
dy0+Y29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhG
bG9hdFNpemUoc2hhZG93WCwgc2hhZG93WSAtIGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5yYWRpdXMo
KSwgc2hhZG93LT5jb2xvcigpKTsKICAgICAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7CiAgICAg
ICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKICAgICAgICAgfQpAQCAtOTcwLDcgKzk2
OSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKIAogICAgICAgICAvLyBUaGVzZSBkZWNvcmF0
aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlzdWFs
T3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygpCiAgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERl
Y29yYXRpb25VbmRlcmxpbmUpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3Io
dW5kZXJsaW5lQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcih1bmRlcmxpbmVDb2xvcik7CiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0
eWxlKHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKHVuZGVybGluZVN0eWxlKSk7CiAg
ICAgICAgICAgICBjb25zdCBpbnQgdW5kZXJsaW5lT2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9m
ZnNldChsaW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS5mb250TWV0
cmljcygpLCB0aGlzLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7CiAKQEAgLTk5NCw3ICs5OTMs
NyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lQ29sb3IsIGNvbG9yU3BhY2UpOwor
ICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihvdmVybGluZUNvbG9yKTsKICAgICAg
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tl
U3R5bGUob3ZlcmxpbmVTdHlsZSkpOwogICAgICAgICAgICAgc3dpdGNoIChvdmVybGluZVN0eWxl
KSB7CiAgICAgICAgICAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5OiB7CkBAIC0xMDE1
LDcgKzEwMTQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdo
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoQ29sb3Is
IGNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihsaW5ldGhy
b3VnaENvbG9yKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29y
YXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUobGluZXRocm91Z2hTdHlsZSkpOwogICAgICAgICAgICAg
c3dpdGNoIChsaW5ldGhyb3VnaFN0eWxlKSB7CiAgICAgICAgICAgICBjYXNlIFRleHREZWNvcmF0
aW9uU3R5bGVXYXZ5OiB7CkBAIC0xMTI3LDcgKzExMjYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRQbwogCiAgICAgQ29sb3IgY29sb3IgPSBtYXJrZXIuYWN0aXZlTWF0Y2goKSA/IHJlbmRlcmVy
KCkudGhlbWUoKS5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDogcmVu
ZGVyZXIoKS50aGVtZSgpLnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3Io
KTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0g
ICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRh
dGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IpKTsgLy8gRG9u
J3QgZHJhdyB0ZXh0IGF0IGFsbCEKIAogICAgIC8vIFVzZSBzYW1lIHkgcG9zaXRpb25pbmcgYW5k
IGhlaWdodCBhcyBmb3Igc2VsZWN0aW9uLCBzbyB0aGF0IHdoZW4gdGhlIHNlbGVjdGlvbiBhbmQg
dGhpcyBoaWdobGlnaHQgYXJlIG9uCiAgICAgLy8gdGhlIHNhbWUgd29yZCB0aGVyZSBhcmUgbm8g
cGllY2VzIHN0aWNraW5nIG91dC4KQEAgLTExNDIsNyArMTE0MSw3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFBvCiAgICAgaWYgKHNlbGVjdGlvblJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3Jp
dGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJl
Y3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCksIHJ1bi5sdHIoKSksIGNvbG9yKTsKIH0KICAgICAKIHZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnREb2N1bWVudE1hcmtlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGJvb2wgYmFja2dyb3VuZCkKQEAgLTEyNjEsNyArMTI2MCw3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsCiAgICAgc3RhcnQgKz0gMTsKICAgICB3aWR0aCAtPSAyOwogCi0g
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUuY29sb3IsIHJlbmRlcmVyKCkuc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5l
LmNvbG9yKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lVGhpY2tuZXNzKTsK
ICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBz
dGFydCwgYm94T3JpZ2luLnkoKSArIGxvZ2ljYWxIZWlnaHQoKSAtIGxpbmVUaGlja25lc3MpLCB3
aWR0aCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLnByaW50aW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNzMxYTBhMTU2NzY1ZTBhNjYzZDg4MTk2
NmQ3YTljMWFlODZiMTdhYS4uOTNjNzA2YzA3MDQ1YmI2YmI5ZTU0Yzg5NWM2NWQwMzY5NjFmNWRk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xOTczLDcg
KzE5NzMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcChSZW5k
ZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQbwogCiAgICAgTGF5b3V0UmVjdCBnYXBS
ZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2lj
YWxQb3NpdGlvbiwgTGF5b3V0UmVjdChsb2dpY2FsTGVmdCwgbG9naWNhbFRvcCwgbG9naWNhbFdp
ZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJ
bmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBk
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5m
aWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICByZXR1cm4g
Z2FwUmVjdDsKIH0KIApAQCAtMTk5MCw3ICsxOTkwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9j
azo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3Qg
TGEKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5
c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qocm9vdEJsb2Nr
TG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCwg
bG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIExh
eW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9j
ayYgcm9vdEJsb2NrLCBjb25zdCBMCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290Qmxv
Y2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBM
YXlvdXRSZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9wLCByb290
QmxvY2tMb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQot
ICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDJlMGM3NjI2NDQyYzIwYmU0N2Ri
NzhiYzdlZjFiMTA3OWZkYjM1NmUuLjM1NzNjMTNjOGEzMWQxZDQ4YTY0N2M5OTY1ZmI3MzM5Zjdj
YzVlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNTQ1LDcg
KzE1NDUsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRDbGlwcGluZ01hc2soUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludAogICAgICAgICByZXR1cm47CiAKICAg
ICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChwYWludFJl
Y3QpLCBDb2xvcjo6YmxhY2ssIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIENvbG9yOjpibGFj
ayk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGQ2OWMyN2I0
MjQ3MmM4NDlkMThiNWZiZjQwOWI5Mjc1ZjFkYjZmZjAuLjgzOGRhODU0Nzg3ZmJhMjYyMDc3YjM1
NDc1NjJjZTY1MTdmYjAyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNTg5LDkgKzU4OSw5IEBAIHN0YXRpYyB2b2lkIGFw
cGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRl
clN0eWxlKiBzCiAKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGJveFNoYWRvdy0+eCgpLCBi
b3hTaGFkb3ctPnkoKSk7CiAgICAgaWYgKCFib3hTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkp
Ci0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRp
dXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAg
Y29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hT
aGFkb3ctPmNvbG9yKCkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFk
b3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCks
IHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhz
aGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSk7CiB9
CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KElt
YWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0IEludFJlY3QmIG1hc2tSZWN0LCBJbmxpbmVGbG93
Qm94KiBib3gsIGNvbnN0IExheW91dFJlY3QmIHNjcm9sbGVkUGFpbnRSZWN0KQpAQCAtNjgwLDE1
ICs2ODAsMTUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIEZsb2F0Um91
bmRlZFJlY3QgcGl4ZWxTbmFwcGVkQm9yZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0
ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBi
b3hTaXplLAogICAgICAgICAgICAgICAgIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRn
ZSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkQm9yZGVyLmlzUmVuZGVyYWJsZSgpKQotICAg
ICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlciwg
YmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlciwgYmdDb2xvcik7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgICAgICAg
ICBjbGlwUm91bmRlZElubmVyUmVjdChjb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0LCBwaXhlbFNu
YXBwZWRCb3JkZXIpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFw
cGVkQm9yZGVyLnJlY3QoKSwgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLnJlY3QoKSwgYmdD
b2xvcik7CiAgICAgICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBw
ZWRSZWN0LCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IpOwogCiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC04MTcsMTAgKzgxNywxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgICAgICAgICAgICAgIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29sb3IuYWxwaGEoKSkK
ICAgICAgICAgICAgICAgICAgICAgYmFzZUNvbG9yID0gYmFzZUNvbG9yLmJsZW5kKGJnQ29sb3Ip
OwogCi0gICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBh
aW50aW5nLCBiYXNlQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBDb21wb3NpdGVDb3B5KTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRp
bmcsIGJhc2VDb2xvciwgQ29tcG9zaXRlQ29weSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFi
YXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKSB7CiAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uID0gc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID8gQ29tcG9z
aXRlQ29weSA6IGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiZ0NvbG9yLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgb3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIG9wZXJhdGlvbik7CiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHNob3VsZENsZWFyQmFja2dyb3VuZCkKICAgICAgICAgICAg
ICAgICBjb250ZXh0LmNsZWFyUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nKTsKICAgICAg
ICAgfQpAQCAtODM1LDEyICs4MzUsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAg
ICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291
cmNlT3ZlciA/IGJnTGF5ZXItPmNvbXBvc2l0ZSgpIDogb3A7CiAgICAgICAgICAgICBjb250ZXh0
LnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1
bWluYW5jZSk7CiAgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxk
UGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdlLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxl
U2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9t
ZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFj
ZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5k
TW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxp
bmcpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRy
eS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdl
b21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKG1hc2tJbWFnZSAmJiBiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsK
LSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbWFza0ltYWdlLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGlu
YXRpb25Jbik7CiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICB9
CiB9CkBAIC0xNjkxLDcgKzE2OTEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAg
ICAgICAgICAgcGF0aC5hZGRSZWN0KHBpeGVsU25hcHBlZElubmVyQm9yZGVyLnJlY3QoKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShSVUxF
X0VWRU5PREQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihlZGdl
c1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVFZGdl
XS5jb2xvcigpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSAKQEAgLTE3MDgsNyArMTcwOCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5m
bywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfTk9OWkVSTyk7Ci0gICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCkpOwogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0xNzUyLDcgKzE3NTIsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94
U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBET1RURUQ6CiAgICAgY2FzZSBEQVNIRUQ6IHsKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogCiAgICAgICAg
IC8vIFRoZSBzdHJva2UgaXMgZG91YmxlZCBoZXJlIGJlY2F1c2UgdGhlIHByb3ZpZGVkIHBhdGgg
aXMgdGhlIAogICAgICAgICAvLyBvdXRzaWRlIGVkZ2Ugb2YgdGhlIGJvcmRlciBzbyBoYWxmIHRo
ZSBzdHJva2UgaXMgY2xpcHBlZCBvZmYuIApAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5
bGUoTm9TdHJva2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xv
cik7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
Ym9yZGVyUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiB9CiAKQEAgLTIy
NjUsOSArMjI2NSw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93
KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICBmaWxs
UmVjdC5tb3ZlKGV4dHJhT2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNXZWJr
aXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hh
ZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAg
ICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25h
cHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAg
ICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVs
U25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMjI4
NSwxMiArMjI4NSwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRv
dyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAg
IGluZmx1ZW5jZVJlY3QuZXhwYW5kUmFkaWkoMiAqIHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hh
ZG93U3ByZWFkKTsKIAogICAgICAgICAgICAgICAgIGlmIChhbGxDb3JuZXJzQ2xpcHBlZE91dChp
bmZsdWVuY2VSZWN0LCBpbmZvLnJlY3QpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVs
U25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrKTsKICAgICAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuZXhwYW5kUmFk
aWkoc2hhZG93U3ByZWFkKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwaXhlbFNuYXBwZWRG
aWxsUmVjdC5pc1JlbmRlcmFibGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsU25h
cHBlZEZpbGxSZWN0LmFkanVzdFJhZGlpKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHN0eWxl
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRS
ZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJveCBp
cyBvcGFxdWUsIGl0IGlzIHVubmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVyLCBkb2lu
ZyBzbyBzYXZlcyB0aW1lCkBAIC0yMzA3LDcgKzIzMDcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91
dFJlYwogCiAgICAgICAgICAgICAgICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwT3V0KHJlY3RUb0NsaXBPdXQucmVjdCgpKTsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJl
Y3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6Ymxh
Y2spOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSW5z
ZXQgc2hhZG93LgpAQCAtMjMxNyw5ICsyMzE3LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMK
IAogICAgICAgICAgICAgaWYgKHBpeGVsU25hcHBlZEhvbGVSZWN0LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QsIHNoYWRvd0NvbG9y
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxS
b3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LCBzaGFkb3dDb2xvcik7CiAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVs
U25hcHBlZEJvcmRlclJlY3QucmVjdCgpLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3Jk
ZXJSZWN0LnJlY3QoKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCkBAIC0yMzU2LDExICsyMzU2LDExIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UmVjCiAgICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAKICAgICAg
ICAgICAgIGlmIChzaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgICAgICAgICAg
Y29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRv
d0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0
TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFk
aXVzLCBzaGFkb3dDb2xvcik7CiAKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUocGl4ZWxTbmFwcGVkT3V0ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwg
ZmlsbENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShwaXhlbFNuYXBwZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJv
dW5kZWRIb2xlLCBmaWxsQ29sb3IpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IGI1M2YyYWY0
ZmVlNWRiZjFmMzkwOGQ4NDIzYjQzZWE5NTQxNTI0ODEuLjVjNjZiNzc2YzY5YjlkMzM2NjM4NmFh
NWI3NTU4NjkyNjE3MWE5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEzMCwxMCArMTMwLDEwIEBAIHZvaWQgUmVuZGVyRGV0
YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihjb2xvcik7CiAKICAgICBib3hPcmlnaW4u
bW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdp
bikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGU3
MDAzOGU5MmY2YzdiNDYxZmMwNDlhZDNhMzNhYWRmMWM3ZTExZWEuLjhjMmVhMDhmNzFkZTY5ZjJk
NDhlNTFhZmNjMzRmY2M0NDAyOWU2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKQEAgLTE4MjAsNyArMTgyMCw2IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGCiAgICAgaWYgKGJvcmRlclN0eWxlID09IERPVUJMRSAmJiAodGhpY2tuZXNzICogZGV2aWNl
U2NhbGVGYWN0b3IpIDwgMykKICAgICAgICAgYm9yZGVyU3R5bGUgPSBTT0xJRDsKIAotICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAgICAgc3dpdGNoIChib3Jk
ZXJTdHlsZSkgewogICAgIGNhc2UgQk5PTkU6CiAgICAgY2FzZSBCSElEREVOOgpAQCAtMTgzMCw3
ICsxODI5LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgYm9vbCB3YXNBbnRp
YWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKICAgICAgICAgU3Ry
b2tlU3R5bGUgb2xkU3Ryb2tlU3R5bGUgPSBncmFwaGljc0NvbnRleHQuc3Ryb2tlU3R5bGUoKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhhbnRpYWxpYXMpOwot
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7
CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERB
U0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0cm9rZSk7CiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3TGluZShyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5b3V0UG9pbnQoeDEsIHkx
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5b3V0UG9p
bnQoeDIsIHkyKSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKQEAgLTE4NDUsNyArMTg0NCw3IEBAIHZv
aWQgUmVuZGVyRWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGCiAgICAgICAgIGlmICghYWRqYWNlbnRXaWR0aDEgJiYgIWFk
amFjZW50V2lkdGgyKSB7CiAgICAgICAgICAgICBTdHJva2VTdHlsZSBvbGRTdHJva2VTdHlsZSA9
IGdyYXBoaWNzQ29udGV4dC5zdHJva2VTdHlsZSgpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgICAgICAgICAgYm9vbCB3
YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoYW50aWFsaWFzKTsKQEAg
LTE5OTYsNyArMTk5NSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hTaWRl
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGCiAgICAgICAgICAgICAv
LyBUdXJuIG9mZiBhbnRpYWxpYXNpbmcgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGRyYXdDb252
ZXhQb2x5Z29uKCk7CiAgICAgICAgICAgICAvLyB0aGlzIG1hdHRlcnMgZm9yIHJlY3RzIGluIHRy
YW5zZm9ybWVkIGNvbnRleHRzLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICAgICAgICAgIGJvb2wgd2FzQW50aWFsaWFzZWQg
PSBncmFwaGljc0NvbnRleHQuc2hvdWxkQW50aWFsaWFzKCk7CiAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7CiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MSwgeTEsIHgyIC0g
eDEsIHkyIC0geTEsIGRldmljZVNjYWxlRmFjdG9yKSk7CkBAIC0yMDQwLDcgKzIwMzksNyBAQCB2
b2lkIFJlbmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgRgogICAgICAgICB9CiAKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
Q29udmV4UG9seWdvbig0LCBxdWFkLCBhbnRpYWxpYXMpOwogICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U3Ryb2tlU3R5bGUob2xkU3Ryb2tlU3R5bGUpOwogICAgICAgICBicmVhazsKQEAgLTIx
MDgsNyArMjEwNyw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlCiAgICAgICAgICAgICBwYXRo
LmFkZFJlY3Qob3V0ZXIpOwogICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGlubmVyKTsKICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihvdXRsaW5lQ29sb3IsIHN0eWxlVG9V
c2UuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3Iob3V0bGluZUNvbG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChw
YXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggYTNmODg5MWZkOTk3
ZThjMmNhODZmNTBjYjVmZmY2YzFiMDA1N2VkOS4uMTM2ZTEwYjRhMjliMWRlZTdkZWEzMjczNTY2
MjQ5NTNjMTBhMGQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXQKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0
aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29s
b3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25E
ZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFn
ZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludAogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOwogICAgIGNvbnRleHQuY2xpcChjb250ZW50UmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IobV91bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklzUHJlc3NlZCA/IHJlcGxhY2VtZW50
VGV4dFJvdW5kZWRSZWN0UHJlc3NlZENvbG9yKCkgOiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVj
dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29s
b3IoKSk7CiAgICAgY29udGV4dC5maWxsUGF0aChiYWNrZ3JvdW5kKTsKIAogICAgIFBhdGggc3Ry
b2tlUGF0aDsKQEAgLTMyMCwyMSArMzIwLDIxIEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAg
ICAgc3Ryb2tlUmVjdC5pbmZsYXRlKDEpOwogICAgIHN0cm9rZVBhdGguYWRkUm91bmRlZFJlY3Qo
c3Ryb2tlUmVjdCwgRmxvYXRTaXplKHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzICsg
MSwgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAxKSk7CiAKLSAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5hdmFpbGFibGVQbHVn
aW5Cb3JkZXJDb2xvcigpKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAg
ICBjb250ZXh0LnN0cm9rZVBhdGgoc3Ryb2tlUGF0aCk7CiAKICAgICBjb25zdCBGb250TWV0cmlj
cyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CiAgICAgZmxvYXQgbGFiZWxYID0g
cm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9jYXRpb24oKS54KCkgKyByZXBsYWNlbWVudFRl
eHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luKTsKICAgICBmbG9hdCBsYWJlbFkgPSByb3VuZGYo
cmVwbGFjZW1lbnRUZXh0UmVjdC5sb2NhdGlvbigpLnkoKSArIChyZXBsYWNlbWVudFRleHRSZWN0
LnNpemUoKS5oZWlnaHQoKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgKyBmb250TWV0cmlj
cy5hc2NlbnQoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0VG9wVGV4dE1hcmdpbik7Ci0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENv
bG9yKCkpOwogICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgRmxvYXRQb2ludChs
YWJlbFgsIGxhYmVsWSkpOwogCiAgICAgaWYgKHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2Fn
ZUJlQnV0dG9uKGRvY3VtZW50KCksIG1fcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pKSB7CiAg
ICAgICAgIGFycm93UmVjdC5pbmZsYXRlKC1yZXBsYWNlbWVudEFycm93Q2lyY2xlUGFkZGluZyk7
CiAKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMCk7Ci0gICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0
Q29sb3IoKSk7CiAgICAgICAgIGNvbnRleHQuZmlsbEVsbGlwc2UoYXJyb3dSZWN0KTsKIAogICAg
ICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVhcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cAppbmRleCA2NGVjYWNiMDZlY2VlOTMwZjI1YzY2NmIxNDllZDg3ZWU1NmQzYTYxLi5mZDExM2M0
ZjhlMjIwOTNhMTBjYTY1YWZkMjRiOGUyN2E3ZjM4YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTE2Myw3ICsx
NjMsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB0ZXh0WSA9IGJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jp
em9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIAotICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgICAgIAogICAgICAgICAvLyBEcmF3IHRoZSBmaWxlbmFt
ZQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVu
LCBJbnRQb2ludChyb3VuZFRvSW50KHRleHRYKSwgcm91bmRUb0ludCh0ZXh0WSkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDJmODJkY2IxNGIz
OTQ3YzgzYzY4NDk5Nzc0ZTZkOGQyMmZhODBhNmEuLjYzY2E2ZGFkZjc4ZjE4MWFmYzQ2Njk5ODI0
YmE3MDJlMzBjNzM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcApAQCAtOTEsMTQgKzkxLDEzIEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50Q29s
dW1uQm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0CiAgICAg
CiAgICAgLy8gRmlsbCBmaXJzdC4KICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dCgpOwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlKCkuY29s
b3JTcGFjZSgpOwotICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVt
ZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNl
KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhh
c0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSk7CiAgICAgCiAgICAgLy8gTm93
IHN0cm9rZSB0aGUgZWRnZXMgYnV0IG9ubHkgaWYgd2UgaGF2ZSBlbm91Z2ggcm9vbSB0byBwYWlu
dCBib3RoIGVkZ2VzIHdpdGggYSBsaXR0bGUKICAgICAvLyBiaXQgb2YgdGhlIGZpbGwgY29sb3Ig
c2hvd2luZyB0aHJvdWdoLgogICAgIGlmIChib3JkZXJSZWN0LndpZHRoKCkgPj0gMykgewotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRT
aXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwot
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC5tYXhY
KCkgLSAxLCBib3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyRW5k
RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJl
Y3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0
YXJ0RWRnZUNvbG9yKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9p
bnQoYm9yZGVyUmVjdC5tYXhYKCkgLSAxLCBib3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwgaGVp
Z2h0KCkpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCkpOwogICAgIH0KIH0KIApAQCAtMTExLDE0ICsx
MTAsMTMgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIoY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIGIKICAgICAKICAgICAvLyBGaWxsIGZpcnN0
LgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xvclNwYWNlKCk7Ci0gICAgY29u
dGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xv
cigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmls
bFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6
IGJvcmRlckZpbGxDb2xvcigpKTsKIAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBv
bmx5IGlmIHdlIGhhdmUgZW5vdWdoIHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0
dGxlCiAgICAgLy8gYml0IG9mIHRoZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBp
ZiAoYm9yZGVyUmVjdC5oZWlnaHQoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
SW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUod2lkdGgoKSwgMSkpLCBib3Jk
ZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVj
dChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEp
LCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2Up
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigp
LCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSk7CisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0LngoKSwgYm9yZGVy
UmVjdC5tYXhZKCkgLSAxKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlckVuZEVkZ2VDb2xv
cigpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CmluZGV4IDFkNDc4YmY2ZmZjODdmZWZmNDc1NTc0MTUyNTI0ZmIxZGM4NzJkYjcuLjE0YzdhMDIz
MDJjMTM2YmY2MDc3NWQ1OTU1ZWZhZjU3Mzg1NTFhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzkyLDggKzM5Miw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mCiAKICAgICAgICAgICAgIC8vIERyYXcgYW4gb3V0bGluZSByZWN0IHdoZXJlIHRoZSBp
bWFnZSBzaG91bGQgYmUuCiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0
R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXkpOworICAgICAgICAg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgICAg
IGNvbnRleHQuZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50
T2Zmc2V0LngoKSArIGxlZnRCb3JkZXIgKyBsZWZ0UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BC
b3JkZXIgKyB0b3BQYWQsIGNXaWR0aCwgY0hlaWdodCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9y
ZGVyV2lkdGgpOwogCiAgICAgICAgICAgICBib29sIGVycm9yUGljdHVyZURyYXduID0gZmFsc2U7
CkBAIC00MjQsMTMgKzQyNCwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lmIEVOQUJM
RShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNj
cmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24o
KSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFp
bnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCAr
IGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBkb2N1bWVudCgpLmRpc3BsYXlTdHJpbmdN
b2RpZmllZEJ5RW5jb2RpbmcobV9hbHRUZXh0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsK
ICAgICAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENh
c2NhZGUoKTsKICAgICAgICAgICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3Mg
PSBmb250LmZvbnRNZXRyaWNzKCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQg
PSBmb250TWV0cmljcy5hc2NlbnQoKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFJlbmRlcklt
YWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50
YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3Jp
ZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgcmVjdCwKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCByZWN0LAog
ICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
Tm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZmUxNmI3
Mjc2YTViYzc0MDljMDI5MWE5NmFiYzA2OWM4ZjdhNGVhLi42ZTIxN2E3MWJmZjQ5M2Y4N2MzOTMz
MzQ5NjAwMGFkMGVjNTRhMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKQEAgLTE4MjEsNyArMTgyMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQCiAjZW5k
aWYKIAogI2lmZGVmIFJFVkVBTF9UUkFOU1BBUkVOQ1lfTEFZRVJTCi0gICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjVmLCAwLjJmKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBm
LCAwLjVmLCAwLjJmKSk7CiAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZENs
aXBSZWN0KTsKICNlbmRpZgogICAgIH0KQEAgLTM2MDgsOSArMzYwOCw2IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9scyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFBvaW50CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQogewotICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7
Ci0gICAgQVNTRVJUKGJveCk7Ci0KICAgICBJbnRSZWN0IGFic1JlY3QgPSBzY3JvbGxDb3JuZXJS
ZWN0KCk7CiAgICAgYWJzUmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIGlmICghYWJzUmVj
dC5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQpAQCAtMzYyOSw3ICszNjI2LDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRQb2ludCYgcGEKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhaW50IHdoaXRlIGlmIHdl
IGhhdmUgb3ZlcmxheSBzY3JvbGxiYXJzLCBzaW5jZSB3ZSBuZWVkCiAgICAgLy8gdG8gc2VlIHdo
YXQgaXMgYmVoaW5kIGl0LgogICAgIGlmICghaGFzT3ZlcmxheVNjcm9sbGJhcnMoKSkKLSAgICAg
ICAgY29udGV4dC5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJveC0+c3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGFic1JlY3QsIENvbG9yOjp3
aGl0ZSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJS
ZWN0KQpAQCAtMzY1Miw3ICszNjQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3Jt
UmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXpl
clNpemUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3Qu
aGVpZ2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIGNvbnRleHQu
c2NhbGUoRmxvYXRTaXplKC0xLjAsIDEuMCkpOwogICAgICAgICBpZiAocmVzaXplQ29ybmVySW1h
Z2UpCi0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIHJl
bmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNv
cm5lclJlc2l6ZXJTaXplKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXpl
Q29ybmVySW1hZ2UsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6ZXJTaXplKSk7
CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MzY2MCw3ICszNjU3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplcklt
YWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICBpZiAoIXJlc2l6
ZUNvcm5lckltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhY
TWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQuZHJh
d0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2Us
IGltYWdlUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3Qg
TGF5b3V0UmVjdCYgZGFtYWdlUmVjdCkKQEAgLTM2OTUsOSArMzY5Miw5IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91
dFBvaW50JiBwYWluCiAgICAgICAgIGNvbnRleHQuY2xpcChhYnNSZWN0KTsKICAgICAgICAgTGF5
b3V0UmVjdCBsYXJnZXJDb3JuZXIgPSBhYnNSZWN0OwogICAgICAgICBsYXJnZXJDb3JuZXIuc2V0
U2l6ZShMYXlvdXRTaXplKGxhcmdlckNvcm5lci53aWR0aCgpICsgTGF5b3V0VW5pdDo6ZnJvbVBp
eGVsKDEpLCBsYXJnZXJDb3JuZXIuaGVpZ2h0KCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSkp
KTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywgMjE3
LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSkpOwogICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgY29udGV4dC5kcmF3UmVj
dChzbmFwcGVkSW50UmVjdChsYXJnZXJDb3JuZXIpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZTU3M2Q1MDA0ZmI1YjU5MTA5MjAz
MTY5MDQyNzQwMDAwYjYxM2RhNS4uNTUzMTcwYWRjNDQxZmQ5OTUzYjg4OTRhYTRjZjNmODdiYjI3
ODI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAt
Mzk2LDggKzM5Niw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgICAgICB0ZXh0
Q29sb3IgPSB0aGVtZSgpLmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
OwogICAgIH0KIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS5jb2xvclNw
YWNlKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29s
b3IpOwogCiAgICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uLCBpdGVtU3R5bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVu
aWNvZGVCaWRpKCkpLCB0cnVlLCBUZXh0UnVuOjpOb1JvdW5kaW5nKTsKICAgICBGb250Q2FzY2Fk
ZSBpdGVtRm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKQEAgLTQzMiwxMCArNDMxLDkgQEAg
dm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYKIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgZm9y
IHRoaXMgbGlzdCBib3ggaXRlbQogICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0eSgpICE9IEhJ
RERFTikgewotICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JT
cGFjZSgpOwogICAgICAgICBMYXlvdXRSZWN0IGl0ZW1SZWN0ID0gaXRlbUJvdW5kaW5nQm94UmVj
dChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKICAgICAgICAgaXRlbVJlY3QuaW50ZXJzZWN0KGNv
bnRyb2xDbGlwUmVjdChwYWludE9mZnNldCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yLCBjb2xvclNwYWNl
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChp
dGVtUmVjdCksIGJhY2tDb2xvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggZjZlMzQ2ZDM3YjA1YmE0NmE5ZjY2MDgw
NjIwNWI0MjUxYzdiMzUxOS4uNDc2ZTljNDcyYjExNDkwZmQ2MjZkZGNjOTg3OTI3OWY4MWUzMDNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApA
QCAtMTE5OCwxMSArMTE5OCwxMSBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgaWYg
KGlzSW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBtYXJrZXJJbWFnZSA9IG1f
aW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXplKCkpKQotICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoKm1hcmtlckltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwgbWFya2VyKTsKICAgICAg
ICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAg
TGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBz
ZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChz
bmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVj
dChzbmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMTAsMTQg
KzEyMTAsMTQgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBpZiAoc2VsZWN0aW9uU3Rh
dGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxv
Y2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwot
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJ
dGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0
ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAgIGNvbnN0IENvbG9y
IGNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsK
LSAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAgY29udGV4dC5zZXRTdHJv
a2VTdHlsZShTb2xpZFN0cm9rZSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4w
Zik7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7CiAKICAgICBFTGlzdFN0eWxlVHlw
ZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBA
IC0xMjI1LDcgKzEyMjUsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICAgICAg
Y29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3
RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNxdWFy
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDM0
YjU1ZjI5MjNkOTFhY2NkYjQxMjJlMTUwZGZkYWUyZDA3ZGFmMTIuLjg0ZDQ0YjEyNTI0ZDQ0MmVi
MDUwN2Q2ODEzY2NmZjgyOTQ5MjcyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCiAgICAgaWYgKGRyYXdTZWxlY3Rpb25UaW50KSB7CiAgICAgICAgIExheW91dFJlY3Qgc2Vs
ZWN0aW9uUGFpbnRpbmdSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbGVj
dGlvblBhaW50aW5nUmVjdC5tb3ZlQnkoYWRqdXN0ZWRQYWludE9mZnNldCk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUGFpbnRp
bmdSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChz
ZWxlY3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmNwcAppbmRleCBhZjk2MTE4MGFkZWUxNWVkYWQyYmE3YjZmOWZmMmRjMzhhOGM2ODg2Li41
NGZlYTBjMTZlZThjMjk1MDkzNTY0NDY2YjkwNmJiN2Y0MDAxZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEyOCw3ICsx
MjgsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhcgogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
LgotICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3
aGl0ZSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5jcHAKaW5kZXggZWM0MmM2MmM4MTI3Y2VkMzhlNTYxNjg0ZDg3ZThiNTA5ZjE5YjNjNS4uZThi
OGYwZmI0YmYzNWY3ODA2YTU1NTU5ZmYxZjViZjFjYjdjNDdkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICNpZiBFTkFCTEUoQ1NTX0lNQUdF
X09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRh
dGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlT
Y2FsaW5nKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNj
YWxpbmcpKTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpn
ZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29y
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMWFh
ZjM2OTBlZTliN2RmMTc3YzEwNzE3YmY5MThmZTIzMTU5ODA5YS4uZTVhODVjZjE0YWMyY2YwZjZk
MTkxMTYzYzE0YjQ2ZGJmMGM3MGJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNs
aWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAog
ICAgIH0KICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9u
cygpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8u
Y29udGV4dCgpKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBOb2RlKiBub2RlID0gb3B0aW9ucy0+aXRlbShpKTsgaSsrKSB7CiAgICAgICAg
IEFTU0VSVChpczxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUpKTsKICAgICAgICAgSFRNTE9wdGlv
bkVsZW1lbnQmIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm5v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDFi
ZjIwNTI1ZWUwY2MzNDAzOTgzODI1MDdlODkzNmFkNTU0NDE0OGMuLjBkNWI1ZWY2ODhlMjRlMzEz
ZGU2MDk4ZGMzYWRiNzYxOTAwZjE0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0YXRpYyBDR0Z1bmN0aW9uUmVm
IGdldFNoYXJlZEZ1bmN0aW9uUmVmKElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBJbnRlcnBvbGF0
aW9uCiAKIHN0YXRpYyB2b2lkIGRyYXdBeGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0
LCBJT1NHcmFkaWVudFJlZiBncmFkaWVudCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwg
Y29uc3QgRmxvYXRQb2ludCYgc3RvcFBvaW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24p
CiB7Ci0gICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFk
aW5nQ3JlYXRlQXhpYWwoZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdG9w
UG9pbnQsIGdldFNoYXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFs
c2UsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0
Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoc1JHQkNvbG9yU3BhY2VSZWYoKSwgc3RhcnRQb2ludCwg
c3RvcFBvaW50LCBnZXRTaGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiks
IGZhbHNlLCBmYWxzZSkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHNoYWRp
bmcuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3UmFkaWFsR3JhZGllbnQoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBz
dGFydFBvaW50LCBmbG9hdCBzdGFydFJhZGl1cywgY29uc3QgRmxvYXRQb2ludCYgc3RvcFBvaW50
LCBmbG9hdCBzdG9wUmFkaXVzLCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCiB7Ci0gICAg
UmV0YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRl
UmFkaWFsKGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwgc3RhcnRQb2ludCwgc3RhcnRSYWRpdXMs
IHN0b3BQb2ludCwgc3RvcFJhZGl1cywgZ2V0U2hhcmVkRnVuY3Rpb25SZWYoZ3JhZGllbnQsIGlu
dGVycG9sYXRpb24pLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVm
PiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoZGV2aWNlUkdCQ29sb3JT
cGFjZVJlZigpIC8qIEZJWE1FICovLCBzdGFydFBvaW50LCBzdGFydFJhZGl1cywgc3RvcFBvaW50
LCBzdG9wUmFkaXVzLCBnZXRTaGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlv
biksIGZhbHNlLCBmYWxzZSkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHNo
YWRpbmcuZ2V0KCkpOwogfQogCkBAIC0zOTIsMTIgKzM5MiwxMiBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNv
bnN0IFBhaQogICAgICAgICB9OwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9y
KDAuMGYsIDAuMGYsIDAuMGYsIDAuN2YpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmRyYXdKb2luZWRMaW5lcyhzaGFkb3csIDMsIHRydWUsIGtDR0xpbmVDYXBTcXVhcmUpOwogCiAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6bWluKGNs
aXAud2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwg
MjQwIC8gMjU1LjBmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8gMjU1
LjBmKSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMobGlu
ZSwgMywgdHJ1ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gs
IGNvbnN0IFBhaW50SQogICAgICAgICBjbGlwLmluZmxhdGVYKC1jbGlwLndpZHRoKCkgKiBJbm5l
ckludmVyc2VSYXRpbyk7CiAgICAgICAgIGNsaXAuaW5mbGF0ZVkoLWNsaXAuaGVpZ2h0KCkgKiBJ
bm5lckludmVyc2VSYXRpbyk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFp
c2VkRWxsaXBzZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRv
d0NvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLmRyYXdSYWlzZWRFbGxpcHNlKGNsaXAsIENvbG9yOjp3aGl0ZSwgc2hhZG93Q29sb3IoKSk7
CiAKICAgICAgICAgRmxvYXRTaXplIHJhZGl1cyhjbGlwLndpZHRoKCkgLyAyLjBmLCBjbGlwLmhl
aWdodCgpIC8gMi4wZik7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVz
KSk7CkBAIC02NDgsNyArNjQ4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICAg
ICAgRmxvYXRTaXplKDAsIDApLCBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVy
VG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmln
aHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhl
aWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpLAogICAgICAg
ICAgICAgRmxvYXRTaXplKDAsIDApLCBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9y
ZGVyUmlnaHRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCgpLCByZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRo
KCkpKSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChidXR0b25DbGlw
LCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciks
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJl
Y3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3IpKTsKIAogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdy
YWRpZW50V2l0aE5hbWUoaXNGb2N1c2VkKGJveCkgJiYgIWlzUmVhZE9ubHlDb250cm9sKGJveCkg
PyBDb25jYXZlR3JhZGllbnQgOiBDb252ZXhHcmFkaWVudCksIGJ1dHRvbkNsaXAubG9jYXRpb24o
KSwgRmxvYXRQb2ludChidXR0b25DbGlwLngoKSwgYnV0dG9uQ2xpcC5tYXhZKCkpLCBMaW5lYXJJ
bnRlcnBvbGF0aW9uKTsKICAgICB9CkBAIC02NjMsNyArNjYzLDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94
LCBjb25zdAogICAgICAgICBGbG9hdFJlY3QgZWxsaXBzZShidXR0b25DbGlwLngoKSArIChidXR0
b25DbGlwLndpZHRoKCkgLSBjb3VudCAqIChzaXplICsgcGFkZGluZykgKyBwYWRkaW5nKSAvIDIu
MCwgYnV0dG9uQ2xpcC5tYXhZKCkgLSAxMC4wLCBzaXplLCBzaXplKTsKIAogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjVmKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNl
KGVsbGlwc2UsIENvbG9yOjp3aGl0ZSwgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41ZikpOwog
ICAgICAgICAgICAgZWxsaXBzZS5tb3ZlKHNpemUgKyBwYWRkaW5nLCAwKTsKICAgICAgICAgfQog
ICAgIH0gIGVsc2UgewpAQCAtNjgyLDEyICs2ODIsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25z
dAogICAgICAgICBzaGFkb3dbMl0gPSBGbG9hdFBvaW50KGFycm93WzJdLngoKSwgYXJyb3dbMl0u
eSgpICsgMS4wZik7CiAKICAgICAgICAgZmxvYXQgb3BhY2l0eSA9IGlzUmVhZE9ubHlDb250cm9s
KGJveCkgPyAwLjIgOiAwLjU7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigwLjBm
LCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
b3BhY2l0eSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xv
cigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsKIAotICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CiAgICAgfQogCkBAIC03NzIsOSAr
NzcyLDkgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5k
ZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJgogCiAgICAgICAgIENHQ29udGV4dFJlZiBj
Z0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAg
ICBpZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9r
ZUNvbG9yKENvbG9yKDE3OCwgMTc4LCAxNzgpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgs
IDE3OCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dFN0cm9rZUNvbG9yKENvbG9yKDc2LCA3NiwgNzYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoNzYsIDc2
LCA3NikpOwogCiAgICAgICAgIFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiByb3VuZGVkUmVj
dFBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgICAgIENHUGF0aEFk
ZFJvdW5kZWRSZWN0KHJvdW5kZWRSZWN0UGF0aC5nZXQoKSwgMCwgdHJhY2tDbGlwLCBjb3JuZXJX
aWR0aCwgY29ybmVySGVpZ2h0KTsKQEAgLTg1OSw4ICs4NTksNyBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhk
LCAweDhkLCAweDhkKSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFk
aWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHJl
bmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yKDI1NSwgMjU1LCAyNTUpLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihDb2xvcigyNTUsIDI1NSwgMjU1KSk7CiAKICAgICBQYXRoIHRyYWNrUGF0aDsKICAgICBGbG9h
dFJlY3QgdHJhY2tSZWN0KHJlY3QueCgpICsgMC4yNSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIDAuMjUsIHJlY3Qud2lkdGgoKSAtIDAuNSwgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAwLjUpOwpA
QCAtMTAyNCw4ICsxMDIzLDggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2Fk
SWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKIAogICAgICAgICAv
LyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGljb24gd2l0
aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJhY2tncm91
bmRJbWFnZUNvbG9yID0gQ29sb3IoYnV0dG9uUmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpKTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5h
aWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBj
b3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91
bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJl
RnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXpl
KSwgcGljdHVyZUZyYW1lQ29sb3IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxS
ZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yKTsKICAgICAgICAgewogICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMihwYWludEluZm8u
Y29udGV4dCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwpAQCAtMTA0NSw3ICsxMDQ0LDcgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFIKICAgICB9CiAKICAgICAvLyBGb3JlZ3JvdW5kIHBpY3R1cmUg
ZnJhbWUgYW5kIGljb24uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBj
b3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6
ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9y
KTsKICAgICBpY29uLT5wYWludChwYWludEluZm8uY29udGV4dCgpLCB0aHVtYm5haWxSZWN0KTsK
IAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQppbmRleCA5MmFmMGNmNWFjNWE4M2Y4MGI3NjEwN2U0NWZlZmY2NmVkY2FmM2JkLi43
ZjhkYzI0MjE5MGY5ZTBkMDk2MTUzMTNmOGIyMjY3YzliZWFlMzlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xMTU2LDcgKzExNTYsNyBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyT2JqZWN0LCBjb25zdCBQYQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZs
b2F0U2l6ZSgtMSwgMSkpOwogICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0
LmxvY2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCpp
bWFnZUJ1ZmZlciwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51
TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGMKIAogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgp
KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHJlbmRlcmVyLnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCByZW5kZXJlci5zdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Io
cmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikp
OwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwogCiAg
ICAgRmxvYXRQb2ludCBhcnJvdzFbM107CkBAIC0xMzMwLDExICsxMzMwLDExIEBAIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJC
b3gmIHJlbmRlcmVyLCBjCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9m
IHRoZSBhcnJvd3MKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsgLy8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBsb29rcyBuaWNlciBpZiBp
dCBzdGF5cyB0aGluLgogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobGVmdFNl
cGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvcik7CiAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNl
cGFyYXRvciwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3Ip
OwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNl
cGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNw
YWNlLCBib3VuZHMubWF4WSgpKSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkxNCw3ICsxOTE0
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXko
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qu
d2lkdGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBwbHVnSW5S
ZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0
ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25lZFBs
dWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMjE4NCw3ICsyMTg0LDcgQEAgc3RhdGljIE5TQ29sb3IgKnRpdGxlVGV4dENvbG9yRm9yQXR0
YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIGlmIChhdHRh
Y2htZW50LnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7
CiAgICAgICAgIGlmIChhdHRhY2htZW50LmZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5k
QWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRD
b250cm9sVGV4dENvbG9yXTsgICAgCi0gICAgICAgIHJldHVybiAoTlNDb2xvciAqKWNhY2hlZENH
Q29sb3IoYXR0YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIHJldHVybiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNobWVu
dFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFtOU0NvbG9y
IGJsYWNrQ29sb3JdOwpAQCAtMjI5NCw3ICsyMjk0LDcgQEAgdm9pZCBBdHRhY2htZW50TGF5b3V0
OjpsYXlPdXRTdWJ0aXRsZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAg
IFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJRm9udEZv
ckxhbmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnRTaXpl
LCBsYW5ndWFnZSkpOwogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAewogICAg
ICAgICAoaWQpa0NURm9udEF0dHJpYnV0ZU5hbWU6IChpZClmb250LmdldCgpLAotICAgICAgICAo
aWQpa0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKE5TQ29sb3IgKiljYWNoZWRDR0Nv
bG9yKGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKQor
ICAgICAgICAoaWQpa0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKE5TQ29sb3IgKilj
YWNoZWRDR0NvbG9yKGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvcigpKQogICAgIH07CiAgICAg
UmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN1YnRpdGxlVGV4dCA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnN1YnRpdGxl
VGV4dCBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CiAgICAgc3VidGl0bGVMaW5lID0gYWRv
cHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5n
UmVmKWF0dHJpYnV0ZWRTdWJ0aXRsZVRleHQuZ2V0KCkpKTsKQEAgLTIzNTUsNyArMjM1NSw3IEBA
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0
dGFjaG1lbnQmLCBHcmFwaGljc0NvbnRlCiAgICAgaWYgKHBhaW50Qm9yZGVyKQogICAgICAgICBi
YWNrZ3JvdW5kUmVjdC5pbmZsYXRlKC1hdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcmRlclRoaWNr
bmVzcyk7CiAKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJh
Y2tncm91bmRSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShhdHRhY2htZW50SWNvbkJhY2tn
cm91bmRSYWRpdXMpKSwgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChiYWNrZ3JvdW5kUmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkoYXR0YWNobWVudEljb25C
YWNrZ3JvdW5kUmFkaXVzKSksIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZENvbG9yKCkpOwogCiAg
ICAgaWYgKHBhaW50Qm9yZGVyKSB7CiAgICAgICAgIEZsb2F0UmVjdCBib3JkZXJSZWN0ID0gbGF5
b3V0Lmljb25CYWNrZ3JvdW5kUmVjdDsKQEAgLTIzNjQsNyArMjM2NCw3IEBAIHN0YXRpYyB2b2lk
IHBhaW50QXR0YWNobWVudEljb25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmLCBH
cmFwaGljc0NvbnRlCiAgICAgICAgIEZsb2F0U2l6ZSBpY29uQmFja2dyb3VuZFJhZGl1c1NpemUo
YXR0YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVzLCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRS
YWRpdXMpOwogICAgICAgICBQYXRoIGJvcmRlclBhdGg7CiAgICAgICAgIGJvcmRlclBhdGguYWRk
Um91bmRlZFJlY3QoYm9yZGVyUmVjdCwgaWNvbkJhY2tncm91bmRSYWRpdXNTaXplKTsKLSAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFj
aG1lbnRJY29uQm9yZGVyQ29sb3IoKSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tu
ZXNzKGF0dGFjaG1lbnRJY29uU2VsZWN0aW9uQm9yZGVyVGhpY2tuZXNzKTsKICAgICAgICAgY29u
dGV4dC5zdHJva2VQYXRoKGJvcmRlclBhdGgpOwogICAgIH0KQEAgLTIzOTcsNyArMjM5Nyw3IEBA
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRpdGxlQmFja2dyb3VuZChjb25zdCBSZW5kZXJB
dHRhY2htZW50JiBhdHRhY2htZW50LCBHCiAgICAgZWxzZQogICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IgPSBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xvcigpOwogCi0gICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgUGF0aCBi
YWNrZ3JvdW5kUGF0aCA9IFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3Rz
KGJhY2tncm91bmRSZWN0cywgYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFJhZGl1cyk7CiAgICAg
Y29udGV4dC5maWxsUGF0aChiYWNrZ3JvdW5kUGF0aCk7CkBAIC0yNDQ3LDcgKzI0NDcsNyBAQCBz
dGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50
JiBhdHRhY2htZW50LCBHcmFwaGljcwogICAgIGJhY2tncm91bmRSZWN0LmluZmxhdGUoLWF0dGFj
aG1lbnRQcm9ncmVzc0JhckJvcmRlcldpZHRoIC8gMik7CiAKICAgICBGbG9hdFJvdW5kZWRSZWN0
IGJhY2tncm91bmRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkoYmFja2dyb3VuZFJlY3QuaGVpZ2h0KCkgLyAyKSk7Ci0gICAgY29udGV4dC5maWxsUm91
bmRlZFJlY3QoYmFja2dyb3VuZFJvdW5kZWRSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNr
Z3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91
bmRlZFJlY3QoYmFja2dyb3VuZFJvdW5kZWRSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNr
Z3JvdW5kQ29sb3IoKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgY2xpcFNhdmVyKGNvbnRleHQpOwpAQCAtMjQ1NywxMyArMjQ1NywxMyBAQCBzdGF0aWMgdm9p
ZCBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2ht
ZW50LCBHcmFwaGljcwogICAgICAgICBwcm9ncmVzc1JlY3Quc2V0V2lkdGgocHJvZ3Jlc3NSZWN0
LndpZHRoKCkgKiBwcm9ncmVzcyk7CiAgICAgICAgIHByb2dyZXNzUmVjdCA9IGVuY2xvc2VSZWN0
VG9EZXZpY2VQaXhlbHMocHJvZ3Jlc3NSZWN0LCBhdHRhY2htZW50LmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CiAKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChwcm9ncmVzc1JlY3Qs
IGF0dGFjaG1lbnRQcm9ncmVzc0JhckZpbGxDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgY29udGV4dC5maWxsUmVjdChwcm9ncmVzc1JlY3QsIGF0dGFjaG1lbnRQcm9ncmVz
c0JhckZpbGxDb2xvcigpKTsKICAgICB9CiAKICAgICBQYXRoIGJvcmRlclBhdGg7CiAgICAgZmxv
YXQgYm9yZGVyUmFkaXVzID0gYm9yZGVyUmVjdC5oZWlnaHQoKSAvIDI7CiAgICAgYm9yZGVyUGF0
aC5hZGRSb3VuZGVkUmVjdChib3JkZXJSZWN0LCBGbG9hdFNpemUoYm9yZGVyUmFkaXVzLCBib3Jk
ZXJSYWRpdXMpKTsKLSAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRQcm9ncmVz
c0JhckJvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3IoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IoKSk7CiAgICAgY29u
dGV4dC5zZXRTdHJva2VUaGlja25lc3MoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGgp
OwogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5MDI5NWNiMWFjOTVlNDA5YzQ0OWY5MDk1Yjkz
ZmQ4NmU0ZDcxZDU3Li4yZDE1NGRlMjE0MDc0ZTg5MjBjOTY2MjVhYzdhMmNhYzFkYmI0NTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01MTcsNyArNTE3LDcg
QEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgLy8gVGhpcyBhdm9pZHMgcGFpbnRpbmcgZ2Fy
YmFnZSBiZXR3ZWVuIGNvbHVtbnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4gZ2FwLgogICAgIGlmIChm
cmFtZVZpZXcoKS5wYWdpbmF0aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCAm
JiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJh
Y2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tn
cm91bmRDb2xvcigpKTsKIAogICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgcGFpbnRPZmZzZXQp
OwogfQpAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFpbnRCb3hEZWNvcmF0
aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICBp
ZiAoYmFja2dyb3VuZENvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yIHByZXZpb3VzT3BlcmF0b3IgPSBwYWludEluZm8uY29udGV4dCgpLmNvbXBvc2l0ZU9wZXJh
dGlvbigpOwogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSZWN0KHBhaW50SW5mby5yZWN0LCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJbmZv
LnJlY3QsIGJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsZWFyUmVjdChwYWludEluZm8ucmVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDQ1NDFl
OTBjOGYwNGM4ZGU3NzM4ZGYwZWJlMDVlYWM1N2ZkNWI3MTYuLmNjOWI4Y2U0MmM0OTcxNTEzMTc0
YmI4ZTkwYjQ1NmJlMDRjZmVlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAg
Ly8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdl
dHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmludGluZygpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1dGUsIG5vdCBwYWlu
dGluZyBjb29yZGluYXRlcy4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChz
bmFwcGVkSW50UmVjdChzZWxlY3Rpb25SZWN0KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpKTsKICAgICB9CiAKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5jYW5S
ZXNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRl
eCBjZmRhNWNmYmQ0ODQ4YzVkNTRkZjE5ODc1NDVhMWI4MzhlYTFjMzY2Li5jOTE4YTZjMTg1ZGU4
NTk4MmRiY2MxMmMyZTk0ZWEyYTFjZjZkOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCkBAIC00NzcsNyArNDc3LDcgQEAgR2FwUmVjdHMgUm9vdElubGlu
ZUJveDo6bGluZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlv
dXRQb2kKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9n
aWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBsb2dpY2Fs
UmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzUHJldmlvdXNCb3hTZWxlY3RlZCAmJiBnYXBS
ZWN0LndpZHRoKCkgPiAwICYmIGdhcFJlY3QuaGVpZ2h0KCkgPiAwKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChwYWludEluZm8gJiYgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRJ
bmZvLT5jb250ZXh0KCkuZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIo
KS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8t
PmNvbnRleHQoKS5maWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVmlzaWJs
ZVNlbGVjdGlvbiBtYXkgYmUgbm9uLWNvbnRpZ3VvdXMsIHNlZSBjb21tZW50IGFib3ZlLgogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQudW5pdGVDZW50ZXIoZ2FwUmVjdCk7CiAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDY1NmM3ZDQyOWIxODg4YjIxNmE4M2VhN2Q1NTU5N2Zj
OGI0YjdjN2MuLjMyMmMxYjJlOTUyZDI2NTkzYWRlYzJmN2U3MzhmYzVhOGZlZjJlOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKQEAgLTU3LDggKzU3LDggQEAgc3RhdGljIHZvaWQgcGFpbnREZWJ1Z0JvcmRlcnMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRSZWN0IGJvcmRlclJlY3QsIGMKICAgICBp
ZiAoc25hcHBlZFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCkpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgY29udGV4dC5kcmF3
UmVjdChzbmFwcGVkUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuY3BwCmluZGV4IDIyMjZlY2RmNjllNTNiYmY2YmM4OWRlOWRiZWJjNzM2MDM5NTZh
MzEuLmUxZGViYmI3ZGM0NWRkOWNhMjNkNjM2Y2NlODU4ZTNjNDI0YmI3MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcApAQCAtMzksMjcgKzM5LDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxl
KENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLSAgICA6IGNvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAg
ICAsIHN0cm9rZVdpZHRoKDApCi0jaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgICwgdXNlTGV0
dGVycHJlc3NFZmZlY3QoZmFsc2UpCi0jZW5kaWYKLXsKLX0KLQotVGV4dFBhaW50U3R5bGU6OlRl
eHRQYWludFN0eWxlKENvbG9yIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgOiBj
b2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgLCBmaWxsQ29sb3IoY29sb3IpCitUZXh0UGFpbnRT
dHlsZTo6VGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIDogZmlsbENvbG9y
KGNvbG9yKQogICAgICwgc3Ryb2tlQ29sb3IoY29sb3IpCi0gICAgLCBzdHJva2VXaWR0aCgwKQot
I2lmIEVOQUJMRShMRVRURVJQUkVTUykKLSAgICAsIHVzZUxldHRlcnByZXNzRWZmZWN0KGZhbHNl
KQotI2VuZGlmCiB7CiB9CiAKLXN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlP
bkJhY2tncm91bmQoQ29sb3IgdGV4dENvbG9yLCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IpCitzdGF0
aWMgQ29sb3IgYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKGNvbnN0IENvbG9y
JiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAgICAgaW50IGQg
PSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvcik7CiAgICAgLy8g
U2VtaS1hcmJpdHJhcmlseSBjaG9zZSA2NTAyNSAoMjU1XjIpIHZhbHVlIGhlcmUgYWZ0ZXIgYSBm
ZXcgdGVzdHMuCkBAIC03Niw3ICs2Miw3IEBAIHN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZp
c2liaWxpdHlPbkJhY2tncm91bmQoQ29sb3IgdGV4dENvbG9yLCBDb2xvciBiYWNrZ3JvCiAKIFRl
eHRQYWludFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRTdHlsZShjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQog
ewotICAgIFRleHRQYWludFN0eWxlIHBhaW50U3R5bGUobGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgVGV4dFBhaW50U3R5bGUgcGFpbnRTdHlsZTsKIAogI2lmIEVOQUJMRShMRVRURVJQUkVT
UykKICAgICBwYWludFN0eWxlLnVzZUxldHRlcnByZXNzRWZmZWN0ID0gbGluZVN0eWxlLnRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvbkxldHRlcnByZXNzOwpAQCAtMTk4
LDEyICsxODQsMTIgQEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBUZXh0UGFpbnRTdHlsZSYgcGFpbnQKICAgICB9CiAKICAgICBDb2xv
ciBmaWxsQ29sb3IgPSBmaWxsQ29sb3JUeXBlID09IFVzZUVtcGhhc2lzTWFya0NvbG9yID8gcGFp
bnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciA6IHBhaW50U3R5bGUuZmlsbENvbG9yOwotICAgIGlm
IChtb2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4dC5maWxsQ29sb3Io
KSB8fCBwYWludFN0eWxlLmNvbG9yU3BhY2UgIT0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpKSkK
LSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBwYWludFN0eWxlLmNvbG9y
U3BhY2UpOworICAgIGlmIChtb2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29u
dGV4dC5maWxsQ29sb3IoKSkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xv
cik7CiAKICAgICBpZiAobW9kZSAmIFRleHRNb2RlU3Ryb2tlKSB7CiAgICAgICAgIGlmIChwYWlu
dFN0eWxlLnN0cm9rZUNvbG9yICE9IGNvbnRleHQuc3Ryb2tlQ29sb3IoKSkKLSAgICAgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRTdHlsZS5zdHJva2VDb2xvciwgcGFpbnRTdHls
ZS5jb2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRT
dHlsZS5zdHJva2VDb2xvcik7CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRoICE9
IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCkpCiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZVRoaWNrbmVzcyhwYWludFN0eWxlLnN0cm9rZVdpZHRoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCmluZGV4IDk5NGU0NWRjZjRlOGE0ODk4ODRjZGNi
YzIzYjFjMjA2YjcwYTk4MDYuLmYwY2JlYmI5Zjg0N2M1YTU3ZTY4YTAxNTRmZDQ0NzBkNmFhYWQ2
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0zOSwx
NiArMzksMTUgQEAgY2xhc3MgU2hhZG93RGF0YTsKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVj
dCBUZXh0UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSk7Ci0gICAg
VGV4dFBhaW50U3R5bGUoQ29sb3IsIENvbG9yU3BhY2UpOworICAgIFRleHRQYWludFN0eWxlKCkg
eyB9CisgICAgVGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImKTsKIAotICAgIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZTsKICAgICBDb2xvciBmaWxsQ29sb3I7CiAgICAgQ29sb3Igc3Ryb2tlQ29sb3I7
CiAgICAgQ29sb3IgZW1waGFzaXNNYXJrQ29sb3I7Ci0gICAgZmxvYXQgc3Ryb2tlV2lkdGg7Cisg
ICAgZmxvYXQgc3Ryb2tlV2lkdGggeyAwIH07CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAg
IGJvb2wgdXNlTGV0dGVycHJlc3NFZmZlY3Q7CisgICAgYm9vbCB1c2VMZXR0ZXJwcmVzc0VmZmVj
dCB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCmluZGV4IGU0Mjg2YzA0MTAzY2NiNzliNGU2ZTY2YjdiYmI1NDI2ZmMyZDY4NzMu
LmVjMjMwMmNjZWVlNjFiNjM0M2UxNjQ5ZjdmMjY2YWRiZTU0ZTg3YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFNoYWRvd0Fw
cGxpZXI6OlNoYWRvd0FwcGxpZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFk
b3dEYXRhKiBzaGFkb3csCiAgICAgfQogCiAgICAgaWYgKCFtX2F2b2lkRHJhd2luZ1NoYWRvdykK
LSAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNo
YWRvd0NvbG9yLCBjb250ZXh0LmZpbGxDb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogfQogCiBT
aGFkb3dBcHBsaWVyOjp+U2hhZG93QXBwbGllcigpCkBAIC0xMTgsMTEgKzExOCwxMCBAQCBzdGF0
aWMgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZvbnRDYXNjYWRlJiBmbwogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgYm9vbCBz
dHJva2VkLCBib29sIGhvcml6b250YWwpCiB7CiAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4
dC5maWxsQ29sb3IoKTsKLSAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5m
aWxsQ29sb3JTcGFjZSgpOwogICAgIGJvb2wgb3BhcXVlID0gIWZpbGxDb2xvci5oYXNBbHBoYSgp
OwogICAgIGJvb2wgbGFzdFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0ID0gIXN0cm9rZWQg
JiYgb3BhcXVlOwogICAgIGlmICghb3BhcXVlKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihDb2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIGRvIHsKICAgICAgICAgU2hhZG93QXBwbGllciBz
aGFkb3dBcHBsaWVyKGNvbnRleHQsIHNoYWRvdywgYm94UmVjdCwgbGFzdFNoYWRvd0l0ZXJhdGlv
blNob3VsZERyYXdUZXh0LCBvcGFxdWUsIGhvcml6b250YWwgPyBIb3Jpem9udGFsIDogVmVydGlj
YWwpOwpAQCAtMTMzLDcgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvCiAKICAgICAg
ICAgSW50U2l6ZSBleHRyYU9mZnNldCA9IHJvdW5kZWRJbnRTaXplKHNoYWRvd0FwcGxpZXIuZXh0
cmFPZmZzZXQoKSk7CiAgICAgICAgIGlmICghc2hhZG93ICYmICFvcGFxdWUpCi0gICAgICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7CiAKICAgICAgICAgaWYgKHN0
YXJ0T2Zmc2V0IDw9IGVuZE9mZnNldCkKICAgICAgICAgICAgIGRyYXdUZXh0T3JFbXBoYXNpc01h
cmtzKGNvbnRleHQsIGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zm
c2V0LCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJs
b2NrLmNwcAppbmRleCBiNmRlNzllOGIyNDY1OTlmZDJhNDU5MjRjNzY5NGEyMTdhODhiMTk3Li45
MGM1OWNlOTU0MTAxMzNkYzVhOTlkYWUxMTk4ZjE1YzY1Zjk5NWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAt
MTA0LDcgKzEwNCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIAogICAgIGluZm8uY29u
dGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSkpOwogICAgIAogICAgIGluZm8uY29udGV4
dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNl
dC55KCkpKTsKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBw
ZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9m
ZnNldEhlaWdodCgpKSk7CkBAIC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJs
b2NrOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCkKICAgICAKICAgICBpbnQgdG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5m
by5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNS
R0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCkp
OwogICAgIAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFp
bnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSwgSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBh
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSk7CiAgICAgCiAgICAgaW50IGJhc2Vs
aW5lID0gcm91bmRUb0ludChiYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1
ZSwgSG9yaXpvbnRhbExpbmUpKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSk7CiAgICAgCiAgICAgaW5mby5jb250
ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVk
UGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0
LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
ICsgYmFzZWxpbmUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggNTE5YmIzODg4OTYzMjY1Mzg1
Njk2ODI4ZWEwYzZiN2YwNjVkMmQ3Yi4uOTJlMjE4MjUwNTE4OTdjMWRjYjhhYmNmODEzNmJhYzA5
OGRkM2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTEZyYWN0aW9uOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldAogICAgIAogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVz
cyhtX2xpbmVUaGlja25lc3MpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNv
bGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZVNSR0IpOwor
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShh
ZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCkgKyBkZW5vbWluYXRvcldyYXBwZXItPm9mZnNldFdpZHRoKCksIGFkanVz
dGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IGI4NmUzNjI5
YTZiNzhlNDA0YTVmYmFkZTQ0NzhkMmU0NzQ1NDc2OTEuLmU5ZTUzNGM0M2Q1NDdmZWJkM2JlYmI2
MzM3OWIwMWNkZWY5NjJhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlVGhpY2tuZXNzKDEpOwogICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7Ci0gICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgICAgICAvLyBU
T0RPIGFkZCBzdXBwb3J0IGZvciBub3RhdGlvbiB2YWx1ZSB1cGRpYWdvbmFsYXJyb3cgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ2NgogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5vdGF0aW9uYWxWYWx1ZVNpemU7IGkrKykgewogICAgICAgICAgICAg
aWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJ1cGRpYWdvbmFsc3RyaWtlIikKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgICAgICAgICAgZWxzZSBpZiAobm90
YXRpb25WYWx1ZXNbaV0gPT0gImhvcml6b250YWxzdHJpa2UiKQogICAgICAgICAgICAgICAgIGlu
Zm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWlnaHQp
LCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJjaXJjbGUiKSB7Ci0gICAgICAg
ICAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0
RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgICAgICAgICAgICAgaW5mby5jb250
ZXh0KCkuZHJhd0VsbGlwc2UocmVjdCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vdGF0aW9u
VmFsdWVzW2ldID09ICJsb25nZGl2IikKICAgICAgICAgICAgICAgICBpc0RlZmF1bHRMb25nRGl2
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggM2NmZWIyMWNhOGQyNTdmM2VmZTUwYWExZTlj
ZGMxN2U0OTIyYzFhYy4uNjYwMjEwZjM0Y2Y2MGNjYmY3NzZmNTFiZDAwZjEzNjdkYmNiZWZmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHAKQEAgLTE4ODksNyArMTg4OSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0CiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENv
bG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKIAogICAgIGlmICht
X3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd1NpemVWYXJpYW50KSB7CiAgICAgICAgIEFTU0VS
VChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZ2x5cGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0
b3IuY3BwCmluZGV4IDY5MjVhNzlkNTU5ZDYxYmVkZDk0Y2M4NWQ3ZDA3ZTc0MjM0ZTliYjUuLjE4
MDgyOWRmMDkxMDc0NDNiNzExZTY1MGY0NDJiNGVkMjgyOWI5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGlj
YWxPcGVyYXRvci5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJhZGlj
YWxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bgogCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsTGluZVRo
aWNrbmVzc0VtcyAqIHN0eWxlKCkuZm9udFNpemUoKSk7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgaW5mby5j
b250ZXh0KCkuc2V0TGluZUpvaW4oTWl0ZXJKb2luKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRN
aXRlckxpbWl0KHN0eWxlKCkuZm9udFNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IGFjNGExNWRkODRh
NDkzNDQyZjM0NTljNWE0NTAyMTMxNGEwMTc1ZTYuLmMyNDNkMjBlOGE3YjJhMDg3N2Q1MDkzMTMx
ZTRmOGJlMjgwOWFjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUmVuZGVy
TWF0aE1MUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9ydWxl
VGhpY2tuZXNzKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9r
ZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKIAogICAgIC8vIFRoZSBwcmVmZXJyZWQgd2lkdGggb2Yg
dGhlIHJhZGljYWwgaXMgc29tZXRpbWVzIGluY29ycmVjdCwgc28gd2UgZHJhdyBhIHNsaWdodGx5
IGxvbmdlciBsaW5lIHRvIGVuc3VyZSBpdCB0b3VjaGVzIHRoZSByYWRpY2FsIHN5bWJvbCAoaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNikuCiAgICAgTGF5b3V0
VW5pdCBzaXplRXJyb3IgPSByYWRpY2FsLT50cmFpbGluZ1NwYWNlRXJyb3IoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggZTBjYWVhYzljZDgwMWExYjhi
NzMwYjhmNGI5ZDdhNmQ3MTdlYmFhZC4uZmNjOGI3YTg4OTM1NGMyMmE1NjBkZDlhMjlmYjgxZWE2
M2I5NzI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAg
LTE4NSw3ICsxODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0
ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIGlmIChpbWFnZUJ1
ZmZlcikgewogICAgICAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdl
QnVmZmVyLT5jb250ZXh0KCk7CiAgICAgICAgIGlmIChpbWFnZSkKLSAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXpl
KCkpKTsKIAogICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBp
bWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0g
cGl4ZWxBcnJheS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRleCBjOTM5YWU3NWQxZGZiYjkzYzIwMGQ5NDBjYTZk
NGEyOWE3NmE2YmQwLi41ZGVkYjU1NjJiODM0MWE3YWU2NzU5OTM4NmQwYjkxMGY4ZWMzMzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5j
cHAKQEAgLTIwOSwyMCArMjA5LDE4IEBAIHZvaWQgTmluZVBpZWNlSW1hZ2U6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBSZW5kZXJFbGVtZW50KiByZW5kCiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0g
c3R5bGUuY29sb3JTcGFjZSgpOwotCiAgICAgZm9yIChJbWFnZVBpZWNlIHBpZWNlID0gTWluUGll
Y2U7IHBpZWNlIDwgTWF4UGllY2U7ICsrcGllY2UpIHsKICAgICAgICAgaWYgKChwaWVjZSA9PSBN
aWRkbGVQaWVjZSAmJiAhZmlsbCgpKSB8fCBpc0VtcHR5UGllY2VSZWN0KHBpZWNlLCBkZXN0aW5h
dGlvblJlY3RzLCBzb3VyY2VSZWN0cykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBpZiAoaXNDb3JuZXJQaWVjZShwaWVjZSkpIHsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwg
c291cmNlUmVjdHNbcGllY2VdLCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlKCppbWFnZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNl
XSwgb3ApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFn
ZTo6VGlsZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2Fz
dDxJbWFnZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxl
OwogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2Up
ID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6
U3RyZXRjaFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1h
Z2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVj
ZV0sIHRpbGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0s
IHNvdXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3Ap
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAppbmRleCAyYjY0NTA3NzY3MDg2ODgyMGNjZTk3ZjAwNGE1NDU1OTcyZjBlYjI3Li5iZjFj
MjE5MDJkMmY0ZjA3NDBlNjdjZGUxZTE0Mzc2ZmIzNjAwOThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtOTAyLDcgKzkwMiw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldFRleHRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0
JiBsb2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdCB7IGdldFNoYWRv
d0Jsb2NrRGlyZWN0aW9uRXh0ZW50KHRleHRTaGFkb3coKSwgbG9naWNhbFRvcCwgbG9naWNhbEJv
dHRvbSk7IH0KIAogICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlV2lkdGg7IH0KLSAgICBzdGF0aWMgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKCkgeyByZXR1cm4gQ29sb3JTcGFjZVNSR0I7IH0gLy8gRklYTUU6IFJlbW92
ZSBhZnRlciBhZGRpbmcgY29sb3Igc3BhY2UgaGFuZGxpbmcgaW50byB0aGUgQ29sb3IgY2xhc3Mu
CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5vcGFjaXR5OyB9CiAgICAgQ29udHJvbFBhcnQgYXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PENvbnRyb2xQYXJ0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJh
bmNlKTsgfQogICAgIEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxBc3BlY3RSYXRpb1R5cGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2FzcGVjdFJhdGlvVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggZWY3NTdlNzM2M2YzNDhkYmRmZmE1MmZjY2RlOGFkMmNj
MDJiNzM1Ni4uZWE0MDIwNzI5MDdkNjQ4YWMzOGQ1MWFhNjVjM2I1MGNhMDViMTliNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE2
OSw3ICsxNjksNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQoUGFpbnRJ
bmZvJiBwYWludEluZm8pCiAKICAgICBpbWFnZUVsZW1lbnQoKS5wcmVzZXJ2ZUFzcGVjdFJhdGlv
KCkudHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CiAKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBz
cmNSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RS
ZWN0LCBzcmNSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZl
cmVkRm9yZWdyb3VuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcAppbmRleCAxZDAxM2FkN2MxZTBlOGM0MDE0MDA4NjhhMjcyNTkzYWJhY2EyZDA1
Li4yOTRjYjQ2MjNkZDc4MTNkYjY3ODgzNzVmZDZlYTI2ZDNiZDY1ZWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgc3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LnN0cm9rZVBhdHRl
cm4oKSkKICAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqcGF0dGVybik7CiAgICAgZWxz
ZQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb250ZXh0LnN0cm9rZUNvbG9yKCksIGNv
bnRleHQuc3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Y29udGV4dC5zdHJva2VDb2xvcigpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDRmM2JkNzg4MjdjNTYyMGQxNWI3NjI3ZjI2ZjY1ZWE0YTcwY2YxYTMuLjE2YWVkYjczMjY2ZGJm
ZmY3Yzk5M2FmYjlmNThhZGQ4N2Q2N2Q2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNzEsNyAr
MjcxLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2Uo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNv
bmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkp
OwogCiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEt
PmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0
ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNl
KCksIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOworICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWlu
dFJlY3QoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRhLT5maWx0ZXIt
PmZpbHRlclJlc29sdXRpb24oKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShm
aWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xv
ci5jcHAKaW5kZXggZmI4OGZjOGI0YjI4Yjc4NTlkZDhmMjE1YjkwMjUxZDdlMGQyODNlNy4uNGIy
MGRhNThmOWU1YzNlYzkwNWY5ZWEzNmNmMzhkZjZkNzYzY2E3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENv
bG9yLmNwcApAQCAtNDIsNyArNDIsNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xv
cjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUgogICAgIEFT
U0VSVChyZXNvdXJjZU1vZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKIAogICAgIGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7Ci0gICAgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlID0gc3R5bGUuY29sb3JTcGFjZSgpOwogCiAgICAgYm9vbCBpc1JlbmRlcmlu
Z01hc2sgPSByZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFp
bnRCZWhhdmlvclJlbmRlcmluZ1NWR01hc2s7CiAKQEAgLTUxLDcgKzUwLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IFIKICAgICAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLmZp
bGxPcGFjaXR5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRBbHBo
YSgxKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY29sb3IsIGNvbG9yU3BhY2Up
OworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgICAgIGlmICgh
aXNSZW5kZXJpbmdNYXNrKQogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoc3ZnU3R5
bGUuZmlsbFJ1bGUoKSk7CiAKQEAgLTYxLDcgKzYwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZVNvbGlkQ29sb3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IFIKICAgICAgICAgLy8gV2hlbiByZW5kZXJpbmcgdGhlIG1hc2sgZm9yIGEgUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLCB0aGUgc3Ryb2tlIGNvZGUgcGF0aCBpcyBuZXZlciBoaXQuCiAgICAgICAg
IEFTU0VSVCghaXNSZW5kZXJpbmdNYXNrKTsKICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3Zn
U3R5bGUuc3Ryb2tlT3BhY2l0eSgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1f
Y29sb3IpOwogCiAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0Nv
bnRleHQoY29udGV4dCwgc3R5bGUsIHJlbmRlcmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNjlmMjk2MDZjNmNjZjEw
NDBkNWEwOWEzNWZkM2IyNDNjODk2NmY2OC4uNmU1ZGYzMDNlMjJkMDg4YzYxZmEyZjMwMGRkNDVh
MzM0ZGQ1OWM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guY3BwCkBAIC0yMjUsOCArMjI1LDggQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94
OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgICAg
IGlmICghZnJhZ21lbnRUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogCi0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rp
b25SZWN0Rm9yVGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZy
YWdtZW50RW5kUG9zaXRpb24sICZzdHlsZSksIGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoYmFja2dy
b3VuZENvbG9yKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rp
b25SZWN0Rm9yVGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZy
YWdtZW50RW5kUG9zaXRpb24sICZzdHlsZSksIGJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAg
bV9wYWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9EZWZhdWx0TW9kZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBkMDJlZTUwYmQ2Y2EzN2U2MGE1MmVkNGY2ODA0NmVmZjkwODFhOGJjLi42Yzk5MDU1
MmY4MWNhMTQ5MDA4NzkxODhjMTYxNGUxN2YxM2M1MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEyOCw3ICsx
MjgsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRl
bnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHNoYWRvdykgewotICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zZXRTaGFkb3co
SW50U2l6ZShyb3VuZFRvSW50KHNoYWRvdy0+eCgpKSwgcm91bmRUb0ludChzaGFkb3ctPnkoKSkp
LCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJv
dW5kVG9JbnQoc2hhZG93LT54KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+
cmFkaXVzKCksIHNoYWRvdy0+Y29sb3IoKSk7CiAgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29u
dGV4dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgICAgICBtX3JlbmRlcmlu
Z0ZsYWdzIHw9IEVuZFNoYWRvd0xheWVyOwogICAgICAgICB9CkBAIC0zNjEsNyArMzYxLDcgQEAg
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJvdW5kaW5nQm94KTsKKyAgICBtX3BhaW50SW5mby0+
Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGJvdW5kaW5nQm94KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3Bw
CmluZGV4IGRlOGEyMmJhZDJiNWFjN2ZlOTQ5MWMxNzgwMzI5MTgxNzJkMGE3NmIuLmM2YjQ5NThi
NzFlZjU0MzIwZDRjMmFkNDJiMzE4Zjk1YjE0ZTkzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRDb2xvci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTVkdBbmltYXRlZENvbG9y
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQKICAgICBmbG9hdCBhbHBoYSA9IGFuaW1hdGVkQ29sb3IuYWxwaGEoKTsKICAgICBtX2FuaW1h
dGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3Vu
dCwgZnJvbUNvbG9yLmFscGhhKCksIHRvQ29sb3IuYWxwaGEoKSwgdG9BdEVuZE9mRHVyYXRpb25D
b2xvci5hbHBoYSgpLCBhbHBoYSk7CiAKLSAgICBhbmltYXRlZENvbG9yID0geyB7IHJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWwocmVkKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChncmVlbiks
IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYmx1ZSksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5u
ZWwoYWxwaGEpIH0sIENvbG9yU3BhY2VTUkdCIH07CisgICAgYW5pbWF0ZWRDb2xvciA9IHsgcm91
bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChyZWQpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGdy
ZWVuKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChibHVlKSwgcm91bmRBbmRDbGFtcENvbG9y
Q2hhbm5lbChhbHBoYSkgfTsKIH0KIAogZmxvYXQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA3
NTQ0YTc2ZjM1ZjM1ZGEzYWE1OWRiMjc1OGExYTYyYTlhMjlmZjkyLi43NjljNTRlYTZiZjhkZjk3
YWVmMWNmNTA2ZjgwZmQzMzBmMzIyMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWlu
ZXJTaXplKCkgY29uc3QKIH0KIAogdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9h
dCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRTaXplIGNvbnRhaQogICAgIGFkanVzdGVkU3JjU2l6ZS5zY2FsZShyb3VuZGVkQ29u
dGFpbmVyU2l6ZS53aWR0aCgpIC8gY29udGFpbmVyU2l6ZS53aWR0aCgpLCByb3VuZGVkQ29udGFp
bmVyU2l6ZS5oZWlnaHQoKSAvIGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOwogICAgIHNjYWxlZFNy
Yy5zZXRTaXplKGFkanVzdGVkU3JjU2l6ZSk7CiAKLSAgICBkcmF3KGNvbnRleHQsIGRzdFJlY3Qs
IHNjYWxlZFNyYywgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVk
U3JjLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKIH0KQEAgLTE3OSw3ICsxNzks
NyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5v
cm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoYnVmZmVyLT5j
b250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVO
b3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIEZJWE1FOiBX
SyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgog
ICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQ
dHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICNlbmRpZgogCiB2b2lk
IFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBG
bG9hdFJlY3Qgem9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNv
bnRhaW5lclNpemUpOwogICAgIHpvb21lZENvbnRhaW5lclJlY3Quc2NhbGUoem9vbSk7CkBAIC0y
MDQsNyArMjA0LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgY29udGV4dCwgdHJ1ZSk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0
byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3Rm9yQ29udGFpbmVy
KGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUs
IHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNv
bnRleHQoKSwgY29udGFpbmVyU2l6ZSwgem9vbSwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250
YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgIGlm
IChjb250ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRv
THVtaW5hbmNlTWFzaygpOwogCkBAIC0yMTksMTAgKzIxOSwxMCBAQCB2b2lkIFNWR0ltYWdlOjpk
cmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0U2l6ZQogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZm
ZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKICAgICBj
b250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAgICBpbWFnZS0+ZHJhd1BhdHRl
cm4oY29udGV4dCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7
CisgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVk
UGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBi
bGVuZE1vZGUpOwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIFNWR0ltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmgKaW5kZXggMWFiYTkyYWU4NzkzYTRjZTRlYjgzNjc1ODg2Njc1ZDhhMGExNGUxYi4uNzk4
MDMxNGU4Nzk5ZjcwOTQwZWI0YTA5N2NkOTg0NDQ4MjVmMjIyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTVkdJbWFn
ZShJbWFnZU9ic2VydmVyJiwgY29uc3QgVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0b1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZv
aWQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUsIGZs
b2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxv
YXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZvaWQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNp
emUsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9v
bSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAogICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKIAogICAgIFNW
R1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCA1YTM4MzUxMTY1
MDhkN2QwZGZjYmEwZTQzNjBlNjVjZjUzMTA3NDMwLi40ZTE2MWUzZjBkNDRhNmFhNmVhNmMwM2Y1
ZWQ5YWJjMTllYmFlYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTM1LDE1ICszNSwxNSBAQCBGbG9hdFNpemUg
U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAogfQogCiB2b2lkIFNWR0ltYWdlRm9y
Q29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKLSAgICBtX2ltYWdlLT5kcmF3Rm9yQ29u
dGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBzcmNSZWN0
LCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBtX2ltYWdlLT5kcmF3
Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBz
cmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
LSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKIHsKLSAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBt
X2NvbnRhaW5lclNpemUsIG1fem9vbSwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOwor
ICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVy
U2l6ZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywg
Y29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIFBhc3NOYXRpdmVJbWFnZVB0
ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApp
bmRleCA2YWJiYmM2ZDAyMmUwMGJjYzliMTg2ZmE1OTg4OGI5YWQ3ZWVhNWYzLi5kZTk4ZmYyMTY2
MWUzZDQ0MjEzY2IyZTc2ZDFmMzJkNGNjZmMzMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNTYsOSArNTYsOSBAQCBw
dWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJp
bnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwg
Q29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7
CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUu
CiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IDY2MThjZjU0ODRlNDllZTIxY2NjZjY3ODk0ZDAw
MmY2MGUxN2U4MDYuLjdmN2E5YzMyZGY4NWYxYjFlODQxNjA3NWU4Y2I4MThlZWVkNjc2YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KS5kcmF3SW1hZ2UoKm1faW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqbV9pbWFnZSwgZGVz
dFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIEZFSW1hZ2U6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCmluZGV4IDYxZjE5YmYx
NjUwMWE5ZGZmMTZkN2I5ZTg5ODIwNDg0ZTIxMTE1ZDguLmNiYzM4NTYzNzEzYmY3ZTdkYjk2OGQx
N2ZlYjk2OTMxMDkyNTJiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQ
YWdlT3ZlcmxheUNsaWVudC5jcHAKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lkIE1vY2tQYWdlT3Zl
cmxheUNsaWVudDo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGV4
dCYgY29udAogICAgIEZsb2F0UmVjdCBpbnNldFJlY3QgPSBvdmVybGF5LmJvdW5kcygpOwogCiAg
ICAgaWYgKG92ZXJsYXkub3ZlcmxheVR5cGUoKSA9PSBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6
OkRvY3VtZW50KSB7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1
LCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMCwgMjU1LCAwKSk7CiAgICAgICAgIGluc2V0UmVjdC5pbmZsYXRlKC01MCk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAy
NTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTIwKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCBm
MWU3NDk5M2FjNzg0MjBlNTE1Njk4MDE0MTc4MDhlOGFlZGJhMzZjLi41MTkyZmI4MTliODM5MDE5
ZWNjOWVmMDk5ZTBmNmRiMGVjM2E1YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9X
ZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3SU9TLm1tCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIENHQ29sb3JSZWYgY3Jl
YXRlQ0dDb2xvcldpdGhEZXZpY2VXaGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQog
ICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAgICAgQ0dGbG9hdCBoZWlnaHQgPSBX
ZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9GTElQUEVEX1NI
QURPV1MpID8gMi4wZiA6IC0yLjBmOwogICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihj
b250ZXh0LCBDR1NpemVNYWtlKDAuMGYsIGhlaWdodCksIDMuMGYsIFtbc2VsZiBjbGFzc10gc2hh
ZG93Q29sb3JdKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwg
Y2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xv
cjo6d2hpdGUpKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBwYWdlUmVjdCk7CiAg
ICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsgICAgCiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQppbmRleCAxZTBlMDdjNGY5
N2ZlZTRhYTQyMDEzYjE1MTZjYjRjOTM4ZDk5OGQyLi45MDc3MjIwNjMxY2E1OGFiZDgyMmMxMmM5
MzZhZGMxMWQwNWI1OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dl
YlBsYWluV2hpdGVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUGxh
aW5XaGl0ZVZpZXcubW0KQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAtICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVjdAogewogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0U2V0Rmls
bENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNv
bnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7CiAgICAgV0tSZWN0RmlsbChjb250
ZXh0LCBbc2VsZiBib3VuZHNdKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
S2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggMDAyNWFlMjkzMDIxN2EyYWU2NjJmZjA0ZDZhMGI2
NGM5YjRiZGRhZC4uY2Y3OGRiMzNiN2YyZTdhZTYwMDBjNzc5ZDZjYmI3MTA0Zjc2YmZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0x
MDAsNyArMTAwLDcgQEAgc3RhdGljIEJPT0wgY2FuVXNlRmFzdFJlbmRlcmVyKGNvbnN0IFVuaUNo
YXIgKmJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICBDR0Zsb2F0IGJsdWU7CiAgICAg
ICAgIENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNw
YWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBi
bHVlOiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEg
KiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBh
bHBoYSAqIDI1NSkpOwogCiAgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29u
dGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAq
IHBvaW50LnkpKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KaW5kZXggZGIwNWIzNGRiZWI5NGQ2OGU2NmUyZGJm
YmMyOTI3YzI2ZjVmYzEwYi4uMzhhYmJiNGQ0MTYxNjg5ZmViNjgyZjA3MDgyYmVhYTNhOTYyZDU0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdo
bGlnaHRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2Rl
SGlnaGxpZ2h0Vmlldy5tbQpAQCAtMjgwLDEwICsyODAsMTAgQEAgc3RhdGljIHZvaWQgbGF5ZXJQ
YXRoKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogICAg
IEZsb2F0UXVhZCBwYWRkaW5nUXVhZCA9IGhpZ2hsaWdodC0+cXVhZHNbMl07CiAgICAgRmxvYXRR
dWFkIGNvbnRlbnRRdWFkID0gaGlnaGxpZ2h0LT5xdWFkc1szXTsKIAotICAgIG1hcmdpbkxheWVy
LmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5tYXJnaW5Db2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7Ci0gICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xv
cihoaWdobGlnaHQtPmJvcmRlckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWRk
aW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPnBhZGRpbmdDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGVudExheWVyLmZpbGxDb2xvciA9IGNh
Y2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5t
YXJnaW5Db2xvcik7CisgICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvciho
aWdobGlnaHQtPmJvcmRlckNvbG9yKTsKKyAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2Fj
aGVkQ0dDb2xvcihoaWdobGlnaHQtPnBhZGRpbmdDb2xvcik7CisgICAgY29udGVudExheWVyLmZp
bGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IpOwogCiAgICAg
bGF5ZXJQYXRoV2l0aEhvbGUobWFyZ2luTGF5ZXIsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQpOwog
ICAgIGxheWVyUGF0aFdpdGhIb2xlKGJvcmRlckxheWVyLCBib3JkZXJRdWFkLCBwYWRkaW5nUXVh
ZCk7CkBAIC0zMDEsNyArMzAxLDcgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hhcGVMYXll
ciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogCiAgICAgW3NlbGYgX2F0dGFj
aDpwYXJlbnRMYXllciBudW1MYXllcnM6bnVtTGF5ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29u
dGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPmNvbnRlbnRDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBjYWNoZWRDR0Nv
bG9yKGhpZ2hsaWdodC0+Y29udGVudENvbG9yKTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7
IGkgPCBudW1MYXllcnM7ICsraSkgewogICAgICAgICBDQVNoYXBlTGF5ZXIgKmxheWVyID0gW19s
YXllcnMgb2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgbGF5ZXIuZmlsbENvbG9yID0gY29udGVu
dENvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYzVjN2U3ZDFh
YzdlZDM0MmFlNzg2OGRlNWU4MDFhNjUyMzU0NjUxZC4uZjIxOTA2MGVhYTY3YTE0NDdkY2MwMDgx
MDNjYjFlNmJkOTJlODdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC0xMDI5LDcgKzEwMjksNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3Vy
Y2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHJldHVy
biBuc0NvbG9yKGNvbG9yKTsKICNlbHNlCi0gICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHJldHVybiBjYWNoZWRDR0NvbG9yKGNvbG9yKTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmlu
ZGV4IDFjN2ZhNGE0ODliMzkxYWMwZDdjYzhmZWYyMWNiMGM3OTFmMzdjMTMuLmFjMGU3NzI0ZmNj
MTE2YWQ3YTk2OTk1ZGQ0MTJhYjJlYjljNmI4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC01MjYsNyArNTI2LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBv
YmpDQ2wKICAgICAgICAgICAgIE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwot
ICAgICAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2Fj
aGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29s
b3IoQ29sb3I6OndoaXRlKSk7CiAgICAgICAgICAgICBXS1JlY3RGaWxsKGNnQ29udGV4dCwgcmVj
dCk7CiAjZW5kaWYKICAgICAgICAgfQpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xh
c3Mgb2JqQ0NsCiAgICAgICAgICAgICBOU1JlY3RGaWxsKHJlY3QpOwogI2Vsc2UKICAgICAgICAg
ICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBXS0dldEN1cnJlbnRHcmFwaGljc0NvbnRleHQo
KTsKLSAgICAgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQs
IGNhY2hlZENHQ29sb3IoQ29sb3I6OmN5YW4sIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENH
Q29sb3IoQ29sb3I6OmN5YW4pKTsKICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCBy
ZWN0KTsKICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkluZGljYXRlTGF5ZXIubW0KaW5kZXggNWVkODRiYzczODJlOGY3MjA0YmMzZTE4ZTI5ZTE1YmRj
ODdmNDAwNi4uZjk0NDRkYzM3NGUwNDJiNmQwNTA3NzBhMjYwNzJlMWU3YmUxMmM0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQpAQCAtNTAsNyAr
NTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogICAgIC8vIEJsdWUgaGlnaGxpZ2h0
IGNvbG9yLgogICAgIHN0YXRpYyBDb2xvciBoaWdobGlnaHRDb2xvcigxMTEuMGYgLyAyNTUuMGYs
IDE2OC4wZiAvIDI1NS4wZiwgMjIwLjBmIC8gMjU1LjBmLCAwLjY2Zik7Ci0gICAgc2VsZi5iYWNr
Z3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodENvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxp
Z2h0Q29sb3IpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IDk5YzIzZmU4OWIwYjMyMzNiYTkxMjE3MTFk
MDU0NzVmZDQxODNkMzIuLmJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01
Nyw2ICs1Nyw2IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAg
IEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJH
QiwgcmVjdCwgcmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdl
LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
bnRleHRNZW51Q29udGV4dERhdGEuY3BwCmluZGV4IGViODc2NzM4ZGVkODcyOGQ5MWQ1OTcwOWY5
ODM5OTYyNTg0ZjBiNjguLmI1NDU0ZjQ3MmY0MDY0MzAyNmRlZGU3MmU5NzE2YjgyNmI2NzFkMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVD
b250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKIAogICAgIC8vIEZJ
WE1FOiBmaWd1cmUgb3V0IHRoZSByb3VuZGluZyBzdGFydGVneSBmb3IgU2hhcmVhYmxlQml0bWFw
LgogICAgIG1fY29udHJvbGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
KTsKLSAgICBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJ
bWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAgIG1fY29u
dHJvbGxlZEltYWdlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwg
SW50UG9pbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBmMGUyNjM2MmU1MWI3MDkzYmVmNGIwZjE5N2Qw
YjNlMjllOWQ2MmIwLi4zOWRmN2ZiMWFlYTliNjAwYjIwNjE3YzBhMmM3MzZmNmI5NDRhNDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtNzQyLDcgKzc0Miw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlCiBzdGF0aWMgdm9pZCBl
bmNvZGVJbWFnZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNBbHBoYSk7Ci0gICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdl
KGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAg
ICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFu
ZGxlKGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQppbmRleCAyY2NiYWM3ZmM3ZjI3MDljMGZhYzJlMjBlZWM5OWY0
MGNiYWY5ZmM1Li5jN2JjNjEwMWRhNGMzNDFmMDZmNzk4NjIyNjc4YWZhYjUzYjJlZWExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW0KQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
cmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIGlmIChtX2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KHNjYWxlZExheWVyQm91bmRzLCBDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywgQ29sb3IoMjU1
LCAwLCAwKSk7CiAjZW5kaWYKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCBlMGJhYjM3M2VjZWFhODM5ZGY4YzE2ZDIwYTA5ZjYyYjRh
Y2Y5NWU4Li5lN2VmZjJmMGQxYmJmODE5ZDE5M2E1MDI2YjZhMmZmNmRlZWNlZmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk0
LDcgKzg5NCw3IEBAIHN0YXRpYyBXZWJDb3JlOjpDb2xvciBzY3JvbGxWaWV3QmFja2dyb3VuZENv
bG9yKFdLV2ViVmlldyAqd2ViVmlldykKIAogICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
ID0gY29sb3I7CiAKLSAgICBhdXRvIHVpQmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29s
b3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBXZWJDb3JlOjpD
b2xvclNwYWNlRGV2aWNlUkdCKV0pOworICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29sb3IgPSBhZG9w
dE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3Ip
XSk7CiAgICAgW19zY3JvbGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xv
ci5nZXQoKV07CiAKICAgICAvLyBVcGRhdGUgdGhlIGluZGljYXRvciBzdHlsZSBiYXNlZCBvbiB0
aGUgbGlnaHRuZXNzL2RhcmtuZXNzIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KaW5k
ZXggMzZjZGFiYTNjZGZmOTc2OTRjODQ0NjMwMTJlYTM5NWUxMjA2NmY5Zi4uNWVlNTVhNWU2ZDcx
NGQ4MDFhY2I1YjM4ODE5YjgwNmZhN2IwNTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0yMjksMTAgKzIyOSwx
MCBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxv
YXRRdWFkJiBvdXRlclF1YWQpCiAgICAgRmxvYXRRdWFkIHBhZGRpbmdRdWFkID0gaGlnaGxpZ2h0
LnF1YWRzW29mZnNldCArIDJdOwogICAgIEZsb2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hsaWdo
dC5xdWFkc1tvZmZzZXQgKyAzXTsKIAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hl
ZENHQ29sb3IoaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAg
ICBib3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5ib3JkZXJD
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9
IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LnBhZGRpbmdDb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgY29udGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0
LmNvbnRlbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgbWFyZ2luTGF5ZXIuZmls
bENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQubWFyZ2luQ29sb3IpOworICAgIGJvcmRl
ckxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yKTsK
KyAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQucGFk
ZGluZ0NvbG9yKTsKKyAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvciho
aWdobGlnaHQuY29udGVudENvbG9yKTsKIAogICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxh
eWVyLCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkKTsKICAgICBsYXllclBhdGhXaXRoSG9sZShib3Jk
ZXJMYXllciwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0
YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQm
IG91dGVyUXVhZCkKIAogICAgIFtzZWxmIF9jcmVhdGVMYXllcnM6bnVtTGF5ZXJzXTsKIAotICAg
IENHQ29sb3JSZWYgY29udGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVu
dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xv
ciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvcik7CiAgICAgZm9yIChOU1VJ
bnRlZ2VyIGkgPSAwOyBpIDwgbnVtTGF5ZXJzOyArK2kpIHsKICAgICAgICAgQ0FTaGFwZUxheWVy
ICpsYXllciA9IFtfbGF5ZXJzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAgIGxheWVyLmZpbGxD
b2xvciA9IGNvbnRlbnRDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMmY0OGRiYjFkNDQxY2U3
NWQ0NjQ4NzY5YzZlNTNhNjZkOTkyYmMyMy4uNmY5MTE3NjU0MGJkZWNiNTMxMGI3YmQ5NjRiNjlk
NjU2ZTZiMzAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVy
YWN0aXZlVHJhbnNpdGlvbgogICAgICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250
ZW50cyA9IHNuYXBzaG90LT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgQ29sb3IgY29yZUNv
bG9yID0gc25hcHNob3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29yZUNvbG9y
LmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNv
bG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpXSk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5T
KFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29yZUNvbG9y
KV0pOwogICAgIH0KIAogICAgIFttX3NuYXBzaG90VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFj
a2dyb3VuZENvbG9yLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOGVlNmE3YTk4ZjAyOGRi
YzNlMGQ4Y2Q4YWJhZTVlNGM0MWQ5MGJmMS4uYzQzZWYzYTFlMTc1MzM3NWU5NGJlNmQxMzFiYmM3
NzBkMWZiNzljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTc4OSw3ICs3ODksNyBAQCBzdGF0aWMg
TlNWYWx1ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNp
emUgYm9yZGVyUmFkaXVzLAogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIFJldGFp
blB0cjxVSUNvbG9yPiBoaWdobGlnaHRVSUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxs
b2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlv
bi5jb2xvciwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQildKTsKKyAgICAgICAgUmV0YWlu
UHRyPFVJQ29sb3I+IGhpZ2hsaWdodFVJS2l0Q29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxv
Y10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9u
LmNvbG9yKV0pOwogICAgICAgICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6aGlnaGxpZ2h0VUlL
aXRDb2xvci5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDQwYjRmN2FlMDUx
OGFiNTJjZmQ3YWVlNGY2NDg1YzdkNDkyMzcxZjQuLjY2YzhiMGY5ZGM5OTc1YmYyZjVkZjcwNWM1
ZGVjZmFkZGNiNDkwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCkBAIC01NzksNyArNTc5LDcgQEAgdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIHRhcmdldEl0ZW0KIAogICAgICAgICBDb2xvciBjb3JlQ29sb3IgPSBzbmFwc2hv
dC0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChjb3JlQ29sb3IuaXNWYWxpZCgpKQot
ICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVk
Q0dDb2xvcihjb3JlQ29sb3IpOwogICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gc25h
cHNob3Q7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcAppbmRleCAzMDNlMWI3MzM2YmExNTdjODBiNjM2MTcyMDgz
YzM5NTcxMmQ1MzYzLi44YTc2MzFlMTEyODI3NjNmYTM5MzcwOTQ0YWRlNDBmYjliOWM5ODA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdS
ZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvCiAg
ICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzID0gcmVjdHNGb3JUZXh0TWF0Y2hlc0luUmVjdChib3Jk
ZXJJbmZsYXRlZERpcnR5UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kLgotICAg
IGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3QsIG92ZXJsYXlCYWNrZ3JvdW5kQ29s
b3IsIENvbG9yU3BhY2VTUkdCKTsKKyAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoZGlydHlS
ZWN0LCBvdmVybGF5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93
T2Zmc2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIHNoYWRv
d0NvbG9yQWxwaGEpLCBDb2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlU1JHQik7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNl
dFkpLCBzaGFkb3dCbHVyUmFkaXVzLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dDb2xv
ckFscGhhKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6Ondo
aXRlKTsKIAogICAgICAgICAvLyBEcmF3IHdoaXRlIGZyYW1lcyBhcm91bmQgdGhlIGhvbGVzLgog
ICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiByZWN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjUwYjQyYjlkYzdlZWRmNGE0ODBk
MDBkMzM0YmMzMTk5MTRjZWY4NS4uMDhiODdkMTM0YzU4OGY1YTY0NDM2NDIyNjczZWU2MzM4ZjM4
Mjk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC04NDgsNyArODQ4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZy
YW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBzaGFyZWRTbmFwc2hvdC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRldmljZVNjYWxl
RmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKCpzbmFwc2hvdCwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRQb2ludCgpKTsK
KyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqc25hcHNob3QsIEZsb2F0UG9p
bnQoKSk7CiAKICAgICByZXR1cm4gc2hhcmVkU25hcHNob3QucmVsZWFzZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA1NTYwOThh
YTAyMGU0MTlkNDhkNmM2Mjk2NzJmMWIwZDhkMTQwMTcuLjQzMjcxNDgwNzQ5MzRhNzI3OGI4N2Y5
YWE1ZjQwZGUyZTQzNWQ0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTE3ODAsNyArMTc4MCw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+
IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNp
emUmCiAKICAgICBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+ZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoY29y
ZUZyYW1lLT5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkgJiYg
ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENv
bG9yIDogZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpLCBiYWNrZ3JvdW5k
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSwgYmFja2dyb3VuZENvbG9yKTsKIAog
ICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0
b3IpKSB7CiAgICAgICAgIGRvdWJsZSBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRl
dmljZVNjYWxlRmFjdG9yKCk7CkBAIC0xODAzLDcgKzE4MDMsNyBAQCBQYXNzUmVmUHRyPFdlYklt
YWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJgogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
blJlY3RhbmdsZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKTsKLSAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigweEZGLCAwLCAwKSwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMHhGRiwgMCwgMCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnN0cm9r
ZVJlY3Qoc2VsZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklP
Uy5tbQppbmRleCBkYmEyZDA1OGNhNTkyNWMxMDhkMDNmOWY2ZWQ1OTgwYmMxMGE2ZDQwLi4xZDY5
MDhiZTllZmI1OGRjZjNhZGM3MGEzYTE5ZTVkMDcxNDNlZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1Mu
bW0KQEAgLTc5LDExICs3OSwxMSBAQCB2b2lkIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9T
OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZQogICAgIFZlY3Rv
cjxGbG9hdFJlY3Q+IHRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBtX3RleHRJ
bmRpY2F0b3ItPnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMoKTsKICAgICBWZWN0
b3I8UGF0aD4gcGF0aHMgPSBQYXRoVXRpbGl0aWVzOjpwYXRoc1dpdGhTaHJpbmtXcmFwcGVkUmVj
dHModGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcywgY29ybmVyUmFkaXVzKTsKIAot
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKCkpOwogICAg
IGZvciAoY29uc3QgYXV0byYgcGF0aCA6IHBhdGhzKQogICAgICAgICBjb250ZXh0LmZpbGxQYXRo
KHBhdGgpOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmluZGljYXRvckltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBvdmVybGF5LmJvdW5kcygpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgq
aW5kaWNhdG9ySW1hZ2UsIG92ZXJsYXkuYm91bmRzKCkpOwogfQogCiBib29sIEZpbmRDb250cm9s
bGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hv
d2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiODIzYjhlOWYzMTdm
NWY0ZGMzNDdmNTIyZGNjN2Y4ODFhOTkyOGZhLi42N2Q2MjQ1N2UwMDljZjA2ZTY2ZWI3OTAzNTc4
NjkxMTBlNmY5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMjE5LDcgKzIyMTksNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlv
bkluZm9ybWF0aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUgYml0
bWFwU2l6ZSA9IHNjYWxlZFNpemUud2lkdGgoKSA8IGltYWdlLT5zaXplKCkud2lkdGgoKSA/IHNj
YWxlZFNpemUgOiBpbWFnZS0+c2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgU2hhcmVhYmxlQml0bWFw
OjpTdXBwb3J0c0FscGhhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3QoMCwgMCwg
Yml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2Us
IEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFy
ZWRCaXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlZWM2NWFiNDc1NDcy
MzIyZDg4NmNkY2E3NWIzZjg0ZTM4NDg1ZDkyLi4wYmYzNjRjMTQzN2UzNTYxZGExMWIyZGI2ZTJh
Y2UxYmExZTIyNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQyNyw3ICs0MjcsNyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsK
IAogICAgIFt2aWRlb0xheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKDAsIDApXTsKLSAgICBb
dmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xv
cjo6dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICBbdmlk
ZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
dHJhbnNwYXJlbnQpXTsKIAogICAgIC8vIFNldCBhIHNjYWxlIGZhY3RvciBoZXJlIHRvIG1ha2Ug
Y29udmVydFJlY3Q6dG9MYXllcjpuaWwgdGFrZSBzY2FsZSBmYWN0b3IgaW50byBhY2NvdW50LiA8
cmRhcjovL3Byb2JsZW0vMTgzMTY1NDI+LgogICAgIC8vIFRoaXMgc2NhbGUgZmFjdG9yIGlzIGlu
dmVydGVkIGluIHRoZSBob3N0aW5nIHByb2Nlc3MuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264939</attachid>
            <date>2015-11-06 08:29:41 -0800</date>
            <delta_ts>2015-11-06 19:22:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150967-20151106082838.patch</filename>
            <type>text/plain</type>
            <size>317724</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzMDRmYTY1MDg1ODVm
ZTI5ZjViZjEwMTIzODVlZGIxNTg4ZGY2Mi4uNDY3OTAzODA0OWI2OTJiYjBhYjY5N2I0OGNjYjAz
MTk3Zjg0MTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NCBAQAorMjAxNS0xMS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29s
b3JTcGFjZSBhcmd1bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSAtd2Via2l0LWNvbG9y
LWNvcnJlY3Rpb24gQ1NTIHByb3BlcnR5IHdhcyByZW1vdmVkIGluIHIxODgyMDIsIGFuZCBDb2xv
clNwYWNlRGV2aWNlUkdCCisgICAgICAgIGFuZCBDb2xvclNwYWNlU1JHQiBhcmUgZnVuY3Rpb25h
bGx5IGVxdWl2YWxlbnQsIHdlIGNhbiByZW1vdmUgYWxsIHRoZSBDb2xvclNwYWNlIGFyZ3VtZW50
cyBwYXNzZWQKKyAgICAgICAgdG8gZHJhd2luZyBmdW5jdGlvbnMsIGFuZCByZW1vdmUgUmVuZGVy
U3R5bGU6OmNvbG9yU3BhY2UoKSwgd2hpY2ggd2FzIGhhcmRjb2RlZCB0byByZXR1cm4gQ29sb3JT
cGFjZVNSR0IuCisgICAgICAgIAorICAgICAgICBGaWxsIGFuZCBzdHJva2UgQ29sb3JTcGFjZXMg
YXJlIGFsc28gcmVtb3ZlIGZyb20gZ3JhcGhpY3Mgc3RhdGUsIHNpbXBsaWZ5aW5nIGNvbG9yIHNh
dmUvcmVzdG9yZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoX3BsYXRmb3JtQ29s
b3IpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZp
bGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3
SW1hZ2VJbnRvQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Ny
b2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZTo6ZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRy
YXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2Fj
eVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxDb2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3U2hhZG93QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVy
QW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YmVn
aW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjplbmRTaGFkb3dM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0
cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdS
ZXBhaW50Q291bnRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldENH
RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNG
b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lU
aWxlR3JpZFRpbGU6OnNob3dCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENv
bXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRD
b21wb3NpdGlvblVuZGVybGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCb3hTaGFkb3dGb3JC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0F4aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWlu
dFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVV
cGxvYWRJY29uRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9y
Rm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50TGF5b3V0OjpsYXlP
dXRTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlv
bkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnREZWJ1Z0JvcmRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGll
cjo6U2hhZG93QXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93
cyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUt
MTEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmlldyBvbiBhcHBsZS5jb20vY29udGFjdCB3aXRoIGFsbCB0ZXh0IHNlbGVjdGVkIHNob3dz
IGEgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTBiMGFkZDAzNWQxZTE5ODljZjI0ZWYzNzdiODYw
NjZkOWE2MzgwMi4uY2MyMmQ3NjhhMjBlM2Y2YmU2MWIwMmZhMmUyMTJiYTUxODIyNTQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFy
Z3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlv
biBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZp
Y2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZh
bGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAor
ICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29s
b3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1t
OgorCiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXhlZCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTE5MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NGUxODNhNDc5ZTczOTc1MTRjMjA3MGI0NzU1YzZkYWJiYWU4NWFmZC4uNDFkZmQzZDBjYjFhNjNl
NTFkNmFmZTNiZDBiNmYzZDE3ZjkxMjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBj
YWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQg
aW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3Bh
Y2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhl
IENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9u
cywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNv
ZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9u
dDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dFZpZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJO
b2RlSGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklu
ZGljYXRlTGF5ZXIubW06CisKIDIwMTUtMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0sxXSBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcgQmxpbmsg
bGF5b3V0IHRlc3QgZWRpdGluZy9pbnB1dC90ZXh0LWlucHV0LWNvbnRyb2xsZXItbm8tZWRpdGFi
bGUtbm8tY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhMGRkZDQ3MjQ2MmU5YTE0M2RiNTUzYmFh
NWQ1ZTQzZGRhMjhhZTQuLjk4MDQ5MDAxOTg3OGNiMWNkOWUwZjM4ZGYxYmRiNjQxMWJhZWQzNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNS0xMS0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JTcGFjZSBhcmd1
bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9Db250
ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6b2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0XSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250
cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0xMS0wNSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2aWV3IG9uIGFwcGxlLmNv
bS9jb250YWN0IHdpdGggYWxsIHRleHQgc2VsZWN0ZWQgc2hvd3MgYSBtYXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4
IDQxNzE5ODc0YzdkNjEwMWUyYzg2MDJmMzQ2NjA2ODQ1NmRkMTg0MjAuLmYzNzJhMTBlMDMzZWRl
YmZjNTM1OGRmM2ZkMTI0YWYyMGNiZTU2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTM0Nyw3ICsxMzQ3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxU
eXBlIGVxICJDb2xvciIpIHsKICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZUNHQ29sb3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6OmNh
Y2hlZENHQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsIC49ICIsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpIjsKKyAg
ICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
V2ViQ29yZTo6bnNDb2xvcigkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCmluZGV4IGJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0Yzc3MjYw
NjAyM2IuLjIzMWEzMmQ2YWE1MGIzNTFjNWEzYTA5NjI4ZGI2OWE1MDcwOTRlNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFn
ZSgpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBpbWFnZVJlY3QpOworICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3QpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
PiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAgICBm
aWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RGOjptb3ZlKHRleHR1cmUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYTcxZThiNWI5YjExMTJl
NWEzZGJkM2Q2ODVlZWZjZTQwNGUzZjg3Yi4uNmU0YjMxZWYzMzY4YjZlYmEzYTU5NzhhZGJkZDk2
ZGM4MmUxMWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE1NzAsNyArMTU3MCw2IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5v
ZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2Rl
LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCA9IG5v
ZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIApAQCAtMTU4MywxNyArMTU4MiwxNCBAQCB2b2lk
IENhcmV0QmFzZTo6cGFpbnRDYXJldChOb2RlKiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAgYXV0byBlbGVtZW50QkdDb2xvciA9IGVs
ZW1lbnRTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwogICAgICAgICAgICAgaWYgKGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChlbGVtZW50QkdD
b2xvciwgcm9vdEVkaXRhYmxlQkdDb2xvcikpIHsKICAgICAgICAgICAgICAgICBjYXJldENvbG9y
ID0gcm9vdEVkaXRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwotICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UgPSByb290RWRpdGFibGVTdHlsZS5jb2xv
clNwYWNlKCk7CiAgICAgICAgICAgICAgICAgc2V0VG9Sb290RWRpdGFibGVFbGVtZW50ID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRh
YmxlRWxlbWVudCkgeworICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRhYmxlRWxlbWVudCkKICAg
ICAgICAgICAgIGNhcmV0Q29sb3IgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAgICAgIGNvbG9yU3Bh
Y2UgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IsIGNvbG9y
U3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQzZDQ2
NWZiN2QwNDdkMzgyYTU1NWI4MjU2ZmI0ODAzMjgxZjNkOGUuLjc1ZGI3MWQ0MDE1OWQ5NDhhZmE4
MThjYWQ1NmU1N2Y4NDIxNzgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgTlNCdW5kbGUgKl93
ZWJLaXRCdW5kbGUoKQogCiBzdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENv
bG9yIGNvbG9yKQogewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0
ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBX
ZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKIH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0
Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAppbmRleCA1NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExLi5j
MGZiNDhiZmE0YmY2MWFmOGUzM2ZjNjcwNDlkMTFiZDZiZGRhN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAg
ICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJ
bnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGIxOWQ5
ZTBkYzcwM2Q1NTUzZjczMjYyMTMzYzIwYzk0ZjYyOGM3OWYuLmQyYmRkMGJjMjUyNDE1YTg2YzI4
NzE0OGI1Y2IxMmJlMzBhNjY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE1NCw3ICsxMTU0LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkg
ewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0gdHJ1ZTsKLSAgICAg
ICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNw
YXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lT
aGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgfQogICAgIGlm
IChzdGF0ZSgpLmdsb2JhbEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAt
MTMxOSw5ICsxMzE5LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hh
ZG93KCkKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkgewogICAgICAgICBmbG9hdCB3aWR0
aCA9IHN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9
IHN0YXRlKCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpOwotICAgICAgICBjLT5zZXRMZWdhY3lTaGFk
b3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5zaGFkb3dCbHVyLCBzdGF0ZSgp
LnNoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYy0+c2V0TGVnYWN5
U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkuc2hhZG93Qmx1ciwgc3Rh
dGUoKS5zaGFkb3dDb2xvcik7CiAgICAgfSBlbHNlCi0gICAgICAgIGMtPnNldExlZ2FjeVNoYWRv
dyhGbG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJh
bnNwYXJlbnQpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxkRHJh
d1NoYWRvd3MoKSBjb25zdApAQCAtMTQ0OCwxNyArMTQ0OCwxNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCwg
Y29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERz
dFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKKyAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBp
ZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAg
ICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAg
IGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1
MzYsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2Fu
dmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENv
bnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKLSAg
ICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOworICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52
YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0
ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xv
YmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBk
aWREcmF3KGRzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE2MTIsNyArMTYxMiw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8s
IGNvbnN0IEZsb2F0UmVjCiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAg
Yy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8tPnZpZGVvV2lkdGgoKSwg
dmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8t
PnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsK
ICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpAQCAtMTcyNiwyMSArMTcyNiwyMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7CiAg
ICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwogICAgIGMtPnJlc3RvcmUoKTsKLSAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0Lmxv
Y2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoYnVmZmVyLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
KTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBv
cCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKTsK
IApAQCAtMTc2Niw3ICsxNzY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAgICBidWZm
ZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9u
KCkueCgpLCAtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0LndpZHRoKCksIGNyb3BwZWRP
ZmZzZXQuaGVpZ2h0KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3Rp
dmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250
ZXh0KCksIHN0eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAogICAgIGNvbXBvc2l0
ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkBAIC0yNDQwLDggKzI0NDAsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICAgICAgICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICAgICAgICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgICAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgICAgICAgICAgYy0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAgICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZs
YXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7CkBAIC0yNDUwLDEyICsyNDQ5LDEyIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgICAgIHNoYWRvd09mZnNldCArPSBvZmZzZXQ7CiAK
LSAgICAgICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICAgICAgYy0+c2V0TGVn
YWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGMtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24gKyBvZmZz
ZXQsIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQpA
QCAtMjQ2Nyw5ICsyNDY2LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdU
ZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGZpbGwpCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAppbmRleCA4NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4NDE1OTQ1M2Q5Li5k
Njk5OWJmM2MzZmUwNmVjMjU3ZDA3MDVjYjkzMDA2ZDM3YzExODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0zNjcsNyArMzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZShUJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGQzNThhMjE3OTU4ODM5NmJmYjcwYTVmZDdjZWI1
MjgwMjRmZTM5MTkuLmI2ODNhMmVhNjk5ZWJhY2E4YTM2NTIxNzM2ZTdhMDg1MmQ3ZjFjMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0
IEFQSS4KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNv
bG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAg
IENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jbXlrYS0+YywgbV9jbXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+
YSk7CiAjZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NteWthLT5yZ2Jh
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jbXlrYS0+cmdiYSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29u
dGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215a2Et
PmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwogI2Vs
c2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY215a2EtPnJnYmEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jbXlrYS0+cmdi
YSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2
NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNjZmYwN2U1YmNjLi4zMzBjOTUwNGIwNzY5ZDk0
MDcyMzE3ZGRkMjk5M2QyOThiOWY5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE3Niw3ICsz
MTc2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJh
d0ltYWdlSW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGkKIAogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBidWYtPmNvbnRleHQo
KS5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICByZXR1cm4gYnVmLT5j
b3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3NDA4MDQw
NzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLjBlY2Y4M2Q5Njk3ZjY2ZDJhZmEzN2JmYmE3ZDFkOWE2
ODY0ZjdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmUKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7Ci0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgQ29sb3JTcGFjZVNSR0IpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgIGZvciAoYXV0byByZWN0IDogbV9yZWdp
b24tPnJlY3RzKCkpIHsKICAgICAKICAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhkaXJ0eVJl
Y3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEyMjk2NGE3OWVkYmJjNGViYTlk
OTcxM2FlYzUzODU3YjdmNjZlODMuLmI2ZjY5YjU5YTJjODBlMWFiYjM3Y2U1MWI5NzExNDYzMDY4
N2NiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM3MzYsNyArMzczNiw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tn
cm91bmRDb2xvcigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3NDksNyArMzc0OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJCiAg
ICAgaWYgKGJhci5pc0N1c3RvbVNjcm9sbGJhcigpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBJbnRSZWN0IHRvRmlsbCA9IGJhci5mcmFtZVJlY3QoKTsKICAgICAgICAgdG9G
aWxsLmludGVyc2VjdChyZWN0KTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAg
IFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKGNvbnRleHQsIGJhciwgcmVjdCk7CkBAIC00MDE3
LDcgKzQwMTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFJl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGZpbGxXaXRoUmVkKQotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCkp
OwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdTaXplQWRqdXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDI2Mzc1MTE0NDYwNzU4YWE2NzRh
OGIyMjIzN2NhNWFhMTNkYzllYmUuLjAzNDY4OWFjYjdmOTA5MWQ5MDM3MWQ3MzBkZjkxOWIxNzY0
ZGRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMzNyw3ICszMzcs
NyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1l
JiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VS
ZWN0cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAg
IC8vIEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1
KSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lk
dGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwpAQCAtMzU2
LDggKzM1Niw4IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJp
ZXMoRnJhbWUmIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyCiAgICAgICAgICAgICBpbnQgYm91
bmRhcnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOwogI2VuZGlmCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0xpbmUoSW50UG9pbnQoMCwgYm91bmRhcnlMaW5lWSksIEludFBvaW50KHBhZ2VXaWR0aCwgYm91
bmRhcnlMaW5lWSkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxNWEwYmIx
ZDBjMjRkZDMxZWNjMjkzZDQ3ODE2ZDI1YjRiY2FjODMyLi5kZGVkZTY1MWQ4ZDg0NTE3MWM2YjIw
MGU2ZGM2NjFhYjQ3OGY5OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0g
bV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQ
b2ludCA9IHBhcmVudCgpLT53aW5kb3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdD
UG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBpY29uR0NQb2lu
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgKaW5kZXggZTU0YzQ2YWExY2ZmMjY0NzQ5Yzc5ODQ0OGY1YjRjMDdjYzM5OWYzOS4uY2Fl
NTI5OTQzMmNmOGViODQ4YmMzMDAyZTdhNTU1ZTI5NDVkNTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0
UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9p
ZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQorICAgIHN0YXRpYyB2b2lkIGRlZmF1
bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDcyZjJh
NjM2ZGExOGMwMmI3YzZlY2E5NGY0MDY2NWE4MDBiMmRhN2YuLjQ2ZDllZTY3MmQzNzdmNTgyM2Rj
MTM3ZmYzMjNiNGEzNTlmY2Q1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSk7CiB9CiAKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVj
dChTY3JvbGxiYXImIHNjcm9sbGJhcikKQEAgLTI4MSwxMSArMjgxLDExIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAog
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKICAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgp
KQogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3Zlcmhh
bmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlKTsKICAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDM5MDYzNDJm
NTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQuLjE5MzRiMzU2NTMyNTFlMzgzZjQ4ODU5
YzExNzIwN2U2MmNmODk0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIC8vIERyYXcgYSBnZW5l
cmljIFdpcmVsZXNzIFBsYXliYWNrIGljb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5jcHAKaW5kZXggOGZjY2RjNWZmNTk4M2ExOGFkYzFkYTdlMTM2ODc4
ZTY4ZWQwNzU2OC4uMzE0ZWVkNTMxNTNhMTcwOTdmYTE5NmU5M2RjNzcwMjQ3MWY0ZWVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5h
bWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJh
Y2tTcmNTaXplKDMyLCAyNC4wMTYpOwogICAgIGZpdENvbnRleHRUb0JveChjb250ZXh0LCB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSwgcmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDAwNTMzYWYzOTdjNzg1OTVk
YmU0MjZiNzc5ODRiNjY0NTIxMmEzYmMuLjNlYTFiNWY4OTQ3OWMxNDQ4ZDIwZDhkNjI1NDllNjU3
MjMxYjhjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTYwNywxMyArNjA3LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0
QW5pbWF0aW9uKCkKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKLSAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKCFtX2NhY2hlZEltYWdlKSB7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LAogICAgICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2Ug
ZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhp
cyByZWxheW91dC4KICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAg
ICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgIH0K
IAogICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIG1fY2FjaGVkSW1h
Z2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDQwZmM3NGEzOTJkNGQ2Njg5
NzI5ODBiZmMxY2FlNDA5YmUwYzYzZWIuLjg5MWU4YzQyM2NjNTZiYWVkYzQ5Zjg5MzU5N2FkZjFj
YTg1NDJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlk
ZTsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKQEAgLTIw
MSwxMyArMjAxLDEzIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVy
YXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoV0lOR0RJKQogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpOwogI2VuZGlmCiAKICAgICBzaXplX3QgY3VycmVudEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IGQxZDRlNzI3NzAwZDllMjhjMGNmZGIzNTRlYmI5YzljYWY5ZDE4NzUuLmNm
MmY4MGJhOTQ3YjZlM2M1ZWFkNjRlYjg1ZjU3ZWQ0YjIyY2EyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGludCBkaWZmZXJl
bmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CiB1aW50MTZfdCBmYXN0RGl2
aWRlQnkyNTUodWludDE2X3QpOwogCiAjaWYgVVNFKENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiBp
bmxpbmUgUkdCQTo6UkdCQSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNDM2ODJiMGQ3
ZWU0NzI0OGUyNjRlNWU4YTZiMmQ0NWJlYTc4MjY4NC4uNTdlM2YxYTRmMTkwNmEyNjY5ZmZmZmRk
MjAxNTU5Y2IzZWI1Y2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIENvbXBvcwogCiAgICAgaWYgKHRhcmdldFNpemUgIT0gaW1h
Z2VTaXplKQogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh0YXJnZXRTaXplLndpZHRo
KCkgLyBpbWFnZVNpemUud2lkdGgoKSwgdGFyZ2V0U2l6ZS5oZWlnaHQoKSAvIGltYWdlU2l6ZS5o
ZWlnaHQoKSkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRQb2ludCgpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQo
KSk7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9
CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAgZHJh
d0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVm
ZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRl
eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9y
U3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaAppbmRleCA4MDI4MzQ0ODBiZWIzZjUwZTg4OGQwYTM5MzM4N2M1ZWI3YWZlZTg2
Li44YWViYmM1NzM3MTQ2MGNiN2RiMzM0MDg0ZjE0NGRkZGVkNDczMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAog
ICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0lt
YWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAppbmRleCBiMTAyM2IwYWQ5ZTUxMjg5YjUwYjUyYjU1YWZhODc0
ODA0MGRmOGMxLi4wYzAzOGQ5OTYyZjU0MWEwZTRlMjVhMGQ2ODJlZWFmMTNmYjM0YzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
QEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGUgPSAwOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGY1
Y2ViNzA1MzNhNjNlNThkNDdlOWEyYjlhNjVjYzdlNDUxY2EyN2UuLjM3MjY5MWE5YjJiNzVmZTkz
MWQ1MWZmY2RhMGIxYTQzOTAxOTRkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEdyYWRpZW50
SW1hZ2U6On5HcmFkaWVudEltYWdlKCkKIHsKIH0KIAotdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK3ZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50
IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXpl
IGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHMKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAK
ICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0
LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRl
cm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRl
eCAwNTgyOGY1YTg0OTY4OTk1NGRjYzM4YjY1NzQwMTc2YTU5YjM0ZDlkLi45MjUwOWZiMWVjNTJj
NGY3MzIxNDg3ZTQ4YjhlZmM2ODIzYzVlMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAg
ICAgR3JhZGllbnRJbWFnZShQYXNzUmVmUHRyPEdyYWRpZW50PiwgY29uc3QgRmxvYXRTaXplJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDIzMDlmNWRkNWRkNTZmNjhmMWUxZWU0NmU1Y2UxN2E0NzE2Njc3MWYu
LjM4ODg5YzQ3NDA1ZTMyNzExMmY0Zjk2MTk5Y2QzYWVmMzI4YThkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MTQyLDIwICsxNDIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFp
c2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29s
b3IsIENvbG9yU3BhY2UgZWxsaXBzZUNvbG9yU3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNhdmUoKTsKIAotICAgIHNldFN0cm9r
ZUNvbG9yKHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICBzZXRGaWxsQ29sb3Io
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHNldFN0cm9rZUNvbG9yKHNoYWRv
d0NvbG9yKTsKKyAgICBzZXRGaWxsQ29sb3Ioc2hhZG93Q29sb3IpOwogCiAgICAgZHJhd0VsbGlw
c2UoRmxvYXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIDEsIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogCi0gICAgc2V0U3Ryb2tlQ29sb3IoZWxsaXBzZUNvbG9yLCBlbGxpcHNlQ29s
b3JTcGFjZSk7Ci0gICAgc2V0RmlsbENvbG9yKGVsbGlwc2VDb2xvciwgZWxsaXBzZUNvbG9yU3Bh
Y2UpOworICAgIHNldFN0cm9rZUNvbG9yKGVsbGlwc2VDb2xvcik7CisgICAgc2V0RmlsbENvbG9y
KGVsbGlwc2VDb2xvcik7CiAKICAgICBkcmF3RWxsaXBzZShyZWN0KTsgIAogCkBAIC0xNzQsMzQg
KzE3NCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwot
ICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
bV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29s
b3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID0g
dHJ1ZTsKICNlbmRpZgotICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Is
IGNvbG9yU3BhY2UpOworICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQpAQCAtMjA5LDE2ICsy
MDYsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBtX3N0YXRl
LnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7
CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dD
b2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBjbGVhclBsYXRmb3JtU2hhZG93
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNv
bnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBm
bG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUu
c2hhZG93T2Zmc2V0OwogICAgIGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3Ig
PSBtX3N0YXRlLnNoYWRvd0NvbG9yOwotICAgIGNvbG9yU3BhY2UgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2U7CiAKICAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CkBAIC0yNDEsMTMgKzIzNiwx
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogfQog
I2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKLSAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQpAQCAtMzc4LDEyICsz
NzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMo
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0
aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkp
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qo
ZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
LnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
RmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5vcmlnaW5hbFNpemUoKSk7CkBA
IC0zOTEsMjkgKzM4NSwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdAogICAgIEZsb2F0UmVj
dCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAK
LSAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
RGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
LSAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJh
d1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCkBAIC00MjEsMzIgKzQxNSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAKICAgICBp
ZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRyYXdJbWFnZShp
bWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5kcmF3
VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5sb2dp
Y2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UubG9naWNhbFNpemUoKSks
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIEZsb2F0
UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNl
LCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxv
Z2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVy
cG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5k
cmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC01MDksMjkgKzUwMywy
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHBy
ZXZpb3VzT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7Ci0gICAgZmlsbFJlY3QocmVjdCwgY29sb3IsIHN0eWxl
Q29sb3JTcGFjZSk7CisgICAgZmlsbFJlY3QocmVjdCwgY29sb3IpOwogICAgIHNldENvbXBvc2l0
ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAg
IGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKLSAgICAgICAgcGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QocmVjdCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZpbGxSZWN0KHJlY3Qu
cmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9k
ZSk7CisgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29tcG9zaXRlT3BlcmF0
aW9uKCksIGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ2LDE1ICs1NDAs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIAogICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxl
ID0gZmlsbFJ1bGUoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAg
ICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKICAgICAK
ICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgIHNldEZpbGxDb2xvcihjb2xvciwg
Y29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBh
dGgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29s
b3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9s
ZEZpbGxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiOWRjMDIzMDlmNmMzNjYxZmIyNmQ2
NzJjMjVmM2UzMjY5MTk1NDM0Li5iZTIwYTczNzlmZDg0MjkwMDFjYzFjODY1OTM3YTMxNGZlZjYz
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHRfaAog
I2RlZmluZSBHcmFwaGljc0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCkBAIC0xNDgsMTAgKzE0Nyw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAg
IFdpbmRSdWxlIGZpbGxSdWxlIHsgUlVMRV9OT05aRVJPIH07CiAKLSAgICBDb2xvclNwYWNlIHN0
cm9rZUNvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0gICAgQ29sb3JTcGFjZSBm
aWxsQ29sb3JTcGFjZSB7IENvbG9yU3BhY2VEZXZpY2VSR0IgfTsKLSAgICBDb2xvclNwYWNlIHNo
YWRvd0NvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0KICAgICBmbG9hdCBhbHBo
YSB7IDEgfTsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBv
c2l0ZVNvdXJjZU92ZXIgfTsKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9y
bWFsIH07CkBAIC0yMTQsOSArMjA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Ryb2tlU3R5
bGUoU3Ryb2tlU3R5bGUpOwogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KLSAgICBDb2xvclNw
YWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9y
U3BhY2U7IH0KIAogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAg
ICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybi5nZXQoKTsgfQpAQCAtMjI3LDkgKzIyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVs
ZTsgfQogICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
UnVsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBDb2xvciYpOwogICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yU3BhY2U7IH0KIAogICAgIHZvaWQgc2V0RmlsbFBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQpAQCAtMjYxLDcgKzI1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICB2b2lkIGRyYXdQYXRoKGNv
bnN0IFBhdGgmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBjbGlw
VG9OYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgYnVmZmVyU2l6ZSk7CiAgICAgCkBAIC0yODgsNyArMjgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHZv
aWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKTsKICAgICB2b2lkIGRyYXdDb252ZXhQ
b2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFu
dGlhbGlhcyA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29u
c3QgUGF0aCYpOwpAQCAtMjk4LDI5ICsyOTEsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKTsK
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7Ci0gICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgdm9pZCBm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFn
ZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0g
ICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAor
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJ
bWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7IH0KQEAgLTM3NiwxMyArMzY5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgYm9vbCBpc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDAp
ICYmIHN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICAvLyBMZWdhY3kgc2hh
ZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRv
dy4KICAgICAvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLSAg
ICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0TGVnYWN5U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyU2hhZG93KCk7Ci0gICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxv
YXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGdldFNoYWRvdyhGbG9h
dFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CiAKICAgICBib29sIGhhc1Zpc2libGVTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0
YXRlLnNoYWRvd0NvbG9yLmFscGhhKCk7IH0KICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OyB9CkBAIC00NjMsOCArNDU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZyYW1lQ29udHJv
bChjb25zdCBJbnRSZWN0JiByZWN0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGF0ZSk7CiAg
ICAgdm9pZCBkcmF3Rm9jdXNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpOwogICAgIHZvaWQgcGFp
bnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwotICAgIHZv
aWQgZHJhd0JpdG1hcChTaGFyZWRCaXRtYXAqLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpOwotICAgIHZvaWQgZHJh
d0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0bWFwKiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdElu
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFNpemUmIG9yaWdTb3VyY2VT
aXplKTsKKyAgICB2b2lkIGRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiwgY29uc3QgSW50UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CisgICAgdm9pZCBkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRtYXAqLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6ZSk7CiAgICAg
dm9pZCBkcmF3SWNvbihISUNPTiBpY29uLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBVSU5UIGZs
YWdzKTsKICAgICB2b2lkIGRyYXdSb3VuZENvcm5lcihib29sIG5ld0NsaXAsIFJFQ1QgY2xpcFJl
Y3QsIFJFQ1QgcmVjdFdpbiwgSERDIGRjLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2Vsc2UK
QEAgLTUyOSwxNyArNTIyLDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBsYXRmb3JtVGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKIAotICAgIHZvaWQgc2V0UGxhdGZv
cm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1TdHJv
a2VTdHlsZShTdHJva2VTdHlsZSk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVz
cyhmbG9hdCk7CiAKLSAgICB2b2lkIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYp
OwogCiAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sKTsKICAgICB2b2lk
IHNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9y
bUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCi0gICAg
dm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIGNsZWFyUGxh
dGZvcm1TaGFkb3coKTsKIAogICAgIHZvaWQgc2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CkBAIC01
NTUsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wm
IHNob3VsZEFudGlhbGlhcywgQ29sb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRlM2Q2MTUyZjY1OGFhMDkwOWVlNzBiMjY5NzAzYmM1Mjhl
NjBjZDMuLjgxZmJiMGYxZTdhY2JmMmYwOGVlZTc1NDI4YjY1OTMxMTdhNmIwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc5LDIxICs3OSwyMSBA
QCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsK
ICAgICBpZiAoIWNvbG9yLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb21w
b3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY3R4dC5jb21wb3NpdGVPcGVyYXRpb24o
KTsKICAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0
LmZpbGxSZWN0KGRzdFJlY3QsIGNvbG9yLCBzdHlsZUNvbG9yU3BhY2UpOworICAgIGN0eHQuZmls
bFJlY3QoZHN0UmVjdCwgY29sb3IpOwogICAgIGN0eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xp
ZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFko
KGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgp
IC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbAogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0
KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9u
KG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0
aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RS
ZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRp
b24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNj
YWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICAgICAgZHJhdyhjdHh0LCB0b1JlY3QsIGZy
b21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnRUaWxlUmVjdC5zaGlmdFhFZGdlVG8ob25lVGlsZVJlY3QueCgp
KTsKICAgICAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbAogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFu
c2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwog
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsK
LSAgICBkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qs
IGJsZW5kTW9kZSk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxl
bmRNb2RlKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGFydEFuaW1hdGlvbihEb05vdENh
dGNoVXApOwpAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKIAog
Ly8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5j
ZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCiB2b2lkIElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgc29saWRDb2xv
cigpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0
eHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwgb3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvCiAgICAgICAg
IHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAog
ICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0
LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkc3RS
ZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
YXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wLCBkc3RSZWN0KTsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggYTViMWU0YWUzZGNmZTk3NjE2MzBhMzBhNTY0NTI4OGU2
ZDE0NjVjYS4uNDczNzliM2U5MmU5ZTY3NWI3NTkyMzUyMDg1NTZjMzAwYjk4N2RhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
ZGVmaW5lIEltYWdlX2gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTE1NCw3ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1h
Z2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlV2l0aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBvcmlnaW5hbEltYWdlLCBDb2xvclNwYWNl
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTcxLDcgKzE2OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKICAgICBGbG9hdFJlY3QgYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1w
bGluZyhjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNjYWxlZFNpemUp
IGNvbnN0OwpAQCAtMTg2LDE2ICsxODQsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElt
YWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgdm9pZCBmaWxsV2l0
aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAKLSAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQg
Zm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0K
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgLCBCbGVu
ZE1vZGUpOwotICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pID0gMDsKKyAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUs
IFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5n
IHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCmluZGV4IDM2NjAzYjc5ZjhkMGE3ZTkyNzA3YzI1YzQ2ZDI0ZmQzZDllNTA1
MzAuLjM4M2I1NDQ0NjVkZTJmNDQ5ZmEwOGM5MjZiMjE5OTc0MzRjNjQ3NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtNjksNyArNjks
NyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VC
dWZmZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJl
dHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCKQorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQiAvKiBGSVhNRSBzUkdC
ICovKQogICAgIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIHN1Y2Nlc3MpKTsKQEAgLTEz
NCw4ICsxMzQsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwpOworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggZDBiYWQzMGU5MjcyZGZjODFhYzQ3NmYz
Njg1MTY2MGIzYzBkZjI4NS4uYTBmNjQzNGU4OWE4ODhjYjY5NzAyNmM1NmM4OGM4ZTc3MzY2ZTAy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC00MCw3ICs0MCw3IEBAIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBj
b25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7
CiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
CiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwg
dHJ1ZSk7CkBAIC03MiwxNCArNzIsMTMgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZm
ZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1v
ZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5k
TW9kZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFS
QU0oc3JjUmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIFVO
VVNFRF9QQVJBTShwaGFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwotICAgIFVOVVNF
RF9QQVJBTShzdHlsZUNvbG9yU3BhY2UpOwogICAgIFVOVVNFRF9QQVJBTShkc3RSZWN0KTsKICAg
ICBVTlVTRURfUEFSQU0oY29tcG9zaXRlT3ApOwogICAgIFVOVVNFRF9QQVJBTShibGVuZE1vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA2ZjRlY2Q5YjcyYjZjM2YzNzc3NWVjM2I5MWRl
MzFjMGNmYjdhNWNiLi5kOWYwYWMxZjMxNmM4NzYzZmFiNzc4MzRkZTEyOTIyOTZiM2U4YTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9h
dFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcAppbmRleCA4NWFlZWVmZjcyZWUyNzBlNzYwMDgwZGM2MGVlYjJiMDVjODE3NGEzLi44
YWNiZGEyODdhYzIzYWRiOGZkNTFkYmI5ZTViMzM1NWQ3MTMwZWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtODUsMTUgKzg1LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAgICAgfQog
Ci0gICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29u
c3QgRmxvYXRTaXplJiBsYXllclNpemUpCisgICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNv
bnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKLSAgICAgICAgaWYgKCFtX2xhc3RXYXNJ
bnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYm
IG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RTaGFkb3dSZWN0ID09IHNo
YWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9PSBs
YXllclNpemUpCisgICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09
IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RTaGFkb3dSZWN0ID09IHNo
YWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9PSBs
YXllclNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9sYXN0V2Fz
SW5zZXQgPSBmYWxzZTsKICAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVzOwogICAgICAgICBt
X2xhc3RDb2xvciA9IGNvbG9yOwotICAgICAgICBtX2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFj
ZTsKICAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9IHNoYWRvd1JlY3Q7CiAgICAgICAgIG1fbGFz
dFJhZGlpID0gcmFkaWk7CiAgICAgICAgIG1fbGFzdExheWVyU2l6ZSA9IGxheWVyU2l6ZTsKQEAg
LTEwMSwxNiArMTAwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJh
ZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKKyAgICBib29sIHNldENhY2hlZEluc2V0U2hhZG93
VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7Ci0gICAgICAgIGlmIChtX2xhc3RX
YXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9y
ICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RJbnNldEJvdW5kcyA9
PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1f
bGFzdFJhZGlpKQorICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09
IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBi
b3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFz
dFJhZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fbGFzdFdhc0lu
c2V0ID0gdHJ1ZTsKICAgICAgICAgbV9sYXN0SW5zZXRCb3VuZHMgPSBib3VuZHM7CiAgICAgICAg
IG1fbGFzdFJhZGl1cyA9IHJhZGl1czsKICAgICAgICAgbV9sYXN0Q29sb3IgPSBjb2xvcjsKLSAg
ICAgICAgbV9sYXN0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgICAgIG1fbGFzdFNoYWRv
d1JlY3QgPSBzaGFkb3dSZWN0OwogICAgICAgICBtX2xhc3RSYWRpaSA9IHJhZGlpOwogCkBAIC0x
NDYsNyArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9sYXN0U2hhZG93UmVjdDsK
ICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKICAgICBDb2xvciBtX2xh
c3RDb2xvcjsKLSAgICBDb2xvclNwYWNlIG1fbGFzdENvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXpl
IG1fbGFzdFJhZGl1czsKICAgICBib29sIG1fbGFzdFdhc0luc2V0OwogICAgIEZsb2F0U2l6ZSBt
X2xhc3RMYXllclNpemU7CkBAIC0xNzEsOSArMTY4LDggQEAgc3RhdGljIGZsb2F0IHJhZGl1c1Rv
TGVnYWN5UmFkaXVzKGZsb2F0IHJhZGl1cykKIH0KICNlbmRpZgogCi1TaGFkb3dCbHVyOjpTaGFk
b3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitTaGFkb3dCbHVyOjpT
aGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNl
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIDogbV9jb2xvcihjb2xvcikKLSAgICAsIG1fY29s
b3JTcGFjZShjb2xvclNwYWNlKQogICAgICwgbV9ibHVyUmFkaXVzKHJhZGl1cykKICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKICAgICAsIG1fbGF5ZXJJbWFnZSgwKQpAQCAtMTg0LDcgKzE4MCw2IEBA
IFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDCiAKIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIDogbV9jb2xvcihzdGF0ZS5zaGFkb3dD
b2xvcikKLSAgICAsIG1fY29sb3JTcGFjZShzdGF0ZS5zaGFkb3dDb2xvclNwYWNlKQogICAgICwg
bV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0JsdXIsIHN0YXRlLnNoYWRvd0JsdXIpCiAgICAgLCBt
X29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQpCiAgICAgLCBtX2xheWVySW1hZ2UoMCkKQEAgLTIw
NiwxMiArMjAxLDExIEBAIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoKQogewogfQogCi12b2lkIFNo
YWRvd0JsdXI6OnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
RmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCit2b2lkIFNoYWRvd0JsdXI6OnNldFNoYWRvd1Zh
bHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNv
bnN0IENvbG9yJiBjb2xvciwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKQogewogICAgIG1fYmx1clJh
ZGl1cyA9IHJhZGl1czsKICAgICBtX29mZnNldCA9IG9mZnNldDsKICAgICBtX2NvbG9yID0gY29s
b3I7Ci0gICAgbV9jb2xvclNwYWNlID0gY29sb3JTcGFjZTsKICAgICBtX3NoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zID0gaWdub3JlVHJhbnNmb3JtczsKIAogICAgIHVwZGF0ZVNoYWRvd0JsdXJWYWx1
ZXMoKTsKQEAgLTQ3Myw3ICs0NjcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5jbGlwKEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOwogICAgIH0K
ICAgICBncmFwaGljc0NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgRmxv
YXRSZWN0KG1fbGF5ZXJPcmlnaW4sIGJ1ZmZlclNpemUpKTsKLSAgICBncmFwaGljc0NvbnRleHQu
c2V0RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LnNldEZpbGxDb2xvcihtX2NvbG9yKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRv
dygpOwogICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QobV9sYXllck9yaWdp
biwgbV9zb3VyY2VSZWN0LnNpemUoKSkpOwpAQCAtNTcyLDcgKzU2Niw3IEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBjCiAgICAgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QubW92ZShtX2xheWVy
Q29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNo
IGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAg
IGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVk
U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1f
bGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmds
ZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywg
YnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QsIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVy
U2l6ZSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQm
IHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwpAQCAtNTgwLDcg
KzU3NCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgICAgIC8vIEFkZCBhIHBpeGVs
IHRvIGF2b2lkIGxhdGVyIGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgogICAgICAgICBzaGFk
b3dDb250ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgbV9sYXllclNpemUud2lkdGgoKSAr
IDEsIG1fbGF5ZXJTaXplLmhlaWdodCgpICsgMSkpOwogICAgICAgICBzaGFkb3dDb250ZXh0LnRy
YW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgaWYg
KHNoYWRvd2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgc2hhZG93Q29udGV4
dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CkBAIC02MTAs
NyArNjA0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LAogICAgIGJ1ZmZlclJlbGF0aXZlSG9s
ZVJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9ubHkgcmVk
cmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1h
dGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2lu
Z2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVs
YXRpdmVIb2xlUmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQg
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyht
X2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxh
dGl2ZUhvbGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+
Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
c2hhZG93Q29udGV4dCk7CkBAIC02MjcsNyArNjIxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LAogICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChob2xlUmVjdCk7CiAKICAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFkb3dD
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAg
ICBzaGFkb3dDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogCiAgICAgICAgIGJsdXJTaGFkb3dCdWZm
ZXIoZXhwYW5kZWRJbnRTaXplKG1fbGF5ZXJTaXplKSk7CkBAIC02ODEsMTQgKzY3NSwxNCBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIEZsb2F0UmVjdCB0ZW1wbGF0ZUhvbGUgPSBGbG9h
dFJlY3QoZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6ZS53
aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIDIg
KiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2NyYXRj
aCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMKLSAg
ICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hl
ZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0
ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xlLCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBib29s
IHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0
U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgdGVtcGxhdGVCb3VuZHMsIHRlbXBs
YXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAg
ICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgogICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogICAgICAgICBzaGFkb3dDb250ZXh0LmNsZWFyUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7
CiAgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
KTsKIAogICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgIHBhdGguYWRkUmVjdCh0ZW1wbGF0ZUJv
dW5kcyk7CkBAIC03MjQsNyArNzE4LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgZmlsbFN0YXRlU2F2ZXIoZ3JhcGhp
Y3NDb250ZXh0KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZF
Tk9ERCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9j
b2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9y
KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5maWxsUGF0aChleHRlcmlvclBhdGgpOwogICAgIH0KQEAgLTc0NSwxNCArNzM5
LDE0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlU2hh
ZG93ID0gRmxvYXRSZWN0KGVkZ2VTaXplLndpZHRoKCksIGVkZ2VTaXplLmhlaWdodCgpLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSAtIDIgKiBlZGdlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVp
Z2h0KCkgLSAyICogZWRnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4g
dGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3Vy
IG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBzY3JhdGNoQnVmZmVyLnNldENhY2hlZFNo
YWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVT
aGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CisgICAgYm9vbCByZWRy
YXdOZWVkZWQgPSBzY3JhdGNoQnVmZmVyLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRp
dXMsIG1fY29sb3IsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CiAKICAgICAgICAgc2hh
ZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgp
LCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKICAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwpAQCAtNzk4LDE0ICs3OTIsMTQgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEZsb2F0UmUKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0ludGVyaW9yKHNoYWRv
d0JvdW5kcy54KCkgKyBsZWZ0U2xpY2UsIHNoYWRvd0JvdW5kcy55KCkgKyB0b3BTbGljZSwgY2Vu
dGVyV2lkdGgsIGNlbnRlckhlaWdodCk7CiAgICAgICAgIGlmICghc2hhZG93SW50ZXJpb3IuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xl
YXJTaGFkb3coKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJ
bnRlcmlvcik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKLSAgICBncmFwaGljc0NvbnRleHQuc2V0
RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
IAogICAgIC8vIE5vdGUgdGhhdCBkcmF3aW5nIHRoZSBJbWFnZUJ1ZmZlciBpcyBmYXN0ZXIgdGhh
biBjcmVhdGluZyBhIEltYWdlIGFuZCBkcmF3aW5nIHRoYXQsCkBAIC04MTYsNDYgKzgxMCw0NiBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZQogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVj
dCB0aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwg
dG9wU2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0
LngoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BT
bGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdl
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNz
Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSBzaWRlLgogICAgIHRpbGVSZWN0LnNldFkodGVt
cGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UpOwogICAgIHRpbGVSZWN0LnNldEhlaWdo
dChib3R0b21TbGljZSk7CiAgICAgZGVzdFJlY3Quc2V0WShjZW50ZXJSZWN0Lm1heFkoKSk7CiAg
ICAgZGVzdFJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9s
YXllckltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gTGVmdCBzaWRlLgogICAg
IHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIHRvcFNsaWNlLCBsZWZ0U2xpY2UsIHRlbXBsYXRlU2lk
ZUxlbmd0aCk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0
U2xpY2UsIGNlbnRlclJlY3QueSgpLCBsZWZ0U2xpY2UsIGNlbnRlclJlY3QuaGVpZ2h0KCkpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogCiAgICAgLy8gVG9wIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRS
ZWN0KDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0
KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBs
ZWZ0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0
UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gVG9wIHJpZ2h0IGNvcm5lci4KICAgICB0aWxlUmVj
dCA9IEZsb2F0UmVjdCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0
U2xpY2UsIHRvcFNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lm1h
eFgoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgcmlnaHRTbGljZSwgdG9wU2xpY2UpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRlbXBs
YXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90
dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0
UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2UsIGJv
dHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogCiAgICAgLy8gQm90dG9tIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxv
YXRSZWN0KDAsIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIGJvdHRvbVNsaWNlLCBsZWZ0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAt
IGxlZnRTbGljZSwgY2VudGVyUmVjdC5tYXhZKCksIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiB9CiAK
IApAQCAtODc4LDcgKzg3Miw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93
QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBHcmFwaGljc0NvbnRleHQm
IHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CiAgICAgc2hhZG93Q29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgc2hhZG93
Q29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgc2hhZG93Q29udGV4dC5maWxsUmVj
dChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWln
aHQoKSkpOwogfQogCkBAIC04OTQsNyArODg4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBTaGFkb3dC
bHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmwK
ICAgICAvLyBXZSByZXNldCB0aGUgc2NyYXRjaCBidWZmZXIgdmFsdWVzIGhlcmUsIGJlY2F1c2Ug
dGhlIGJ1ZmZlciB3aWxsIG5vIGxvbmdlciBjb250YWluCiAgICAgLy8gZGF0YSBmcm9tIGFueSBw
cmV2aW91cyByZWN0YW5nbGUgb3IgaW5zZXQgc2hhZG93cyBkcmF3biB2aWEgdGhlIHRpbGluZyBw
YXRoLgogICAgIGF1dG8mIHNjcmF0Y2hCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KTsKLSAgICBzY3JhdGNoQnVmZmVyLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUoKSwg
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KCksIEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBzY3JhdGNoQnVmZmVyLnNldENhY2hl
ZFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUoKSwgQ29sb3I6OmJsYWNrLCBJbnRSZWN0KCksIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKICAgICBtX2xheWVySW1hZ2UgPSBz
Y3JhdGNoQnVmZmVyLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAKICAgICBH
cmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsK
QEAgLTkxNSw3ICs5MDksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmVuZFNoYWRvd0xheWVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZShjb250ZXh0KTsKIAogICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9h
dFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5jb21wb3NpdGVPcGVyYXRp
b24oKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgRmxvYXRS
ZWN0KHJvdW5kZWRJbnRQb2ludChtX2xheWVyT3JpZ2luKSwgbV9sYXllclNpemUpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBtX2xheWVyU2l6ZSksIGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9u
KCkpOwogCiAgICAgbV9sYXllckltYWdlID0gbnVsbHB0cjsKICAgICBTY3JhdGNoQnVmZmVyOjpz
aW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDIwNTBhYjljZGZhZjM5Zjdj
NjYwYTE5N2ZhNTJlYmIwYjUyNDljNWQuLmVkMTY2Y2ZjNDJjZDA0YzkyNzA0M2NhZmEyYzVhN2Yz
NWRlNGRmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmgKQEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEJsdXJTaGFkb3cKICAg
ICB9OwogCi0gICAgU2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgU2hhZG93Qmx1
cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0
IENvbG9yJik7CiAgICAgU2hhZG93Qmx1cihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwog
ICAgIFNoYWRvd0JsdXIoKTsKIAotICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIGJvb2wg
aWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFNoYWRvd1ZhbHVlcyhjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmICwgY29uc3QgQ29sb3ImLCBib29sIGlnbm9y
ZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKGJvb2wgaWdub3JlVHJhbnNmb3JtcykgeyBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0g
aWdub3JlVHJhbnNmb3JtczsgfQogICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBj
b25zdCB7IHJldHVybiBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CkBAIC0xMDQsNyArMTA0
LDYgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dUeXBlIG1fdHlwZTsKIAogICAgIENvbG9yIG1fY29s
b3I7Ci0gICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXplIG1fYmx1clJh
ZGl1czsKICAgICBGbG9hdFNpemUgbV9vZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEuLjU1YjNkNDdlNDY2
MWI5ZWY1YjM2OTdjNTE5MzY2MTg4YWRjYTEwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlQVZQbGF5ZXJMYXllcigpCiAKICAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdE5TKFth
bGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbbV92aWRlb0xheWVyIHNl
dFBsYXllcjptX2F2UGxheWVyLmdldCgpXTsKLSAgICBbbV92aWRlb0xheWVyIHNldEJhY2tncm91
bmRDb2xvcjpjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQild
OworICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoQ29s
b3I6OmJsYWNrKV07CiAjaWZuZGVmIE5ERUJVRwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0TmFtZTpA
Ik1lZGlhUGxheWVyUHJpdmF0ZSBBVlBsYXllckxheWVyIl07CiAjZW5kaWYKQEAgLTIzNDcsNyAr
MjM0Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRX
aXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7Cisg
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8vIElmIHdl
IGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3QgZHVlIHRv
IG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRlbyBmcmFt
ZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKaW5kZXggODA3ZWUxMzk1MmYxZDNjYWNiMGY1MGFmOTUxNDYwNmE4NTExYzg2OS4uNzNiY2M1
ZGYxNTUyN2UxMjIyOTc1MzliZmYxMTM3NTVjMzcwODAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC05
ODYsOCArOTg2LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCiAgICAgICAgIGlmICghbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpbWFnZSBjaGFuZ2VkOyB3ZSBoYXZl
IHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2FsbCB0bwotICAgICAgICAvLyBDR0ltYWdlQ3JlYXRl
Q29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cgY2FuIGNyZWF0ZSBhIG5ldyBpbWFnZSBldmVyeSB0
aW1lLgogICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUdyaWQuY3BwCmluZGV4IGYxODA5ZmNmMmRkYmUxMDUzMGE4YThlZGY5MDhkZTRkOTEyNmIzNWYu
LjY4Yjk1NjI4NDA1YWUwZTIxNmUzNDE0ZjNhMThiOTE3NjRiNDRmYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTY3MCw3ICs2
NzAsNyBAQCB2b2lkIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRm
b3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBHcgogCiAgICAgaW50IHJlcGFpbnRDb3VudCA9
IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChwbGF0Zm9ybUNBTGF5ZXIpOwog
ICAgIGlmIChtX2NvbnRyb2xsZXIucm9vdExheWVyKCkub3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
U2hvd1JlcGFpbnRDb3VudGVyKDApKQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBh
aW50SW5kaWNhdG9yKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIHBsYXRmb3JtQ0FMYXllciwg
cmVwYWludENvdW50LCBjYWNoZWRDR0NvbG9yKG1fY29udHJvbGxlci50aWxlRGVidWdCb3JkZXJD
b2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6
ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1D
QUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3IobV9jb250cm9sbGVyLnRpbGVEZWJ1
Z0JvcmRlckNvbG9yKCkpKTsKIAogICAgIGlmIChtX2NvbnRyb2xsZXIuc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUGFydChw
bGF0Zm9ybUNBTGF5ZXItPnBvc2l0aW9uKCkueCgpLCBwbGF0Zm9ybUNBTGF5ZXItPnBvc2l0aW9u
KCkueSgpLCBwbGF0Zm9ybUNBTGF5ZXItPmJvdW5kcygpLnNpemUoKS53aWR0aCgpLCBwbGF0Zm9y
bUNBTGF5ZXItPmJvdW5kcygpLnNpemUoKS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbkludGVybmFsLmNwcAppbmRleCA3MjEzYjViNTcxMGFjZjYxZWUxMTg3ZjNiOTQ1
N2FhNDFhMmY2NTNhLi40M2NkOWU0N2RkNTkzZjQ5NWRlZTk3YTVhNTI1MDQwNWU1YTJmMGE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpkcmF3UmVwYWludENvdW50
ZXJzKENBQ0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbgogICAgIGlmIChib3JkZXJXaWR0aCA+IDAp
CiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGNhTGF5
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihD
b2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYmFja2dyb3Vu
ZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcigyNTUsIDAsIDApKTsKIAogICAgIFBsYXRmb3Jt
Q0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dCwgb3duZXIoKSwgZHJhd0NvdW50
LCBiYWNrZ3JvdW5kQ29sb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBmNWUzZGUw
ZTUzNGIwMTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0Li5jZDU3ZWU0ODVlYTgwYzZjZjM0N2Fi
M2JkOTczN2Q1OTk5ZTEwMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwog
fQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKICAgICBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCiB7CiAgICAgaWYg
KCFkc3Qud2lkdGgoKSB8fCAhZHN0LmhlaWdodCgpIHx8ICFzcmMud2lkdGgoKSB8fCAhc3JjLmhl
aWdodCgpKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobWF5RmlsbFdpdGhTb2xpZENvbG9yKCkpIHsKLSAgICAgICAg
ZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9y
U3BhY2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdCwgc29s
aWRDb2xvcigpLCBvcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAppbmRleCBhNDJiNTRkMzgyYzQ5MmI1MDQ4NjE5MzMwMDBkM2ZkMjEzNGQ4
ODRiLi5iZjZhZmEyNGFlMDk2ZWRiM2FlN2JiZDFjNTBmMWM5ZDY0Y2I3N2E2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC00NTEsNyArNDUxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBzaGFkb3dBbmRGaWxs
Q3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFj
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CkBAIC03MjQsMTMgKzcyNCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgbV9kYXRhLT50cmFuc2xhdGUoeCwgeSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBD
b2xvciYsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxs
Q29sb3IoY29uc3QgQ29sb3ImKQogewogICAgIC8vIENhaXJvIGNvbnRleHRzIGNhbid0IGhvbGQg
c2VwYXJhdGUgZmlsbCBhbmQgc3Ryb2tlIGNvbG9ycwogICAgIC8vIHNvIHdlIHNldCB0aGVtIGp1
c3QgYmVmb3JlIHdlIGFjdHVhbGx5IGZpbGwgb3Igc3Ryb2tlCiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9y
JikKIHsKICAgICAvLyBDYWlybyBjb250ZXh0cyBjYW4ndCBob2xkIHNlcGFyYXRlIGZpbGwgYW5k
IHN0cm9rZSBjb2xvcnMKICAgICAvLyBzbyB3ZSBzZXQgdGhlbSBqdXN0IGJlZm9yZSB3ZSBhY3R1
YWxseSBmaWxsIG9yIHN0cm9rZQpAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgbV9kYXRh
LT5zZXRDVE0odHJhbnNmb3JtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0JiwgQ29s
b3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhGbG9hdFNp
emUgY29uc3QmIHNpemUsIGZsb2F0LCBDb2xvciBjb25zdCYpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByKQogICAgIGNhaXJvX3Nl
dF9maWxsX3J1bGUoY3IsIHNhdmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29ucwogICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9yLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvYXQKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCiB7CiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZl
IGFuIGltYWdlIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggM2U1MjEzZjg2ZGE2NTEy
ZGU2MWRmYTViZjlmNjVhZTcxYzgyZTNkZi4uMjU2ZDFjYzgzMTNiYThiMDcxODdjNzUwYjFjOTY0
NjcyZGY4ZTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE2NSwxOSArMTY1LDE5IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zCiAgICAgY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+
cHVzaEltYWdlTWFzayhtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBtYXNrUmVjdCk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIEJhY2tpbmdT
dG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09ICZjb250ZXh0KCkgPyBD
b3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0lt
YWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkKKyAgICBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQogewog
ICAgIGlmIChSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkKLSAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVj
dCk7CisgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBJbWFn
ZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBs
b29rVXBUYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggZTRjNjNhMzQ2ZTIyZGZiMzRlY2ViYjc3MjYzYjc0
ZTM3NzdiMGU5NC4uMTFlNTdiNGJkMWMwODVlYzQxODcwOWRlNDdlZmE4MmI5Mjc3YTI2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAKQEAgLTQyLDkgKzQyLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0g
ICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBjb250
ZXh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIGNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBjb250
ZXh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIAogICAgIGlmIChpbWFnZU9ic2Vy
dmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAK
aW5kZXggNTlhOGNkYmRlNmRhNTI5ZWM1MTFjY2MyMjBjNDcyODA4MTAzMmJjYy4uYmY2ZjI4Njkz
NmZmYWNhMTQ1NWY0YTU4NjBlNzEwYTYzOWQ1YzA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKQEAgLTIwMyw3ICsy
MDMsNyBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJh
eSgpCiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCiB7CiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hVcCk7CkBAIC0y
MjYsNyArMjI2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewotICAgICAgICBmaWxsV2l0
aFNvbGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNl
LCBjb21wb3NpdGVPcCk7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVj
dCwgc29saWRDb2xvcigpLCBjb21wb3NpdGVPcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIGlmIChkZXNj
cmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKIAotICAgIGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbWFn
ZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRl
T3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkK
ICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCA4YTdmZWJlZDU0MDgz
N2VkMTIzMDBkN2IyOGIzN2JhYjc4NmZmZjM1Li45YTQ4YTMzMWRmMzA4MzcwYTNjZTMzNTg2YWM1
ZTI1ZmM4YWRkZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvckNHLmNwcApAQCAtOTksMjYgKzk5LDI2IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVm
IGNvbG9yKQogICAgIG1fdmFsaWQgPSB0cnVlOwogfQogCi1zdGF0aWMgQ0dDb2xvclJlZiBsZWFr
Q0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRp
YyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBDR0Zs
b2F0IGNvbXBvbmVudHNbNF07CiAgICAgY29sb3IuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21w
b25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKLSAgICByZXR1cm4gQ0dD
b2xvckNyZWF0ZShjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSksIGNvbXBvbmVudHMpOwor
ICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMp
OwogfQogCi10ZW1wbGF0ZTxDb2xvclNwYWNlIGNvbG9yU3BhY2U+IHN0YXRpYyBDR0NvbG9yUmVm
IGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorQ0dDb2xvclJlZiBjYWNoZWRDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBzd2l0Y2ggKGNvbG9yLnJnYigpKSB7CiAg
ICAgY2FzZSBDb2xvcjo6dHJhbnNwYXJlbnQ6IHsKLSAgICAgICAgc3RhdGljIENHQ29sb3JSZWYg
dHJhbnNwYXJlbnRDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAg
ICAgICBzdGF0aWMgQ0dDb2xvclJlZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihj
b2xvcik7CiAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudENHQ29sb3I7CiAgICAgfQogICAgIGNh
c2UgQ29sb3I6OmJsYWNrOiB7Ci0gICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIGJsYWNrQ0dDb2xv
ciA9IGxlYWtDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgc3RhdGljIENHQ29s
b3JSZWYgYmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICByZXR1cm4g
YmxhY2tDR0NvbG9yOwogICAgIH0KICAgICBjYXNlIENvbG9yOjp3aGl0ZTogewotICAgICAgICBz
dGF0aWMgQ0dDb2xvclJlZiB3aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JT
cGFjZSk7CisgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0Nv
bG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHdoaXRlQ0dDb2xvcjsKICAgICB9CiAgICAgfQpA
QCAtMTM0LDcgKzEzNCw3IEBAIHRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGlj
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sCiAgICAgICAgICAgICBy
ZXR1cm4gY2FjaGVkQ0dDb2xvcnNbaV0uZ2V0KCk7CiAgICAgfQogCi0gICAgQ0dDb2xvclJlZiBu
ZXdDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAgIENHQ29sb3JS
ZWYgbmV3Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yKTsKIAogICAgIHN0YXRpYyBzaXplX3Qg
Y3Vyc29yOwogICAgIGNhY2hlZFJHQkFWYWx1ZXNbY3Vyc29yXSA9IGNvbG9yLnJnYigpOwpAQCAt
MTQ1LDIwICsxNDUsNiBAQCB0ZW1wbGF0ZTxDb2xvclNwYWNlIGNvbG9yU3BhY2U+IHN0YXRpYyBD
R0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbAogICAgIHJldHVybiBuZXdD
R0NvbG9yOwogfQogCi1DR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0g
ICAgY2FzZSBDb2xvclNwYWNlRGV2aWNlUkdCOgotICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xv
cjxDb2xvclNwYWNlRGV2aWNlUkdCPihjb2xvcik7Ci0gICAgY2FzZSBDb2xvclNwYWNlU1JHQjoK
LSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3I8Q29sb3JTcGFjZVNSR0I+KGNvbG9yKTsKLSAg
ICBjYXNlIENvbG9yU3BhY2VMaW5lYXJSR0I6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9y
PENvbG9yU3BhY2VMaW5lYXJSR0I+KGNvbG9yKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotfQotCiB9CiAKICNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmlu
ZGV4IDk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMuLjM3YTcyODk5MDkz
ODE3Y2I4OWEzMTFlMGMwOTdjM2ZlNDJiMGIzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBA
IC01MzYsNyArNTM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhj
b25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWcKICAgICBjb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZUhl
aWdodCk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9s
YXRpb25Ob25lKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLmdldCgpLCBp
bWFnZVNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAzNjBlMzg3Y2M4MzFhNjMwNzc2
NDMzYmY2MTVjYzhiY2M4M2U4ZDVmLi4yYWM5NGIyZDUxMjdmZDA4ZWY1ZmZjMjlkYjEzMTcwMGZj
Y2I1ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC02MywxNiArNjMsMTcgQEAgdXNpbmcgV1RG
OjpHZW5lcmljSGFzaFRyYWl0czsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9p
ZCBzZXRDR0ZpbGxDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitzdGF0aWMgdm9pZCBzZXRDR0ZpbGxDb2xvcihDR0Nv
bnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIENHQ29udGV4dFNl
dEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBjb2xvclNw
YWNlKSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hl
ZENHQ29sb3IoY29sb3IpKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0Q0dTdHJva2VDb2xvcihDR0Nv
bnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCitzdGF0aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBj
b25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29s
b3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSkpOworICAgIENHQ29u
dGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3Ip
KTsKIH0KIAorLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgc29vbi4KIENHQ29sb3JT
cGFjZVJlZiBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkKIHsKICAgICBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIGRldmljZVNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CkBAIC04
MSw5ICs4Miw2IEBAIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkKIAog
Q0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCkKIHsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgcmV0dXJuIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCiAgICAgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBzUkdCU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShr
Q0dDb2xvclNwYWNlU1JHQik7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIC8vIE91dC1vZi1kYXRl
IENHIGluc3RhbGxhdGlvbnMgd2lsbCBub3QgaG9ub3Iga0NHQ29sb3JTcGFjZVNSR0IuIFRoaXMg
bG9naWMgYXZvaWRzCkBAIC05Myw3ICs5MSw2IEBAIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZVJlZigpCiAgICAgICAgIHNSR0JTcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsK
ICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIHNSR0JTcGFjZTsKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpCiB9CiAKICNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKElPUykK
QEAgLTEyNyw4ICsxMjQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KENH
Q29udGV4dFJlZiBjZ0NvbnRleHQpCiAgICAgc2V0UGFpbnRpbmdEaXNhYmxlZCghY2dDb250ZXh0
KTsKICAgICBpZiAoY2dDb250ZXh0KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGV4
dCBzdGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KLSAgICAgICAgc2V0UGxhdGZvcm1GaWxs
Q29sb3IoZmlsbENvbG9yKCksIGZpbGxDb2xvclNwYWNlKCkpOwotICAgICAgICBzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAg
IHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xvcigpKTsKKyAgICAgICAgc2V0UGxhdGZvcm1T
dHJva2VDb2xvcihzdHJva2VDb2xvcigpKTsKICAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VUaGlj
a25lc3Moc3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICBtX3N0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgPSBjb252ZXJ0SW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dDb250ZXh0R2V0SW50
ZXJwb2xhdGlvblF1YWxpdHkocGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICB9CkBAIC0xNjMsNyAr
MTYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAg
ICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxz
ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UoaW1hZ2VQdHIpOwogCkBAIC0yNTQsOSArMjUxLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0
U2kKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgYWRqdXN0ZWREZXN0UmVj
dC5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogCi0g
ICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4KLSAgICBpbWFnZSA9IEltYWdlOjppbWFnZVdp
dGhDb2xvclNwYWNlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UpOwotCiAgICAgLy8gRHJh
dyB0aGUgaW1hZ2UuCiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIGFkanVzdGVkRGVz
dFJlY3QsIGltYWdlLmdldCgpKTsKIH0KQEAgLTI4MCw3ICsyNzQsNyBAQCBzdGF0aWMgdm9pZCBw
YXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIXBhdHRl
cm5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMyMCw5ICsz
MTQsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICBzdWJJbWFnZSA9IGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7CiAg
ICAgfQogCi0gICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4KLSAgICBzdWJJbWFnZSA9IElt
YWdlOjppbWFnZVdpdGhDb2xvclNwYWNlKHN1YkltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2Up
OwotCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVz
ZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAog
ICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1l
Y2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICog
bmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7CkBAIC0zNTAsNyAr
MzQxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgaWYgKCFwYXR0ZXJuKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+
IHBhdHRlcm5TcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKSk7Cisg
ICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0Q0Yo
Q0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybihudWxscHRyKSk7CiAKICAgICAgICAgQ0dGbG9hdCBh
bHBoYSA9IDE7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0Q0Yo
Q0dDb2xvckNyZWF0ZVdpdGhQYXR0ZXJuKHBhdHRlcm5TcGFjZS5nZXQoKSwgcGF0dGVybi5nZXQo
KSwgJmFscGhhKSk7CkBAIC0zOTQsNyArMzg1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAg
ICAgICAvLyBXZSBkbyBhIGZpbGwgb2YgZm91ciByZWN0cyB0byBzaW11bGF0ZSB0aGUgc3Ryb2tl
IG9mIGEgYm9yZGVyLgogICAgICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsK
ICAgICAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBzdHJva2VDb2xvcigpKQotICAgICAgICAgICAg
c2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgp
KTsKKyAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCkpOwog
ICAgICAgICBDR1JlY3QgcmVjdHNbNF0gPSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QocmVjdC54
KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIGJvcmRlclRoaWNrbmVzcyksCiAgICAgICAgICAg
ICBGbG9hdFJlY3QocmVjdC54KCksIHJlY3QubWF4WSgpIC0gYm9yZGVyVGhpY2tuZXNzLCByZWN0
LndpZHRoKCksIGJvcmRlclRoaWNrbmVzcyksCkBAIC00MDMsNyArMzk0LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZXNzKQogICAgICAgICB9OwogICAgICAgICBDR0NvbnRleHRGaWxsUmVjdHMoY29udGV4
dCwgcmVjdHMsIDQpOwogICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkp
Ci0gICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIGZpbGxD
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmls
bENvbG9yKTsKICAgICB9CiB9CiAKQEAgLTQzMiw3ICs0MjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludAogICAgIGlmIChkcmF3c0Rhc2hlZExpbmUpIHsKICAgICAgICAgLy8gRmlndXJlIG91
dCBlbmQgcG9pbnRzIHRvIGVuc3VyZSB3ZSBhbHdheXMgcGFpbnQgY29ybmVycy4KICAgICAgICAg
Y29ybmVyV2lkdGggPSBzdHJva2VTdHlsZSA9PSBEb3R0ZWRTdHJva2UgPyB0aGlja25lc3MgOiBz
dGQ6Om1pbigyICogdGhpY2tuZXNzLCBzdGQ6Om1heCh0aGlja25lc3MsIHN0cm9rZVdpZHRoIC8g
MykpOwotICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xvcigpLCBzdHJv
a2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VD
b2xvcigpKTsKICAgICAgICAgaWYgKGlzVmVydGljYWxMaW5lKSB7CiAgICAgICAgICAgICBDR0Nv
bnRleHRGaWxsUmVjdChjb250ZXh0LCBGbG9hdFJlY3QocG9pbnQxLngoKSwgcG9pbnQxLnkoKSwg
dGhpY2tuZXNzLCBjb3JuZXJXaWR0aCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3Qo
Y29udGV4dCwgRmxvYXRSZWN0KHBvaW50MS54KCksIHBvaW50Mi55KCkgLSBjb3JuZXJXaWR0aCwg
dGhpY2tuZXNzLCBjb3JuZXJXaWR0aCkpOwpAQCAtNjA3LDcgKzU5OCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKCkKICAgICBpZiAoIXBsYXRmb3JtUGF0dGVybikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVy
blNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKKyAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBwYXR0ZXJuU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZVBhdHRlcm4obnVsbHB0cikpOwogICAgIENHQ29udGV4dFNldEZpbGxDb2xvclNwYWNl
KGNnQ29udGV4dCwgcGF0dGVyblNwYWNlLmdldCgpKTsKIAogICAgIGNvbnN0IENHRmxvYXQgcGF0
dGVybkFscGhhID0gMTsKQEAgLTgzNywxNyArODI4LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgQ0dDb250ZXh0RmlsbFJlY3Qo
Y29udGV4dCwgcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250
ZXh0KCk7CiAgICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7Ci0gICAgQ29sb3JT
cGFjZSBvbGRDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKIAotICAgIGlmIChvbGRGaWxs
Q29sb3IgIT0gY29sb3IgfHwgb2xkQ29sb3JTcGFjZSAhPSBjb2xvclNwYWNlKQotICAgICAgICBz
ZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xvciwgY29sb3JTcGFjZSk7CisgICAgaWYgKG9sZEZp
bGxDb2xvciAhPSBjb2xvcikKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29sb3Ip
OwogCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYg
aGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyAv
LyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KICAgICBDR0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZHJhd093blNoYWRvdyk7CkBAIC04NjQsMjEgKzg1
NCwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogICAgIGlmIChkcmF3T3duU2hhZG93KQog
ICAgICAgICBzdGF0ZVNhdmVyLnJlc3RvcmUoKTsKIAotICAgIGlmIChvbGRGaWxsQ29sb3IgIT0g
Y29sb3IgfHwgb2xkQ29sb3JTcGFjZSAhPSBjb2xvclNwYWNlKQotICAgICAgICBzZXRDR0ZpbGxD
b2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9yU3BhY2UpOworICAgIGlmIChvbGRG
aWxsQ29sb3IgIT0gY29sb3IpCisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZp
bGxDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDb2xvciBv
bGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAgICBDb2xvclNwYWNlIG9sZENvbG9yU3BhY2Ug
PSBmaWxsQ29sb3JTcGFjZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8fCBv
bGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yKQor
ICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xvcik7CiAKICAgICBib29sIGRyYXdP
d25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KCkg
JiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dC
bHVyIGZvciBjYW52YXMgeWV0LgogICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0LCBkcmF3T3duU2hhZG93KTsKQEAgLTkwNiwxMSArODk1LDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpCiAgICAgICAgIHN0YXRlU2F2ZXIu
cmVzdG9yZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNw
YWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZp
bGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CisgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvcikK
KyAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xkRmlsbENvbG9yKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNywxMCAr
OTE2LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKIAogICAgIFdpbmRSdWxlIG9sZEZpbGxS
dWxlID0gZmlsbFJ1bGUoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsK
LSAgICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKICAg
ICAKICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgIHNldEZpbGxDb2xvcihjb2xv
ciwgY29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIC8vIGZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKCkgYXNzdW1lcyB0aGF0IHRoZSBlZGdlcyBvZiByZWN0IGFyZSBj
bGlwcGVkIG91dCwgc28gd2Ugb25seSBjYXJlIGFib3V0IHNoYWRvd3MgY2FzdCBhcm91bmQgaW5z
aWRlIHRoZSBob2xlLgogICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29u
dGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJh
bnNmb3JtczsKQEAgLTk0OSw3ICs5MzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAg
ICAgICBzdGF0ZVNhdmVyLnJlc3RvcmUoKTsKICAgICAKICAgICBzZXRGaWxsUnVsZShvbGRGaWxs
UnVsZSk7Ci0gICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvciwgb2xkRmlsbENvbG9yU3BhY2Up
OworICAgIHNldEZpbGxDb2xvcihvbGRGaWxsQ29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC0xMDU5LDcgKzEwNDcsNyBAQCBz
dGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91bmRJZk5lZWRlZChjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsCiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQg
Ymx1ciwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTEwOTksNyArMTA4Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIENHQ29udGV4dFNldFNo
YWRvdyhjb250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzKTsK
ICAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBD
R1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNoZWRDR0NvbG9yKGNv
bG9yLCBjb2xvclNwYWNlKSk7CisgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihj
b250ZXh0LCBDR1NpemVNYWtlKHhPZmZzZXQsIHlPZmZzZXQpLCBibHVyUmFkaXVzLCBjYWNoZWRD
R0NvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRmb3Jt
U2hhZG93KCkKQEAgLTEzOTYsMTIgKzEzODQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERhc2hBcnJheSYK
ICAgICB9CiAKICAgICBpZiAoZmlsbENvbG9ySXNOb3RFcXVhbFRvU3Ryb2tlQ29sb3IpCi0gICAg
ICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBsb2NhbFN0cm9rZUNvbG9yLCBz
dHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRDR0ZpbGxDb2xvcihwbGF0Zm9ybUNvbnRl
eHQoKSwgbG9jYWxTdHJva2VDb2xvcik7CiAKICAgICBDR0NvbnRleHRGaWxsUmVjdHMocGxhdGZv
cm1Db250ZXh0KCksIGRhc2hCb3VuZHMuZGF0YSgpLCBkYXNoQm91bmRzLnNpemUoKSk7CiAKICAg
ICBpZiAoZmlsbENvbG9ySXNOb3RFcXVhbFRvU3Ryb2tlQ29sb3IpCi0gICAgICAgIHNldENHRmls
bENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7
CisgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBmaWxsQ29sb3IoKSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGlu
aywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCkBAIC0xNTAxLDExICsxNDg5LDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01v
ZGVGbGFncyBtb2RlKQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIHNldENHU3Ryb2tlQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yLCBjb2xvclNw
YWNlKTsKKyAgICBzZXRDR1N0cm9rZUNvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9h
dCB0aGlja25lc3MpCkBAIC0xNTE1LDExICsxNTAzLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiAgICAgQ0dDb250
ZXh0U2V0TGluZVdpZHRoKHBsYXRmb3JtQ29udGV4dCgpLCBzdGQ6Om1heCh0aGlja25lc3MsIDAu
ZikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDR0ZpbGxDb2xv
cihwbGF0Zm9ybUNvbnRleHQoKSwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgIHNldENHRmlsbENv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXgg
MzIyMzIwMmI3Mjc4ODI3MmYxNjgwMzE2NGI2M2IxN2JkZGEyOWEwYy4uOTUwNDY5YWE1NjI0Mjlk
ZTBiMmQ1ZjFlZWM0MGUzODIyZWNhZmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTE4NSw3ICsxODUsNyBA
QCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpbwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUoKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
OwotICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgp
LmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNw
YWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworICAgICAgICBSZXRh
aW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUoMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0
ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkgLyogRklY
TUUgKi8sIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAg
IENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgbG9naWNhbFNpemUoKSkpOwogICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5V
c2VyU3BhY2UgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShsb2dpY2FsU2l6ZSgpLCBtX2RhdGEuYmFj
a2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOwpAQCAtMjI4LDEwICsyMjgsOSBAQCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIFVOVVNFRF9QQVJBTSh1c2VMb3dRdWFsaXR5
U2NhbGUpOwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9ICgmZGVzdENvbnRleHQgPT0gJmNv
bnRleHQoKSkgPyBDb2xvclNwYWNlRGV2aWNlUkdCIDogc3R5bGVDb2xvclNwYWNlOwogCiAgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwogICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNv
bnRleHQoKSB8fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQpAQCAtMjQxLDEw
ICsyNDAsMTAgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKIAogICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29s
dXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGNvbG9yU3BhY2Us
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIElt
YWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZl
cjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQogewogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUp
OwpAQCAtMjUyLDE0ICsyNTEsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKICAgICBpZiAo
IWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIGlmICgmZGVzdENv
bnRleHQgPT0gJmNvbnRleHQoKSB8fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlC
YWNraW5nU3RvcmUpKSAvLyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVl
cCBjb3B5LgotICAgICAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBh
ZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNv
bG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBjb3B5
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXJpbmcg
PSBjb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAgICAgICAgIGltYWdl
Rm9yUmVuZGVyaW5nLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVz
dFJlY3QsIGJsZW5kTW9kZSk7CisgICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRy
YXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRl
eHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0
eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgICAgICAgICAgY29w
eS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAK
aW5kZXggNzVhYmJmOGNkMTY0Y2Q1Mzk1OGQ0ZmQ2NmNhMTNhOTQxODY5ODc0OS4uZjNkZDAyMmE5
MDVhNjJlNGMxMTgzOWFkZDRjYTZmMGIwOTM2MWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKQEAgLTQ1LDM1ICs0NSwxMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZTo6aW1hZ2VX
aXRoQ29sb3JTcGFjZShDR0ltYWdlUmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKLXsKLSAgICBDR0NvbG9yU3BhY2VSZWYgb3JpZ2luYWxDb2xvclNwYWNlID0gQ0dJbWFn
ZUdldENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSk7Ci0KLSAgICAvLyBJZiB0aGUgaW1hZ2UgYWxy
ZWFkeSBoYXMgYSAobm9uLWRldmljZSkgY29sb3Igc3BhY2UsIHdlIGRvbid0IHdhbnQgdG8KLSAg
ICAvLyBvdmVycmlkZSBpdCwgc28gcmV0dXJuLgotICAgIGlmICghb3JpZ2luYWxDb2xvclNwYWNl
IHx8ICFDRkVxdWFsKG9yaWdpbmFsQ29sb3JTcGFjZSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
KSkKLSAgICAgICAgcmV0dXJuIG9yaWdpbmFsSW1hZ2U7Ci0KLSAgICBzd2l0Y2ggKGNvbG9yU3Bh
Y2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBvcmln
aW5hbEltYWdlOwotICAgIGNhc2UgQ29sb3JTcGFjZVNSR0I6Ci0gICAgICAgIHJldHVybiBhZG9w
dENGKENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSwgc1JHQkNv
bG9yU3BhY2VSZWYoKSkpOwotICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAg
cmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbElt
YWdlLCBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCkpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gb3JpZ2luYWxJbWFnZTsKLX0KLQogdm9pZCBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3R4dC5k
cmF3UGF0dGVybigqdGhpcywgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0
LmRyYXdQYXR0ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKaW5kZXggODJhM2E1YjRkZWE4ZjRmNjYyNWEyZWFmNTQ3M2QzYWVkZWM2NGU1YS4uYmZjZWEy
ODg5ODc3OTk2YzBlNjhkMjdhOTY4YTcxNzM1YjZkNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAg
LTE3OSw3ICsxNzksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdl
SWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0KIAotdm9p
ZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgICAgIGNv
bnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJ
bWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hl
ZEltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsKKyAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBkc3RSZWN0KTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmco
Y29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICBkcmF3UERGUGFnZShjb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuaAppbmRleCA3ZmZkNjAzYjZmMWJmMzkwMzE1NTRjYjBkMDdlMzNmNWY5
MmNkOGJmLi45YTRjMWU5ZTBiNTFlMzlkNTBhNDRiMTliOTE1NTViZDliMDU2OTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50
cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAg
dmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQppbmRleCA4MzljYTAzZDkzNmY1MmQ2MzQw
NWIyNWVlOTlmODk4MDZjZWJkNzIzLi5kMWRjYmQ2NmVlYWVjMzZlZGExZjc4MmE1MjRjMGJjNTA1
YjVkMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FzY2FkZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KQEAgLTMzMyw5ICszMzMsNyBAQCB2b2lkIEZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgRwogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQg
c2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBDb2xvclNwYWNlIHNoYWRv
d0NvbG9yU3BhY2U7Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQuZmls
bENvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmdldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIEFmZmlu
ZVRyYW5zZm9ybSBjb250ZXh0Q1RNID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBmbG9hdCBzeW50
aGV0aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CkBAIC0zNTIsMTQg
KzM1MCwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICBjb250ZXh0LmNsZWFy
U2hhZG93KCk7CiAgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7
CiAgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93
Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICog
ZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihz
aGFkb3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihzaGFkb3dGaWxsQ29sb3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBv
aW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFy
ZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29y
ZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFk
b3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dD
b250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6
ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgaWYg
KHN5bnRoZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2Vz
KEZsb2F0UG9pbnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0
WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2Fz
dDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7
Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2Up
OworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAg
IGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM3MCw3ICszNjgsNyBAQCB2b2lkIEZvbnRD
YXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQo
cG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250
ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+
KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKIAogICAgIGlmIChoYXNT
aW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0
LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogI2lm
ICFQTEFURk9STShJT1MpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDExMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwCmluZGV4IGVkZWY1NzgwMTgyZmNjODBmZTU3OTUzOTEyZDRhZDk1YTM3NmEw
M2MuLmZmOTExMWM0YjYwMzI1NDZkNDc0M2MxYzRlZjA3ODViM2M0NjE0YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApA
QCAtNzUsOCArNzUsOCBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZl
ciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2lj
YWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21v
ZGUpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21w
b3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNw
cAppbmRleCA3OGZmZGNlNGQ1OTFhZDZhODEyMmZlNjM4ODIzOTNmZjU1MWFlNzcyLi42ODYwZDdk
ZGZlNmEwMTViZWY5ODQ2MGM4YmNiN2ViY2M0ZmU1NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
OwogICAgIGlmIChpbkJ1ZmZlcikKLSAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3
SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIHJlc3VsdElt
YWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAgSW50UmVjdCBpbWFn
ZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkpOwogICAgIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRVbm11bHRp
cGxpZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggOWExNTZmODk0
ZGYxNDNlZThlMzg1ODY4NzhkMDcwOTIyOGUxYmZlOS4uODg4ODQ2YWNjZWQwMjIyYjhlY2I4OTQ3
MTRlMmJlMTZiNGUxZDEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCB2
b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgc3dpdGNoICht
X3R5cGUpIHsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwg
Q29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjogewog
ICAgICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAgLTI5
NCwyMSArMjk0LDIxIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAgICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJl
Y3QgLSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291
cmNlUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0
aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRq
dXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1
c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3Rl
ZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3Vy
Y2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRl
ckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3Np
dGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3Qo
KSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6ZSgpKSwgQ29t
cG9zaXRlRGVzdGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9T
SVRFX09QRVJBVE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50
UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9w
KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQ
b2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3Ap
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFp
bnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+
bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4y
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBDb21wb3NpdGVYT1IpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAppbmRleCBkY2U1YWFlMjVmMjk3YWE4OGI2Zjhh
ODNjYmMyZGE4NGIwMGNlOTZlLi5jMGU4OTQyNDE1OTFmNzM0M2ZjNzZlNGVlOTQ2NWQzNDNiODJh
YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRkVEcm9wU2hhZG93LmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTkzLDEwICs5MiwxMCBAQCB2b2lkIEZFRHJv
cFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEdyYXBoaWNzQ29udGV4dCYg
cmVzdWx0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgcmVzdWx0Q29udGV4
dC5zZXRBbHBoYShtX3NoYWRvd09wYWNpdHkpOwotICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCpzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldp
dGhPZmZzZXQpOworICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFn
ZSwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEo
MSk7CiAKLSAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBt
X3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBTaGFkb3dCbHVyIGNvbnRl
eHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yKTsKIAogICAgIC8vIFRP
RE86IERpcmVjdCBwaXhlbCBhY2Nlc3MgdG8gSW1hZ2VCdWZmZXIgd291bGQgYXZvaWQgY29weWlu
ZyB0aGUgSW1hZ2VEYXRhLgogICAgIEludFJlY3Qgc2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1
bHRJbWFnZS0+aW50ZXJuYWxTaXplKCkpOwpAQCAtMTA3LDEwICsxMDYsMTAgQEAgdm9pZCBGRURy
b3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5
dGVBcnJheShQcmVtdWx0aXBsaWVkLCBzcmNQaXhlbEFycmF5LmdldCgpLCBzaGFkb3dBcmVhLnNp
emUoKSwgc2hhZG93QXJlYSwgSW50UG9pbnQoKSwgSW1hZ2VCdWZmZXI6OkJhY2tpbmdTdG9yZUNv
b3JkaW5hdGVTeXN0ZW0pOwogCiAgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlU291cmNlSW4pOwotICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0Nv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0KEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFk
b3dDb2xvcik7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlRGVzdGluYXRpb25PdmVyKTsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0lt
YWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUlt
YWdlLCBkcmF3aW5nUmVnaW9uKTsKIH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5j
cHAKaW5kZXggN2VkNDI5ZjAzMzk2ZTgyYzg5NmI1MzY3MDIyNmQwMThhYjIzNzJhNC4uZThkYThk
MzFmNDU1YmQ5ZWRkOGNiMDlhM2NiZmUxOWM3YTQxMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCkBAIC03NCw3ICs3
NCw3IEBAIHZvaWQgRkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQ29sb3IgY29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29s
b3IoKS5yZ2IoKSwgZmxvb2RPcGFjaXR5KCkpOwotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCku
ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCkpLCBjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgp
LnNpemUoKSksIGNvbG9yKTsKIH0KIAogdm9pZCBGRUZsb29kOjpkdW1wKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4
IGEwMmQ5ZmRhZTI0NWE1ZmVkYzUxOWM4MzAwYzAzMzFkMGQ3MjFiZTcuLjMyY2YyNTRkNWVjYWQz
MTQ2M2JhNTNkZGE0Mjg2NTk5NDZjNDU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2
b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRF
ZmZlY3QoaSk7CiAgICAgICAgIGlmIChJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFn
ZUJ1ZmZlcigpKQotICAgICAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlu
QnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKaW5kZXggMThhMmU3OTFkNTgz
YmFjZGNkMWM3YmU2ZDA1N2Y1MGI5YjUxOTFjYS4uZGRlZjU4NzkxY2ZhMjQ4NThjYWZhNmI0MjAz
YzBjZDI0NWNlMWQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU9mZnNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBGRU9mZnNl
dDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAg
IEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3Zl
KGZpbHRlci5hcHBseUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGljYWxT
Y2FsZShtX2R5KSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIo
KmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdp
b24pOwogfQogCiB2b2lkIEZFT2Zmc2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCBhMTg3Yjc0ZmZmZmRk
NWE5NzQ0ZGM2OTdjY2M1ZWVhYzIwZWRmMzAyLi5jNzA0NGEwMjcxYTRiZTJlNmQ5YmNhYTJlMDBl
ZTYyNWU3MmRjOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250
ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xh
dGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwot
ICAgIHRpbGVJbWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CisgICAgdGls
ZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRpbGVJbWFn
ZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHAKaW5kZXggMWUzYjkxYTIyNDQ4ZjE4Y2FhNDE2ZmIxMDZhMjg0MGEwMDJh
MzFiYi4uNzI0ODkzYmFhMDU4MjFmMWJlNTlhZTc2ZjVlNmQxZWNmZDUwOGFlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKQEAgLTU4LDggKzU4LDggQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0ZXJDb250
ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAg
IGZpbHRlckNvbnRleHQuZmlsbFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2spOworICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgSW50UG9pbnQoKSwgQ29t
cG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHAKaW5kZXggZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2NTlkNmNkMzMw
MGViYi4uNjFiYjFiOGJjOTI1Mzc2Njc1MWY2NjNhNDQ3Yzk1NWMxZmZlMTlmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VC
dWZmZXIoKnNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAg
ICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIElu
dFBvaW50KCkpOwogfQogCiB2b2lkIFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQppbmRleCBiZTM1MDc2MDkz
MGNhYWJjYzFjZmVmM2JhMjRjMjE0MjkwNzEwNjllLi4yMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4
NmQyMjQ5YjgxZDlkNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvSWNvbklPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEljb246OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKICAgICBGbG9h
dFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogCiAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25IaWdoKTsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShtX2NnSW1hZ2UuZ2V0KCksIHNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2NnSW1h
Z2UuZ2V0KCksIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5kZXggNjk4
Mjg1NDg2OTFhMDU4ODE5ZWVjNzZmNDI5N2VmNTZjMjY4ZGM2Ny4uMDY0MjQzYjRiOWJmMWNmN2E0
OGMwMDk5YjIwZGFjNzk4YjViMWM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvU3VyZmFjZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UobV9p
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbV9yZWN0LCBtX3JlY3QpOworICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZShtX2ltYWdlLCBtX3JlY3QsIG1fcmVjdCk7CiAgICAgfQogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKaW5kZXggZmUyODE1MTIxYTU3
MDQ0Njc2MTBhNDUwNjY0ZDE5NDhkODEzZjhmZC4uZGI4NmY5NTE4MmEwMDIwNWVjMWFjYWZiNDgw
MmVkMjE0ZTY3MDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX3N1cHBvcnRzQWxw
aGEpIHsKICAgICAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZUNvcHkpOwotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIG1fc2l6ZSksIENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
bV9zaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5k
ZXggYTI3YTJlZjZmZWNmN2U4OGQyYWEzNWYxZThjYWE2NTI1NjFhZmNhNi4uOTJjZjcyZTAyMzkz
Y2E1OGJkN2EwNzJiY2JjMmVkMWNhYWI3MDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTE4MywxNSArMTgzLDEzIEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsCiAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAg
ICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3Bh
Y2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBncmFwaGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAg
IGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvcik7CiAKICAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC50
ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgp
ICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9u
T3JGbGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsKICAgICAgICAgLy8gUGFp
bnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFk
b3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAgICBncmFw
aGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3Jh
cGhpY3NDb250ZXh0LmZpbGxDb2xvcigpOwotICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNw
YWNlID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxDb2xvclNwYWNlKCk7CiAgICAgICAgIENvbG9yIHNo
YWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hh
ZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkg
LyAyNTUpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxD
b2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9p
bnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwpAQCAt
MjAzLDcgKzIwMSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsCiAgICAgICAgICAgICBDR0Nv
bnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53
aWR0aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQo
KSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0
KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRl
eHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4o
Z2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgICAgICB9Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFj
ZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKICAg
ICB9CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkg
KyB0cmFuc2xhdGlvbi53aWR0aCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCAyNzQyMjdiOTZhZWRmMDhhMzQxYjRjMjMw
ODFjYzAzYjhiNmU0MTc4Li5mYmY4MTU3NmFmZTIzN2NlZmRlYzgzNWViNGEzN2MxMjc2YWI4ODE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3Rz
LCBpbnQgd2lkdGgsIGludAogCiAgICAgZmxvYXQgcmFkaXVzID0gKHdpZHRoIC0gMSkgLyAyLjBm
OwogICAgIG9mZnNldCArPSByYWRpdXM7Ci0gICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9y
LmlzVmFsaWQoKSA/IGNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpIDog
MDsKKyAgICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dD
b2xvcihjb2xvcikgOiAwOwogCiAgICAgQ0dNdXRhYmxlUGF0aFJlZiBmb2N1c1JpbmdQYXRoID0g
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwogICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3RzLnNp
emUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNHV2luLmNwcAppbmRleCAwODM0NzA3ZGE5YmFmNzExY2JmNzI4MTczNmYyNTIyZjdmMTFhNzY1
Li42MmQ0OTgwMjJjMWY2ODJlMmQ0YjNmNjhmMWRlZDlkZDg0MzgzNTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC03
Niw5ICs3Niw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBi
bXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0
bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKLSAgICAgICAgZHJhd0ZyYW1lTWF0Y2hp
bmdTb3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBi
bXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNv
cHkpOworICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29t
cG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwg
QmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKICAgICAv
LyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQpOwpAQCAtODYsNyAr
ODYsNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBj
b25zdCBJbnRTaXplKiBzaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEJpdG1hcElt
YWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZy
YW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAKaW5kZXggYzQzNDgwYjNiMmQ1YWJmNDJiZmM5MjZhYTdiZjg4NTI2NjU4NjJiNi4u
MjlhMjAyM2RiNjNhOTE0MzRjMzk0OGVhYTU1MjNiYjYxZmU4MTA3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApA
QCAtNzksOSArNzksOSBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9
IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0
aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUs
IENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNv
cHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAg
ICAgLy8gRG8gY2xlYW51cAogICAgIGNhaXJvX2Rlc3Ryb3kodGFyZ2V0UmVmKTsKQEAgLTg5LDcg
Kzg5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwg
Y29uc3QgSW50U2l6ZSogc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lk
IEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0
JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFtZXMgPSBm
cmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewpA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291
cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiAgICAgICAgIGlmIChj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93
aWR0aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgo
KSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsK
ICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwg
ZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5o
ZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRyYXcoY3R4
dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6
ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZy
YW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0
IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAg
ICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhj
dHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGlt
YWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGN0
eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBhNzFi
ODI5OTQ2ODU4Yjk3ZjZjZTk3YjRjYjM3MDFjYzBiYWJjNjgzLi5kOGQxMDU1OGIyZmQzNTFiNmQ0
MWI2Mjg4M2ZjMDkzNjc5YWUyODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIExlZ2FjeVRpbGVD
YWNoZTo6ZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250
ZXh0KQogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCiAgICAgICAgIENH
Q29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBmcmFtZS5vcmlnaW4ueCwgZnJhbWUub3JpZ2lu
LnkpOwotICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2Fj
aGVkQ0dDb2xvcihjb2xvckZvckdyaWRUaWxlQm9yZGVyKFtsYXllciB0aWxlR3JpZF0pLCBDb2xv
clNwYWNlRGV2aWNlUkdCKSk7CisgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xv
cihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoW2xheWVyIHRp
bGVHcmlkXSkpKTsKICAgICAgICAgCiAgICAgICAgIENHUmVjdCBsYWJlbEJvdW5kcyA9IFtsYXll
ciBib3VuZHNdOwogICAgICAgICBsYWJlbEJvdW5kcy5zaXplLndpZHRoID0gMTAgKyAxMiAqIHN0
cmxlbih0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlR3JpZFRpbGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUdyaWRUaWxlLm1tCmluZGV4IDJhOWE1ZmNhZGJkYjYxZDliYWYwNWM3ZDUxMDdjOWNmYmJhOWJi
YmMuLjMwYTdkYmNiOTZjZDY0NmUxYzVhOTYzNzg4ZGZlZTAwM2U1OTVkYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQpAQCAtMTE3
LDcgKzExNyw3IEBAIHZvaWQgTGVnYWN5VGlsZUdyaWRUaWxlOjpzaG93Qm9yZGVyKGJvb2wgZmxh
ZykKIHsKICAgICBMZWdhY3lUaWxlTGF5ZXIqIGxheWVyID0gbV90aWxlTGF5ZXIuZ2V0KCk7CiAg
ICAgaWYgKGZsYWcpIHsKLSAgICAgICAgW2xheWVyIHNldEJvcmRlckNvbG9yOmNhY2hlZENHQ29s
b3IobV90aWxlR3JpZC0+dGlsZUNhY2hlKCkuY29sb3JGb3JHcmlkVGlsZUJvcmRlcihtX3RpbGVH
cmlkKSwgQ29sb3JTcGFjZURldmljZVJHQildOworICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29s
b3I6Y2FjaGVkQ0dDb2xvcihtX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5jb2xvckZvckdyaWRUaWxl
Qm9yZGVyKG1fdGlsZUdyaWQpKV07CiAgICAgICAgIFtsYXllciBzZXRCb3JkZXJXaWR0aDowLjVm
XTsKICAgICB9IGVsc2UgewogICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6bmlsXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGY2ZWM5MDllOGIyMmNkZWE3MGVhZTQ4
MWU3YzY4NGQyMmQyNmJkMDEuLjNlMmE4ZDYyMmE5YzU1NzA3ZDI5MjIyZDk2MmY1M2M4YzM2NTNl
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTY1LDcgKzE2NSw3IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNj
cmVlbigpCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBz
dHJvbmdUaGlzKHRoaXMpOwogICAgIFJldGFpblB0cjxDQUxheWVyPiB2aWRlb0Z1bGxzY3JlZW5M
YXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdOwogICAgIFdlYlRocmVhZFJ1bihb
c3Ryb25nVGhpcywgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXJdIHsKLSAgICAgICAgW3ZpZGVv
RnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6
OkNvbG9yOjp0cmFuc3BhcmVudCwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQildOworICAg
ICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29s
b3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CiAgICAgICAgIG1fbW9kZWwtPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKICAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRo
aXNdIHsKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IDVmYjA1MmQ0NTY3
ZGEwMGJkODJkZTIxYzlhZDY5MDEwNTVkNWQ5MTkuLjQxNmQ1ZGQ5NTU2NzliYjgzNmU0MjkyMTE4
ODBjMmFiNzExMDk2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbQpAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lkIGRyYXdBdFBvaW50KE5TU3Ry
aW5nICpzdHJpbmcsIE5TUG9pbnQgcG9pbnQsIE5TRm9udCAqZm9udCwgTlNDb2xvciAqCiAgICAg
ICAgIENHRmxvYXQgYmx1ZTsKICAgICAgICAgQ0dGbG9hdCBhbHBoYTsKICAgICAgICAgW1t0ZXh0
Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0
UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICog
MjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwgZ3Jl
ZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSk7CiAgICAgICAgIAogICAgICAgICB3
ZWJDb3JlRm9udC5kcmF3VGV4dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2lu
dC54LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5k
ZXggZTkzZDg3MmUzNjZhMzc1MjMyNmQwMmNjZmI4MmYwMTY0MzhhZDUwNi4uOWNmZDA0ODk5MzJj
ZmU1NjgxZmMxYWIwMGI3MDM0MWExMzc1YmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVwT3ZlcmhhbmdBcmVhQmFja2dyb3VuZChDQUxheWVyICps
YXllciwgY29uc3QgQ29sb3ImCiAgICAgc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkTGluZW5CYWNr
Z3JvdW5kQ29sb3IgPSBsaW5lbkJhY2tncm91bmRDb2xvcigpLmxlYWtSZWYoKTsKICAgICAvLyBX
ZSBvcGVyYXRlIG9uIHRoZSBDQUxheWVyIGRpcmVjdGx5IGhlcmUsIHNpbmNlIEdyYXBoaWNzTGF5
ZXIgZG9lc24ndCBoYXZlIHRoZSBjb25jZXB0CiAgICAgLy8gb2YgcGF0dGVybiBpbWFnZXMsIGFu
ZCB3ZSBrbm93IHRoYXQgV2ViQ29yZSB3b24ndCB0b3VjaCB0aGlzIGxheWVyLgotICAgIGxheWVy
LmJhY2tncm91bmRDb2xvciA9IGN1c3RvbUJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgPyBjYWNo
ZWRDR0NvbG9yKGN1c3RvbUJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQikgOiBj
YWNoZWRMaW5lbkJhY2tncm91bmRDb2xvcjsKKyAgICBsYXllci5iYWNrZ3JvdW5kQ29sb3IgPSBj
dXN0b21CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihjdXN0b21CYWNr
Z3JvdW5kQ29sb3IpIDogY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3I7CiB9CiAKIHZvaWQgU2Ny
b2xsYmFyVGhlbWVNYWM6OnJlbW92ZU92ZXJoYW5nQXJlYUJhY2tncm91bmQoQ0FMYXllciAqbGF5
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggZTc1OTFiZWRi
ZjRkNWUwZDY5ZTcwZDczZTcwNDI5ZWRmODFiYTE1Yi4uZjFlMjExM2NmN2FhNTExMTFlMGM0ZmU3
NzAxYzcxNDUxOTFhMWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5t
bQpAQCAtNjkyLDcgKzY5Miw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCAqY2VsbCwgR3JhcGhpY3NDb250CiAgICAgICAgICAg
ICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGltYWdlQnVmZmVyLT5j
b250ZXh0KCkpOwogICAgICAgICAgICAgbmVlZHNSZXBhaW50ID0gZHJhd0NlbGxPckZvY3VzUmlu
Z0ludG9SZWN0V2l0aFZpZXcoY2VsbCwgaW1hZ2VCdWZmZXJEcmF3UmVjdCwgdmlldywgZHJhd0J1
dHRvbkNlbGwsIGRyYXdGb2N1c1JpbmcpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZVNSR0IsIHJlY3QubG9jYXRpb24o
KSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCkpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIHJlY3QubG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5l
V2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOwogICAgICAgICByZXR1cm4gbmVl
ZHNSZXBhaW50OwogICAgIH0KICAgICBpZiAoZHJhd0J1dHRvbkNlbGwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcAppbmRleCBiMDUzYzQyYmFhOWZhMWQ0NmJmYmM5MmQ4NzkzMGJmMjBmOWQzOTg2Li42YjY1
NjY4OGVlOTAwZDdjYmFhNzkxYzZhNzkyNzM0MjNiMzRkY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5j
cHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKICAg
ICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICAgICAgSW50UmVjdCBw
YWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpKSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGFpbnRSZWN0LCBDb2xvcjo6YmxhY2ss
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBhaW50UmVj
dCwgQ29sb3I6OmJsYWNrKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAppbmRleCA5OTU0NDdiNTY4MDEwMzhj
ZmZlMzMxNTg5Yzc3NjQwYmNmZmM4MTRhLi45YWQ3NTdmM2ViYTU3MjZiMWQyMWM1YWQ0ZWRjZGMx
OTliNjhkMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhclRoZW1lTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgaW50IFNjcm9sbGJhclRoZW1l
TW9jazo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXpl
KQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dHJhY2tSZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIu
ZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFy
LmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSk7CiB9CiAK
IHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsK
ICAgICBpZiAoc2Nyb2xsYmFyLmVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0
aHVtYlJlY3QsIENvbG9yOjpkYXJrR3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QodGh1bWJSZWN0LCBDb2xvcjo6ZGFya0dyYXkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDdmM2Zl
MzQ2MWYzNmYyMTRjMTY4NWZhNDZjODM1ZTE3ZDUyMDQxNDUuLjhlNGNkODlkNmQ5YmViYzIyOGY4
YzMyNzFhMjlmN2I4ZTQ3ZDIyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckxpbmsoVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaW5MYWJlbCwgRm9udFJlbmRl
cmkKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgYmFja2dyb3VuZENvbG9yKDE0MCwgMTQwLCAxNDAp
OwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplIHJhZGlpKERyYWdMYWJlbFJhZGl1cywgRHJhZ0xh
YmVsUmFkaXVzKTsKICAgICBJbnRSZWN0IHJlY3QoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGlt
YWdlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChyZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCByYWRpaSksIGJhY2tncm91bmRDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChyZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCByYWRpaSksIGJhY2tncm91
bmRDb2xvcik7CiAgCiAgICAgLy8gRHJhdyB0aGUgdGV4dAogICAgIHN0YXRpYyBjb25zdCBDb2xv
ciB0b3BDb2xvcigwLCAwLCAwLCAyNTUpOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKaW5kZXggZWVkZjZmYzZm
MzVmZWQ0ZjRiNDI4ZDg5OGQ5ZGYyMjhjMWQzYjg0MC4uNTM0OTFjYjdlYTA3N2UyMDRlMDA4ZmQ1
ZjRhZjUxYmFmYmY3YzhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVw
TWVudVdpbi5jcHAKQEAgLTYzMiwxOCArNjMyLDE4IEBAIHZvaWQgUG9wdXBNZW51V2luOjpwYWlu
dChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQogCiAgICAgICAgIC8vIERyYXcg
dGhlIGJhY2tncm91bmQgZm9yIHRoaXMgbWVudSBpdGVtCiAgICAgICAgIGlmIChpdGVtU3R5bGUu
aXNWaXNpYmxlKCkpCi0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGl0ZW1SZWN0LCBvcHRp
b25CYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29u
dGV4dC5maWxsUmVjdChpdGVtUmVjdCwgb3B0aW9uQmFja2dyb3VuZENvbG9yKTsKIAogICAgICAg
ICBpZiAoY2xpZW50KCktPml0ZW1Jc1NlcGFyYXRvcihpbmRleCkpIHsKICAgICAgICAgICAgIElu
dFJlY3Qgc2VwYXJhdG9yUmVjdChpdGVtUmVjdC54KCkgKyBzZXBhcmF0b3JQYWRkaW5nLCBpdGVt
UmVjdC55KCkgKyAoaXRlbVJlY3QuaGVpZ2h0KCkgLSBzZXBhcmF0b3JIZWlnaHQpIC8gMiwgaXRl
bVJlY3Qud2lkdGgoKSAtIDIgKiBzZXBhcmF0b3JQYWRkaW5nLCBzZXBhcmF0b3JIZWlnaHQpOwot
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChzZXBhcmF0b3JSZWN0LCBvcHRpb25UZXh0Q29s
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChz
ZXBhcmF0b3JSZWN0LCBvcHRpb25UZXh0Q29sb3IpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgaXRlbVRleHQgPSBjbGllbnQoKS0+aXRlbVRleHQo
aW5kZXgpOwogCiAgICAgICAgIFRleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRlbVN0eWxlLmhh
c1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
b3B0aW9uVGV4dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3Iob3B0aW9uVGV4dENvbG9yKTsKICAgICAgICAgCiAgICAgICAgIEZvbnRDYXNj
YWRlIGl0ZW1Gb250ID0gY2xpZW50KCktPm1lbnVTdHlsZSgpLmZvbnQoKTsKICAgICAgICAgaWYg
KGNsaWVudCgpLT5pdGVtSXNMYWJlbChpbmRleCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAppbmRleCBkZjU3ZTVhM2U2ZDky
NzJhMGE5YzJlZjk4NzEyOTkzZWU4YWYzOWYyLi5mMWNlZjA5ZjVjNzgxODgxNjg2ZTk0M2Y1Njdh
NTFmMGE1OTRjNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2Vi
Q29yZVRleHRSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dl
YkNvcmVUZXh0UmVuZGVyZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRvRHJh
d1RleHRBdFBvaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zCiB7CiAgICAgVGV4dFJ1biBydW4odGV4dCk7CiAKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoY29sb3IpOwogICAgIGlmIChpc09uZUxlZnRUb1JpZ2h0UnVuKHJ1bikpCiAgICAgICAgIGZv
bnQuZHJhd1RleHQoY29udGV4dCwgcnVuLCBwb2ludCk7CiAgICAgZWxzZQpAQCAtNzEsNyArNzEs
NyBAQCBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29ucwogICAgICAgICBJbnRQb2ludCB1bmRlcmxpbmVQ
b2ludChwb2ludCk7CiAgICAgICAgIHVuZGVybGluZVBvaW50Lm1vdmUoYmVmb3JlV2lkdGgsIDEp
OwogCi0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICAgICAg
Y29udGV4dC5kcmF3TGluZUZvclRleHQodW5kZXJsaW5lUG9pbnQsIHVuZGVybGluZWRXaWR0aCwg
ZmFsc2UpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
bGxpcHNpc0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3Bw
CmluZGV4IDJlOGZkMGJiMGEyZTBiYTQzYjZlYzU1NjBhNDM0ZDZiZmZmZGI1YmYuLjM2ODVjYmUx
MmJiZjEyOWU1MDI3M2ZlYjVmMWIxOTAzOTEwMzU1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmNwcApAQCAtNDYsMTEgKzQ2LDExIEBAIHZvaWQgRWxsaXBzaXNCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIExhCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHls
ZSgpOwogICAgIENvbG9yIHRleHRDb2xvciA9IGxpbmVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKICAgICBpZiAodGV4dENvbG9yICE9
IGNvbnRleHQuZmlsbENvbG9yKCkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRD
b2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKHRleHRDb2xvcik7CiAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxzZTsKICAgICBpZiAobGlu
ZVN0eWxlLnRleHRTaGFkb3coKSkgewogICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhMYXlvdXRT
aXplKGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPngoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+
eSgpKSwKLSAgICAgICAgICAgIGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPnJhZGl1cygpLCBsaW5l
U3R5bGUudGV4dFNoYWRvdygpLT5jb2xvcigpLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgIGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPnJhZGl1cygpLCBsaW5lU3R5bGUudGV4
dFNoYWRvdygpLT5jb2xvcigpKTsKICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICB9CiAK
QEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAgICAgICAgLy8gU2Vs
ZWN0IHRoZSBjb3JyZWN0IGNvbG9yIGZvciBwYWludGluZyB0aGUgdGV4dC4KICAgICAgICAgQ29s
b3IgZm9yZWdyb3VuZCA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xvcigpID8gcGFpbnRJbmZvLmZv
cmNlZFRleHRDb2xvcigpIDogYmxvY2tGbG93KCkuc2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7
CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFsaWQoKSAmJiBmb3JlZ3JvdW5kICE9IHRleHRD
b2xvcikKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVT
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZm9y
ZWdyb3VuZCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/
IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVsb3cuCkBAIC02OSw3ICs2
OSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAKICAgICAvLyBSZXN0b3JlIHRoZSByZWd1
bGFyIGZpbGwgY29sb3IuCiAgICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigp
KQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xv
clNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwogCiAg
ICAgaWYgKHNldFNoYWRvdykKICAgICAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwpAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0ID0gTGF5b3V0UmVjdCh4KCkgKyBwYWludE9mZnNldC54KCksIHkoKSArIHBhaW50
T2Zmc2V0LnkoKSArIHJvb3RCb3guc2VsZWN0aW9uVG9wKCksIDAsIHJvb3RCb3guc2VsZWN0aW9u
SGVpZ2h0KCkpOwogICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgc3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNp
b24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rpb25S
ZWN0LCAwLCAtMSk7Ci0gICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
V2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSksIGMsIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdE
aXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCksIHJ1bi5sdHIoKSksIGMpOwogfQogCiBib29sIEVsbGlwc2lzQm94Ojpub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGZkNTA5ZThl
YWQ1OTY5N2Q0NjBkMzhkMzEzZTNlMDQxNmZhNjU4NzcuLjY1MDI5OWM0ODBmZmU1NGFkODMyZTgx
NTkzYjFlOTBhMmQ3MTA1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtNDI5LDEwICs0MjksOCBAQCB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRl
c3RpbmF0aW9uQwogICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXItPm91dHB1dFJlY3Qo
KTsKICAgICBkZXN0UmVjdC5tb3ZlKG1fcGFpbnRPZmZzZXQueCgpLCBtX3BhaW50T2Zmc2V0Lnko
KSk7CiAKLSAgICBpZiAoSW1hZ2VCdWZmZXIqIG91dHB1dEJ1ZmZlciA9IGZpbHRlci0+b3V0cHV0
KCkpIHsKLSAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0
QnVmZmVyLCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAot
ICAgICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9yZW5kZXJMYXll
ci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLSAgICB9Cisg
ICAgaWYgKEltYWdlQnVmZmVyKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXItPm91dHB1dCgpKQorICAg
ICAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3QsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCku
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAKICAgICBmaWx0ZXItPmNsZWFySW50
ZXJtZWRpYXRlUmVzdWx0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCmluZGV4IDAyMWExYWI2NjkxZGJiMTE3YWUyMDNlMzYyMTI0ODM4ZmU3ZTM5YmIu
LmM3OGIyY2FlNjAzODE4NDZlZTY5MDAzY2UyMzBlZTIwMjE4Nzk4NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYgYgogICAgICAgICBjID0gQ29sb3IoMHhmZiAtIGMucmVkKCksIDB4
ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0
KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGMsIHN0eWxlLmNvbG9yU3BhY2UoKSkpOyAvLyBEb24n
dCBkcmF3IHRleHQgYXQgYWxsIQorICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBU
ZXh0UGFpbnRTdHlsZShjKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCiAgICAgCiAgICAg
Ly8gSWYgdGhlIHRleHQgaXMgdHJ1bmNhdGVkLCBsZXQgdGhlIHRoaW5nIGJlaW5nIHBhaW50ZWQg
aW4gdGhlIHRydW5jYXRpb24KICAgICAvLyBkcmF3IGl0cyBvd24gaGlnaGxpZ2h0LgpAQCAtNzI0
LDcgKzcyNCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAKICAgICBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBk
ZWx0YVksIG1fbG9naWNhbFdpZHRoLCBzZWxlY3Rpb25IZWlnaHQpOwogICAgIGZvbnQuYWRqdXN0
U2VsZWN0aW9uUmVjdEZvclRleHQodGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgc1BvcywgZVBvcyk7
Ci0gICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdE
aXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNv
bnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9u
KHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
LCB0ZXh0UnVuLmx0cigpKSwgYyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsK
ICAgICBVTlVTRURfUEFSQU0oYm94T3JpZ2luKTsKQEAgLTc0NSwxMyArNzQ1LDEzIEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CiAgICAgQ29sb3IgY29tcG9zaXRpb25Db2xvciA9IENvbG9yOjpjb21w
b3NpdGlvbkZpbGw7Ci0gICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIFRleHRQYWlu
dFN0eWxlKGNvbXBvc2l0aW9uQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSkpOyAvLyBEb24ndCBk
cmF3IHRleHQgYXQgYWxsIQorICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0
UGFpbnRTdHlsZShjb21wb3NpdGlvbkNvbG9yKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwh
CiAKICAgICBMYXlvdXRVbml0IGRlbHRhWSA9IHJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRM
aW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxlY3Rpb25Cb3R0b20oKSAtIGxvZ2ljYWxCb3R0b20oKSA6
IGxvZ2ljYWxUb3AoKSAtIHNlbGVjdGlvblRvcCgpOwogICAgIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdCA9IExheW91dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSAtIGRlbHRhWSwg
MCwgc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRl
eHRSdW4oc3R5bGUsIGZvbnQpOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
dGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgc1BvcywgZVBvcyk7Ci0gICAgY29udGV4dC5maWxsUmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVj
dCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRy
KCkpLCBjb21wb3NpdGlvbkNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQu
ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVj
dGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0
UnVuLmx0cigpKSwgY29tcG9zaXRpb25Db2xvcik7CiB9CiAKIHN0YXRpYyBTdHJva2VTdHlsZSB0
ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29y
YXRpb25TdHlsZSkKQEAgLTk0OSw3ICs5NDksNiBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAg
ICAgICAgIHNldENsaXAgPSB0cnVlOwogICAgIH0KIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSA9IHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCk7CiAgICAgYm9vbCBzZXRTaGFkb3cg
PSBmYWxzZTsKIAogICAgIGRvIHsKQEAgLTk2MSw3ICs5NjAsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UG9pbnQmCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnQgc2hhZG93WCA9IGlzSG9yaXpv
bnRhbCgpID8gc2hhZG93LT54KCkgOiBzaGFkb3ctPnkoKTsKICAgICAgICAgICAgIGludCBzaGFk
b3dZID0gaXNIb3Jpem9udGFsKCkgPyBzaGFkb3ctPnkoKSA6IC1zaGFkb3ctPngoKTsKLSAgICAg
ICAgICAgIGNvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dYLCBzaGFkb3dZIC0gZXh0
cmFPZmZzZXQpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCksIGNvbG9yU3BhY2Up
OworICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKHNoYWRvd1gsIHNoYWRv
d1kgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+cmFkaXVzKCksIHNoYWRvdy0+Y29sb3IoKSk7CiAg
ICAgICAgICAgICBzZXRTaGFkb3cgPSB0cnVlOwogICAgICAgICAgICAgc2hhZG93ID0gc2hhZG93
LT5uZXh0KCk7CiAgICAgICAgIH0KQEAgLTk3MCw3ICs5NjksNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UG9pbnQmCiAKICAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2
aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMo
KQogICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZUNvbG9yLCBjb2xvclNw
YWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lQ29sb3Ip
OwogICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxl
VG9TdHJva2VTdHlsZSh1bmRlcmxpbmVTdHlsZSkpOwogICAgICAgICAgICAgY29uc3QgaW50IHVu
ZGVybGluZU9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRl
cmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgdGhpcywgdGV4dERlY29y
YXRpb25UaGlja25lc3MpOwogCkBAIC05OTQsNyArOTkzLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBv
aW50JgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChkZWNvcmF0aW9uICYg
VGV4dERlY29yYXRpb25PdmVybGluZSkgewotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VD
b2xvcihvdmVybGluZUNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3Iob3ZlcmxpbmVDb2xvcik7CiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZVN0eWxlKHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKG92ZXJsaW5lU3R5bGUpKTsK
ICAgICAgICAgICAgIHN3aXRjaCAob3ZlcmxpbmVTdHlsZSkgewogICAgICAgICAgICAgY2FzZSBU
ZXh0RGVjb3JhdGlvblN0eWxlV2F2eTogewpAQCAtMTAxNSw3ICsxMDE0LDcgQEAgdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFBvaW50JgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChkZWNv
cmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgewotICAgICAgICAgICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihsaW5ldGhyb3VnaENvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2hDb2xvcik7CiAgICAgICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxl
KGxpbmV0aHJvdWdoU3R5bGUpKTsKICAgICAgICAgICAgIHN3aXRjaCAobGluZXRocm91Z2hTdHls
ZSkgewogICAgICAgICAgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eTogewpAQCAtMTEy
Nyw3ICsxMTI2LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG8KIAogICAgIENvbG9yIGNvbG9y
ID0gbWFya2VyLmFjdGl2ZU1hdGNoKCkgPyByZW5kZXJlcigpLnRoZW1lKCkucGxhdGZvcm1BY3Rp
dmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6IHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9y
bUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4
dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKSk7IC8v
IERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCisgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRl
eHQsIFRleHRQYWludFN0eWxlKGNvbG9yKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCiAK
ICAgICAvLyBVc2Ugc2FtZSB5IHBvc2l0aW9uaW5nIGFuZCBoZWlnaHQgYXMgZm9yIHNlbGVjdGlv
biwgc28gdGhhdCB3aGVuIHRoZSBzZWxlY3Rpb24gYW5kIHRoaXMgaGlnaGxpZ2h0IGFyZSBvbgog
ICAgIC8vIHRoZSBzYW1lIHdvcmQgdGhlcmUgYXJlIG5vIHBpZWNlcyBzdGlja2luZyBvdXQuCkBA
IC0xMTQyLDcgKzExNDEsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFy
a2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQbwogICAgIGlmIChzZWxl
Y3Rpb25SZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC5maWxs
UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9u
UmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIo
KSksIGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25h
cFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjb2xv
cik7CiB9CiAgICAgCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXJzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIGJhY2tn
cm91bmQpCkBAIC0xMjYxLDcgKzEyNjAsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29t
cG9zaXRpb25VbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogICAg
IHN0YXJ0ICs9IDE7CiAgICAgd2lkdGggLT0gMjsKIAotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IodW5kZXJsaW5lLmNvbG9yLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAg
ICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZS5jb2xvcik7CiAgICAgY29udGV4dC5z
ZXRTdHJva2VUaGlja25lc3MobGluZVRoaWNrbmVzcyk7CiAgICAgY29udGV4dC5kcmF3TGluZUZv
clRleHQoRmxvYXRQb2ludChib3hPcmlnaW4ueCgpICsgc3RhcnQsIGJveE9yaWdpbi55KCkgKyBs
b2dpY2FsSGVpZ2h0KCkgLSBsaW5lVGhpY2tuZXNzKSwgd2lkdGgsIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5wcmludGluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IDczMWEwYTE1Njc2NWUwYTY2M2Q4ODE5NjZkN2E5YzFhZTg2YjE3YWEuLjkzYzcw
NmMwNzA0NWJiNmJiOWU1NGM4OTVjNjVkMDM2OTYxZjVkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTk3Myw3ICsxOTczLDcgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTGF5b3V0UG8KIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2Fs
UmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qo
bG9naWNhbExlZnQsIGxvZ2ljYWxUb3AsIGxvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwog
ICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTE5OTAs
NyArMTk5MCw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9u
R2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExhCiAKICAgICBMYXlvdXRSZWN0IGdh
cFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlz
aWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tM
b2dpY2FsVG9wLCByb290QmxvY2tMb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBp
ZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIHJldHVybiBnYXBS
ZWN0OwogfQogCkBAIC0yMDA3LDcgKzIwMDcsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjps
b2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTAog
CiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNh
bFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dp
Y2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dp
Y2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250
ZXh0KCkuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
LCBzZWxPYmotPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250
ZXh0KCkuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
KTsKICAgICByZXR1cm4gZ2FwUmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAppbmRleCAyZTBjNzYyNjQ0MmMyMGJlNDdkYjc4YmM3ZWYxYjEwNzlmZGIzNTZlLi4z
NTczYzEzYzhhMzFkMWQ0OGE2NDdjOTk2NWZiNzMzOWY3Y2M1ZWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTU0NSw3ICsxNTQ1LDcgQEAgdm9pZCBSZW5kZXJC
b3g6OnBhaW50Q2xpcHBpbmdNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3Qg
PSBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNrLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFw
cGVkSW50UmVjdChwYWludFJlY3QpLCBDb2xvcjo6YmxhY2spOwogfQogCiB2b2lkIFJlbmRlckJv
eDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRSZWN0JiBwYWludFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBkNjljMjdiNDI0NzJjODQ5ZDE4YjVmYmY0MDliOTI3
NWYxZGI2ZmYwLi44MzhkYTg1NDc4N2ZiYTI2MjA3N2IzNTQ3NTYyY2U2NTE3ZmIwMjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
QEAgLTU4OSw5ICs1ODksOSBAQCBzdGF0aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogcwogCiAgICAgRmxvYXRT
aXplIHNoYWRvd09mZnNldChib3hTaGFkb3ctPngoKSwgYm94U2hhZG93LT55KCkpOwogICAgIGlm
ICghYm94U2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpKQotICAgICAgICBjb250ZXh0LnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3Io
KSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRv
d09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpKTsKICAgICBl
bHNlCi0gICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hh
ZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsK
KyAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ct
PnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCkpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBj
b25zdCBJbnRSZWN0JiBtYXNrUmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRS
ZWN0JiBzY3JvbGxlZFBhaW50UmVjdCkKQEAgLTY4MCwxNSArNjgwLDE1IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEJv
cmRlciA9IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29u
dGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwKICAgICAgICAgICAgICAg
ICBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpLnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgaWYgKHBpeGVs
U25hcHBlZEJvcmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZp
bGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRCb3JkZXIsIGJnQ29sb3IpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3Qo
Y29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlci5yZWN0KCksIGJnQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KHBpeGVsU25hcHBlZEJvcmRlci5yZWN0KCksIGJnQ29sb3IpOwogICAgICAgICAgICAgICAg
IGNvbnRleHQucmVzdG9yZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdDb2xvciwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBw
ZWRSZWN0LCBiZ0NvbG9yKTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODE3LDEwICs4
MTcsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBpZiAoIWJh
c2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmFscGhhKCkpCiAgICAgICAgICAgICAgICAgICAgIGJh
c2VDb2xvciA9IGJhc2VDb2xvci5ibGVuZChiZ0NvbG9yKTsKIAotICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmFzZUNvbG9yLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29sb3IsIENvbXBvc2l0
ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29s
b3IuYWxwaGEoKSkgewogICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlv
biA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBv
c2l0ZU9wZXJhdGlvbigpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dy
b3VuZFJlY3RGb3JQYWludGluZywgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG9wZXJh
dGlvbik7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZv
clBhaW50aW5nLCBiZ0NvbG9yLCBvcGVyYXRpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChz
aG91bGRDbGVhckJhY2tncm91bmQpCiAgICAgICAgICAgICAgICAgY29udGV4dC5jbGVhclJlY3Qo
YmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CiAgICAgICAgIH0KQEAgLTgzNSwxMiArODM1LDEy
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCA9IG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBiZ0xheWVyLT5jb21w
b3NpdGUoKSA6IG9wOwogICAgICAgICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhi
Z0xheWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1hc2tMdW1pbmFuY2UpOwogICAgICAgICAgICAg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRl
eHQsICppbWFnZSwgYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAgICBj
b250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21l
dHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwg
Z2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdP
cHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgICAgICAgICBjb250
ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQ
b2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9t
ZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5
ZXItPmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVh
bGl0eVNjYWxpbmcpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChtYXNrSW1hZ2UgJiYg
YmdMYXllci0+Y2xpcCgpID09IFRleHRGaWxsQm94KSB7Ci0gICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCptYXNrSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG1hc2tSZWN0LCBDb21w
b3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1h
c2tJbWFnZSwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogICAgICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQpAQCAtMTY5MSw3ICsxNjkxLDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChw
aXhlbFNuYXBwZWRJbm5lckJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29s
b3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSk7CiAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0gCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShS
VUxFX05PTlpFUk8pOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihl
ZGdlc1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVF
ZGdlXS5jb2xvcigpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTc1Miw3ICsxNzUyLDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRE9UVEVE
OgogICAgIGNhc2UgREFTSEVEOiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VD
b2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKIAogICAgICAgICAvLyBUaGUgc3Ryb2tlIGlzIGRvdWJs
ZWQgaGVyZSBiZWNhdXNlIHRoZSBwcm92aWRlZCBwYXRoIGlzIHRoZSAKICAgICAgICAgLy8gb3V0
c2lkZSBlZGdlIG9mIHRoZSBib3JkZXIgc28gaGFsZiB0aGUgc3Ryb2tlIGlzIGNsaXBwZWQgb2Zm
LiAKQEAgLTE4ODAsNyArMTg4MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdC
b3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgfQog
CiAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICBncmFw
aGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IpOwogICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogfQogCkBAIC0yMjY1LDkgKzIyNjUsOSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgZmlsbFJlY3QubW92ZShleHRyYU9mZnNldCk7
CiAKICAgICAgICAgICAgIGlmIChzaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRp
dXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dD
b2xvcik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwg
c2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJl
Y3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50
aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4
ZWxTbmFwcGVkRmlsbFJlY3QgPSBmaWxsUmVjdC5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBh
aW50aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKQEAgLTIyODUsMTIgKzIyODUsMTIgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAgICBpbmZsdWVuY2VSZWN0LmV4cGFuZFJh
ZGlpKDIgKiBzaGFkb3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7CiAKICAgICAgICAg
ICAgICAgICBpZiAoYWxsQ29ybmVyc0NsaXBwZWRPdXQoaW5mbHVlbmNlUmVjdCwgaW5mby5yZWN0
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxs
UmVjdC5yZWN0KCksIENvbG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCks
IENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgIHBpeGVsU25hcHBlZEZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghcGl4ZWxTbmFwcGVkRmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5hZGp1c3RSYWRp
aSgpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRGaWxsUmVjdCwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVj
dCwgQ29sb3I6OmJsYWNrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1bm5lY2Vz
c2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQpAQCAtMjMw
Nyw3ICsyMzA3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3co
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgICAg
IGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuY2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFjaywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVs
U25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEluc2V0IHNoYWRvdy4KQEAgLTIzMTcsOSAr
MjMxNyw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAgIGlmIChwaXhl
bFNuYXBwZWRIb2xlUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQm9y
ZGVyUmFkaXVzKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChw
aXhlbFNuYXBwZWRCb3JkZXJSZWN0LCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVk
Qm9yZGVyUmVjdCwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3Qo
KSwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0KCksIHNoYWRvd0Nv
bG9yKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjM1
NiwxMSArMjM1NiwxMSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRv
dyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgc2hh
ZG93T2Zmc2V0IC09IGV4dHJhT2Zmc2V0OwogCiAgICAgICAgICAgICBpZiAoc2hhZG93LT5pc1dl
YmtpdEJveFNoYWRvdygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBz
aGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogCi0g
ICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHBpeGVsU25hcHBlZE91
dGVyUmVjdCwgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4
ZWxTbmFwcGVkT3V0ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yKTsK
ICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXRhaWxzTWFya2VyLmNwcAppbmRleCBiNTNmMmFmNGZlZTVkYmYxZjM5MDhkODQyM2I0M2Vh
OTU0MTUyNDgxLi41YzY2Yjc3NmM2OWI5ZDMzNjYzODZhYTViNzU1ODY5MjYxNzFhOTZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCkBA
IC0xMzAsMTAgKzEzMCwxMCBAQCB2b2lkIFJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICByZXR1
cm47CiAKICAgICBjb25zdCBDb2xvciBjb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlU3R5bGUoU29saWRTdHJva2UpOwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
VGhpY2tuZXNzKDEuMGYpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGNv
bG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRG
aWxsQ29sb3IoY29sb3IpOwogCiAgICAgYm94T3JpZ2luLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwogICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZmlsbFBhdGgoZ2V0UGF0aChib3hPcmlnaW4pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCBlNzAwMzhlOTJmNmM3YjQ2MWZjMDQ5YWQz
YTMzYWFkZjFjN2UxMWVhLi44YzJlYTA4ZjcxZGU2OWYyZDQ4ZTUxYWZjYzM0ZmNjNDQwMjllNjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xODIw
LDcgKzE4MjAsNiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRgogICAgIGlmIChib3JkZXJTdHls
ZSA9PSBET1VCTEUgJiYgKHRoaWNrbmVzcyAqIGRldmljZVNjYWxlRmFjdG9yKSA8IDMpCiAgICAg
ICAgIGJvcmRlclN0eWxlID0gU09MSUQ7CiAKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUg
PSB0aGlzLT5zdHlsZSgpOwogICAgIHN3aXRjaCAoYm9yZGVyU3R5bGUpIHsKICAgICBjYXNlIEJO
T05FOgogICAgIGNhc2UgQkhJRERFTjoKQEAgLTE4MzAsNyArMTgyOSw3IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGCiAgICAgICAgIGJvb2wgd2FzQW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRl
eHQuc2hvdWxkQW50aWFsaWFzKCk7CiAgICAgICAgIFN0cm9rZVN0eWxlIG9sZFN0cm9rZVN0eWxl
ID0gZ3JhcGhpY3NDb250ZXh0LnN0cm9rZVN0eWxlKCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTaG91bGRBbnRpYWxpYXMoYW50aWFsaWFzKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U3Ryb2tlVGhpY2tuZXNzKHRoaWNrbmVzcyk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTdHJva2VTdHlsZShib3JkZXJTdHlsZSA9PSBEQVNIRUQgPyBEYXNoZWRTdHJva2UgOiBE
b3R0ZWRTdHJva2UpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0xpbmUocm91bmRQb2lu
dFRvRGV2aWNlUGl4ZWxzKExheW91dFBvaW50KHgxLCB5MSksIGRldmljZVNjYWxlRmFjdG9yKSwg
cm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKExheW91dFBvaW50KHgyLCB5MiksIGRldmljZVNjYWxl
RmFjdG9yKSk7CkBAIC0xODQ1LDcgKzE4NDQsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmRyYXdM
aW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRgog
ICAgICAgICBpZiAoIWFkamFjZW50V2lkdGgxICYmICFhZGphY2VudFdpZHRoMikgewogICAgICAg
ICAgICAgU3Ryb2tlU3R5bGUgb2xkU3Ryb2tlU3R5bGUgPSBncmFwaGljc0NvbnRleHQuc3Ryb2tl
U3R5bGUoKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0
cm9rZSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcihjb2xvcik7CiAKICAgICAgICAgICAgIGJvb2wgd2FzQW50aWFsaWFzZWQgPSBncmFwaGlj
c0NvbnRleHQuc2hvdWxkQW50aWFsaWFzKCk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
c2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7CkBAIC0xOTk2LDcgKzE5OTUsNyBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRgogICAgICAgICAgICAgLy8gVHVybiBvZmYgYW50aWFsaWFzaW5n
IHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiBkcmF3Q29udmV4UG9seWdvbigpOwogICAgICAgICAg
ICAgLy8gdGhpcyBtYXR0ZXJzIGZvciByZWN0cyBpbiB0cmFuc2Zvcm1lZCBjb250ZXh0cy4KICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7
CiAgICAgICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNob3Vs
ZEFudGlhbGlhcygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlh
bGlhcyhhbnRpYWxpYXMpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdSZWN0KHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxLCBkZXZpY2VTY2Fs
ZUZhY3RvcikpOwpAQCAtMjA0MCw3ICsyMDM5LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3
TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYK
ICAgICAgICAgfQogCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0
cm9rZSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxl
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0NvbnZleFBvbHlnb24oNCwgcXVhZCwg
YW50aWFsaWFzKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxlKG9sZFN0
cm9rZVN0eWxlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTA4LDcgKzIxMDcsNyBAQCB2b2lkIFJl
bmRlckVsZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UmVjdCYgcGFpbnRSZQogICAgICAgICAgICAgcGF0aC5hZGRSZWN0KG91dGVyKTsKICAgICAg
ICAgICAgIHBhdGguYWRkUmVjdChpbm5lcik7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3Iob3V0bGluZUNvbG9yLCBzdHlsZVRvVXNlLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG91dGxpbmVDb2xvcik7CiAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCmluZGV4IGEzZjg4OTFmZDk5N2U4YzJjYTg2ZjUwY2I1ZmZmNmMxYjAw
NTdlZDkuLjEzNmUxMGI0YTI5YjFkZWU3ZGVhMzI3MzU2NjI0OTUzYzEwYTBkMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJ
bWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAjaWYgRU5BQkxFKENTU19J
TUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3Jp
ZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxp
dHlTY2FsaW5nKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5
U2NhbGluZykpOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRz
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkBA
IC0zMTIsNyArMzEyLDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNl
ZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250ZXh0LmNsaXAo
Y29udGVudFJlY3QpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRD
b2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV91bmF2YWlsYWJsZVBsdWdpbklu
ZGljYXRvcklzUHJlc3NlZCA/IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJlc3NlZENvbG9y
KCkgOiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKCkpOwogICAgIGNvbnRleHQuZmls
bFBhdGgoYmFja2dyb3VuZCk7CiAKICAgICBQYXRoIHN0cm9rZVBhdGg7CkBAIC0zMjAsMjEgKzMy
MCwyMSBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgIHN0cm9rZVJlY3QuaW5mbGF0ZSgx
KTsKICAgICBzdHJva2VQYXRoLmFkZFJvdW5kZWRSZWN0KHN0cm9rZVJlY3QsIEZsb2F0U2l6ZShy
ZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEsIHJlcGxhY2VtZW50VGV4dFJvdW5k
ZWRSZWN0UmFkaXVzICsgMSkpOwogCi0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmF2YWls
YWJsZVBsdWdpbkJvcmRlckNvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250
ZXh0LnNldFN0cm9rZUNvbG9yKHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKSk7CiAgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgY29udGV4dC5zdHJva2VQYXRoKHN0
cm9rZVBhdGgpOwogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5m
b250TWV0cmljcygpOwogICAgIGZsb2F0IGxhYmVsWCA9IHJvdW5kZihyZXBsYWNlbWVudFRleHRS
ZWN0LmxvY2F0aW9uKCkueCgpICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RMZWZ0VGV4dE1h
cmdpbik7CiAgICAgZmxvYXQgbGFiZWxZID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9j
YXRpb24oKS55KCkgKyAocmVwbGFjZW1lbnRUZXh0UmVjdC5zaXplKCkuaGVpZ2h0KCkgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyICsgZm9udE1ldHJpY3MuYXNjZW50KCkgKyByZXBsYWNlbWVu
dFRleHRSb3VuZGVkUmVjdFRvcFRleHRNYXJnaW4pOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpKTsKICAgICBjb250ZXh0LmRy
YXdCaWRpVGV4dChmb250LCBydW4sIEZsb2F0UG9pbnQobGFiZWxYLCBsYWJlbFkpKTsKIAogICAg
IGlmIChzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBt
X3BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSkgewogICAgICAgICBhcnJvd1JlY3QuaW5mbGF0
ZSgtcmVwbGFjZW1lbnRBcnJvd0NpcmNsZVBhZGRpbmcpOwogCiAgICAgICAgIGNvbnRleHQuYmVn
aW5UcmFuc3BhcmVuY3lMYXllcigxLjApOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihy
ZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCkpOwogICAgICAgICBjb250
ZXh0LmZpbGxFbGxpcHNlKGFycm93UmVjdCk7CiAKICAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlQ2xlYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggNjRlY2FjYjA2ZWNlZTkz
MGYyNWM2NjZiMTQ5ZWQ4N2VlNTZkM2E2MS4uZmQxMTNjNGY4ZTIyMDkzYTEwY2E2NWFmZDI0Yjhl
MjdhN2YzOGFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
bGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW4KICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGV4dFkgPSBiYXNlbGluZVBvc2l0
aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9uT25D
b250YWluaW5nTGluZSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29s
b3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29s
b3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAg
ICAgICAKICAgICAgICAgLy8gRHJhdyB0aGUgZmlsZW5hbWUKICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgSW50UG9pbnQocm91bmRUb0ludCh0
ZXh0WCksIHJvdW5kVG9JbnQodGV4dFkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcAppbmRleCAyZjgyZGNiMTRiMzk0N2M4M2M2ODQ5OTc3NGU2ZDhkMjJm
YTgwYTZhLi42M2NhNmRhZGY3OGYxODFhZmM0NjY5OTgyNGJhNzAyZTMwYzczNTQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKQEAgLTkxLDE0ICs5MSwx
MyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJvcmRlcihjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdAogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAgICBD
b2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0
LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkg
PyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
cikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5maWxsUmVj
dChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9y
ZGVyRmlsbENvbG9yKCkpOwogICAgIAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBv
bmx5IGlmIHdlIGhhdmUgZW5vdWdoIHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0
dGxlCiAgICAgLy8gYml0IG9mIHRoZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBp
ZiAoYm9yZGVyUmVjdC53aWR0aCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChJ
bnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3Jk
ZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVj
dChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9yZGVyUmVjdC55KCkp
LCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNl
KTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24o
KSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpKTsKKyAgICAg
ICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0g
MSwgYm9yZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VD
b2xvcigpKTsKICAgICB9CiB9CiAKQEAgLTExMSwxNCArMTEwLDEzIEBAIHZvaWQgUmVuZGVyRnJh
bWVTZXQ6OnBhaW50Um93Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiBiCiAgICAgCiAgICAgLy8gRmlsbCBmaXJzdC4KICAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSA9IHN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVj
dCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xv
cigpLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1l
U2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSk7CiAK
ICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCBy
b29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUg
ZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3QuaGVpZ2h0KCkg
Pj0gMykgewotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2Nh
dGlvbigpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29s
b3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3Jk
ZXJSZWN0LngoKSwgYm9yZGVyUmVjdC5tYXhZKCkgLSAxKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSks
IGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5maWxs
UmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSks
IGJvcmRlclN0YXJ0RWRnZUNvbG9yKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJl
Y3QoSW50UG9pbnQoYm9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSksIEludFNp
emUod2lkdGgoKSwgMSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAxZDQ3OGJmNmZmYzg3ZmVm
ZjQ3NTU3NDE1MjUyNGZiMWRjODcyZGI3Li4xNGM3YTAyMzAyYzEzNmJmNjA3NzVkNTk1NWVmYWY1
NzM4NTUxYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAg
LTM5Miw4ICszOTIsOCBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogCiAgICAgICAgICAgICAv
LyBEcmF3IGFuIG91dGxpbmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgogICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVu
dCwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VD
b2xvcihDb2xvcjo6bGlnaHRHcmF5KTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkgKyBsZWZ0Qm9yZGVy
ICsgbGVmdFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVyICsgdG9wUGFkLCBjV2lkdGgs
IGNIZWlnaHQpLCBkZXZpY2VTY2FsZUZhY3RvciksIGJvcmRlcldpZHRoKTsKIAogICAgICAgICAg
ICAgYm9vbCBlcnJvclBpY3R1cmVEcmF3biA9IGZhbHNlOwpAQCAtNDI0LDEzICs0MjQsMTMgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQogICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRh
dGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgICAgICAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgc25h
cFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQs
IGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7
CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXpl
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKICAgICAgICAg
ICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIFN0cmlu
ZyB0ZXh0ID0gZG9jdW1lbnQoKS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKG1fYWx0
VGV4dCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgICAgICAgICAgICAgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAgICAgICAgICAgICAg
ICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOwog
ICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7
CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1h
Z2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0g
ICAgY29udGV4dC5kcmF3SW1hZ2UoKmltZywgc3R5bGUoKS5jb2xvclNwYWNlKCksIHJlY3QsCisg
ICAgY29udGV4dC5kcmF3SW1hZ2UoKmltZywgcmVjdCwKICAgICAgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgb3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZGZlMTZiNzI3NmE1YmM3NDA5YzAyOTFhOTZhYmMw
NjljOGY3YTRlYS4uNmUyMTdhNzFiZmY0OTNmODdjMzkzMzM0OTYwMDBhZDBlYzU0YTIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xODIxLDcgKzE4MjEs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUAogI2VuZGlmCiAKICNpZmRlZiBSRVZFQUxfVFJB
TlNQQVJFTkNZX0xBWUVSUwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMC4w
ZiwgMC4wZiwgMC41ZiwgMC4yZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC41ZiwgMC4yZikpOwogICAgICAg
ICBjb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRDbGlwUmVjdCk7CiAjZW5kaWYKICAgICB9
CkBAIC0zNjA4LDkgKzM2MDgsNiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludAogCiB2b2lkIFJl
bmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsK
LSAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwotICAgIEFTU0VSVChib3gpOwotCiAg
ICAgSW50UmVjdCBhYnNSZWN0ID0gc2Nyb2xsQ29ybmVyUmVjdCgpOwogICAgIGFic1JlY3QubW92
ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0cyhkYW1hZ2VSZWN0
KSkKQEAgLTM2MjksNyArMzYyNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAgICAgLy8g
V2UgZG9uJ3Qgd2FudCB0byBwYWludCB3aGl0ZSBpZiB3ZSBoYXZlIG92ZXJsYXkgc2Nyb2xsYmFy
cywgc2luY2Ugd2UgbmVlZAogICAgIC8vIHRvIHNlZSB3aGF0IGlzIGJlaGluZCBpdC4KICAgICBp
ZiAoIWhhc092ZXJsYXlTY3JvbGxiYXJzKCkpCi0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYWJz
UmVjdCwgQ29sb3I6OndoaXRlLCBib3gtPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
Y29udGV4dC5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUpOwogfQogCiB2b2lkIFJlbmRl
ckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCkKQEAgLTM2NTIsNyArMzY0OSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHJl
c2l6ZXJDb3JuZXJSZWN0LngoKSArIGNvcm5lclJlc2l6ZXJTaXplLndpZHRoKCksIHJlc2l6ZXJD
b3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJDb3JuZXJSZWN0LmhlaWdodCgpIC0gY29ybmVyUmVzaXpl
clNpemUuaGVpZ2h0KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAx
LjApKTsKICAgICAgICAgaWYgKHJlc2l6ZUNvcm5lckltYWdlKQotICAgICAgICAgICAgY29udGV4
dC5kcmF3SW1hZ2UoKnJlc2l6ZUNvcm5lckltYWdlLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JT
cGFjZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOworICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKnJlc2l6ZUNvcm5lckltYWdlLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOwogICAgICAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM2NjAsNyArMzY1Nyw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheW91CiAgICAgaWYgKCFyZXNpemVDb3JuZXJJbWFnZSkKICAgICAgICAg
cmV0dXJuOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KExheW91dFJlY3QocmVzaXplckNvcm5lclJlY3QubWF4WE1heFlDb3JuZXIoKSAtIGNvcm5lclJl
c2l6ZXJTaXplLCBjb3JuZXJSZXNpemVyU2l6ZSksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1h
Z2UsIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CisgICAgY29u
dGV4dC5kcmF3SW1hZ2UoKnJlc2l6ZUNvcm5lckltYWdlLCBpbWFnZVJlY3QpOwogfQogCiB2b2lk
IFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3Qp
CkBAIC0zNjk1LDkgKzM2OTIsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICBj
b250ZXh0LmNsaXAoYWJzUmVjdCk7CiAgICAgICAgIExheW91dFJlY3QgbGFyZ2VyQ29ybmVyID0g
YWJzUmVjdDsKICAgICAgICAgbGFyZ2VyQ29ybmVyLnNldFNpemUoTGF5b3V0U2l6ZShsYXJnZXJD
b3JuZXIud2lkdGgoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgxKSwgbGFyZ2VyQ29ybmVyLmhl
aWdodCgpICsgTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpKSk7Ci0gICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3
LCAyMTcsIDIxNykpKTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7
Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudCk7CiAgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2Vy
Q29ybmVyKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCmluZGV4IGU1NzNkNTAwNGZiNWI1OTEwOTIwMzE2OTA0Mjc0MDAwMGI2MTNkYTUuLjU1
MzE3MGFkYzQ0MWZkOTk1M2I4ODk0YWE0Y2YzZjg3YmIyNzgyODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM5Niw4ICszOTYsNyBAQCB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JgogICAgICAgICAgICAgdGV4dENvbG9yID0gdGhlbWUoKS5pbmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICB9CiAKLSAgICBDb2xvclNw
YWNlIGNvbG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwotICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvciwgY29sb3JTcGFjZSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yKTsKIAogICAgIFRleHRSdW4gdGV4
dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgaXRlbVN0eWxlLmRp
cmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1ZSwgVGV4
dFJ1bjo6Tm9Sb3VuZGluZyk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZv
bnRDYXNjYWRlKCk7CkBAIC00MzIsMTAgKzQzMSw5IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFp
bnRJdGVtQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kIGZvciB0aGlzIGxpc3QgYm94IGl0ZW0KICAg
ICBpZiAoaXRlbVN0eWxlLnZpc2liaWxpdHkoKSAhPSBISURERU4pIHsKLSAgICAgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0
UmVjdCBpdGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRl
eCk7CiAgICAgICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZz
ZXQpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVj
dChpdGVtUmVjdCksIGJhY2tDb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCmluZGV4IGY2ZTM0NmQzN2IwNWJhNDZhOWY2NjA4MDYyMDViNDI1MWM3YjM1MTkuLjQ3NmU5
YzQ3MmIxMTQ5MGZkNjI2ZGRjYzk4NzkyNzlmODFlMzAzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTExOTgsMTEgKzExOTgsMTEgQEAg
dm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKIAogICAgIGlmIChpc0ltYWdlKCkpIHsKICAgICAgICAg
aWYgKFJlZlB0cjxJbWFnZT4gbWFya2VySW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJr
ZXIuc2l6ZSgpKSkKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqbWFya2VySW1hZ2UsIG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgp
ICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxv
Y2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3JpZ2lu
KTsKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCks
IG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVj
dCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjEwLDE0ICsxMjEwLDE0IEBAIHZvaWQgUmVuZGVy
TGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNlCiAgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkg
ewogICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAg
ICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVj
dChzbmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpKTsKICAgICB9CiAKICAgICBjb25zdCBDb2xvciBjb2xvcihzdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VD
b2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoY29sb3IpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwog
ICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwotICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoY29sb3IpOwogCiAgICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0
eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9p
ZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFy
a2VyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAg
ICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5z
cGFyZW50KTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTcXVhcmU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCAzNGI1NWYyOTIzZDkxYWNjZGI0MTIyZTE1
MGRmZGFlMmQwN2RhZjEyLi44NGQ0NGIxMjUyNGQ0NDJlYjA1MDdkNjgxM2NjZmY4Mjk0OTI3MmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTE5
Nyw3ICsxOTcsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIGlmIChkcmF3U2VsZWN0
aW9uVGludCkgewogICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblBhaW50aW5nUmVjdCA9IGxv
Y2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxlY3Rpb25QYWludGluZ1JlY3QubW92ZUJ5
KGFkanVzdGVkUGFpbnRPZmZzZXQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxS
ZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCksIHNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUGFpbnRpbmdSZWN0KSwg
c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKaW5kZXggYWY5NjExODBh
ZGVlMTVlZGFkMmJhN2I2ZjlmZjJkYzM4YThjNjg4Ni4uNTRmZWEwYzE2ZWU4YzI5NTA5MzU2NDQ2
NmI5MDZiYjdmNDAwMWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6ZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBT
Y3JvbGxiYXIKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNj
cm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
clJlY3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICBjb250ZXh0LmZpbGxSZWN0
KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29u
dGV4dC5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUpOwogfQogCiB2b2lkIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IGVjNDJjNjJjODEy
N2NlZDM4ZTU2MTY4NGQ4N2U4YjUwOWYxOWIzYzUuLmU4YjhmMGZiNGJmMzVmNzgwNmE1NTU1OWZm
MWY1YmYxY2I3YzQ3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VP
cmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5
bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIEN1cnNvckRp
cmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDFhYWYzNjkwZWU5YjdkZjE3N2MxMDcxN2Jm
OTE4ZmUyMzE1OTgwOWEuLmU1YTg1Y2YxNGFjMmNmMGY2ZDE5MTE2M2MxNGI0NmRiZjBjNzBiYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMTAzNiw3ICsx
MDM2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyhjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICB9CiAgICAgUmVmPEhUTUxDb2xs
ZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9
IG9wdGlvbnMtPml0ZW0oaSk7IGkrKykgewogICAgICAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCpub2RlKSk7CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50
ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCAxYmYyMDUyNWVlMGNjMzQwMzk4MzgyNTA3
ZTg5MzZhZDU1NDQxNDhjLi4wZDViNWVmNjg4ZTI0ZTMxM2RlNjA5OGRjM2FkYjc2MTkwMGYxNDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNjAs
MTMgKzE2MCwxMyBAQCBzdGF0aWMgQ0dGdW5jdGlvblJlZiBnZXRTaGFyZWRGdW5jdGlvblJlZihJ
T1NHcmFkaWVudFJlZiBncmFkaWVudCwgSW50ZXJwb2xhdGlvbgogCiBzdGF0aWMgdm9pZCBkcmF3
QXhpYWxHcmFkaWVudChDR0NvbnRleHRSZWYgY29udGV4dCwgSU9TR3JhZGllbnRSZWYgZ3JhZGll
bnQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0b3BQ
b2ludCwgSW50ZXJwb2xhdGlvbiBpbnRlcnBvbGF0aW9uKQogewotICAgIFJldGFpblB0cjxDR1No
YWRpbmdSZWY+IHNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGRldmljZVJH
QkNvbG9yU3BhY2VSZWYoKSwgc3RhcnRQb2ludCwgc3RvcFBvaW50LCBnZXRTaGFyZWRGdW5jdGlv
blJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFp
blB0cjxDR1NoYWRpbmdSZWY+IHNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFs
KHNSR0JDb2xvclNwYWNlUmVmKCksIHN0YXJ0UG9pbnQsIHN0b3BQb2ludCwgZ2V0U2hhcmVkRnVu
Y3Rpb25SZWYoZ3JhZGllbnQsIGludGVycG9sYXRpb24pLCBmYWxzZSwgZmFsc2UpKTsKICAgICBD
R0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBzaGFkaW5nLmdldCgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZHJhd1JhZGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBJT1NHcmFkaWVu
dFJlZiBncmFkaWVudCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgZmxvYXQgc3RhcnRS
YWRpdXMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0b3BQb2ludCwgZmxvYXQgc3RvcFJhZGl1cywgSW50
ZXJwb2xhdGlvbiBpbnRlcnBvbGF0aW9uKQogewotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+
IHNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZVJhZGlhbChkZXZpY2VSR0JDb2xvclNw
YWNlUmVmKCksIHN0YXJ0UG9pbnQsIHN0YXJ0UmFkaXVzLCBzdG9wUG9pbnQsIHN0b3BSYWRpdXMs
IGdldFNoYXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZh
bHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dT
aGFkaW5nQ3JlYXRlUmFkaWFsKGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSAvKiBGSVhNRSAqLywg
c3RhcnRQb2ludCwgc3RhcnRSYWRpdXMsIHN0b3BQb2ludCwgc3RvcFJhZGl1cywgZ2V0U2hhcmVk
RnVuY3Rpb25SZWYoZ3JhZGllbnQsIGludGVycG9sYXRpb24pLCBmYWxzZSwgZmFsc2UpKTsKICAg
ICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBzaGFkaW5nLmdldCgpKTsKIH0KIApAQCAt
MzkyLDEyICszOTIsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRDaGVja2JveERlY29y
YXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWkKICAgICAgICAgfTsKIAog
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYs
IDAuMGYsIDAuMGYsIDAuN2YpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdm
KSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMoc2hhZG93
LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhzdGQ6Om1pbihjbGlwLndpZHRoKCksIGNsaXAuaGVpZ2h0
KCkpICogdGhpY2tuZXNzUmF0aW8pOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKENvbG9yKDEuMGYsIDEuMGYsIDEuMGYsIDI0MCAvIDI1NS4wZiksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9y
KENvbG9yKDEuMGYsIDEuMGYsIDEuMGYsIDI0MCAvIDI1NS4wZikpOwogCiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd0pvaW5lZExpbmVzKGxpbmUsIDMsIHRydWUpOwogICAgIH0gZWxz
ZSB7CkBAIC00NTgsNyArNDU4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpb0Rl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEkKICAgICAgICAg
Y2xpcC5pbmZsYXRlWCgtY2xpcC53aWR0aCgpICogSW5uZXJJbnZlcnNlUmF0aW8pOwogICAgICAg
ICBjbGlwLmluZmxhdGVZKC1jbGlwLmhlaWdodCgpICogSW5uZXJJbnZlcnNlUmF0aW8pOwogCi0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29sb3I6
OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShj
bGlwLCBDb2xvcjo6d2hpdGUsIHNoYWRvd0NvbG9yKCkpOwogCiAgICAgICAgIEZsb2F0U2l6ZSBy
YWRpdXMoY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwogICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwpAQCAtNjQ4LDcgKzY0OCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxv
YXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgo
KSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5n
dGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwg
RmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCku
d2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVG
b3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5o
ZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSkpOwogCi0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZmlsbFJlY3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KGJ1dHRvbkNsaXAsIHN0eWxlLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSk7CiAKICAgICAg
ICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKGlzRm9jdXNl
ZChib3gpICYmICFpc1JlYWRPbmx5Q29udHJvbChib3gpID8gQ29uY2F2ZUdyYWRpZW50IDogQ29u
dmV4R3JhZGllbnQpLCBidXR0b25DbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoYnV0dG9uQ2xp
cC54KCksIGJ1dHRvbkNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAgICAgfQpA
QCAtNjYzLDcgKzY2Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0
b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgRmxvYXRS
ZWN0IGVsbGlwc2UoYnV0dG9uQ2xpcC54KCkgKyAoYnV0dG9uQ2xpcC53aWR0aCgpIC0gY291bnQg
KiAoc2l6ZSArIHBhZGRpbmcpICsgcGFkZGluZykgLyAyLjAsIGJ1dHRvbkNsaXAubWF4WSgpIC0g
MTAuMCwgc2l6ZSwgc2l6ZSk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNl
KGVsbGlwc2UsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29sb3IoMC4wZiwg
MC4wZiwgMC4wZiwgMC41ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUs
IENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuNWYpKTsKICAgICAgICAgICAgIGVsbGlwc2UubW92
ZShzaXplICsgcGFkZGluZywgMCk7CiAgICAgICAgIH0KICAgICB9ICBlbHNlIHsKQEAgLTY4Miwx
MiArNjgyLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgc2hhZG93WzJdID0g
RmxvYXRQb2ludChhcnJvd1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOwogCiAgICAgICAg
IGZsb2F0IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gpID8gMC4yIDogMC41OwotICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3Bh
Y2l0eSkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMs
IHNoYWRvdywgdHJ1ZSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjp3
aGl0ZSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywg
YXJyb3csIHRydWUpOwogICAgIH0KIApAQCAtNzcyLDkgKzc3Miw5IEBAIGJvb2wgUmVuZGVyVGhl
bWVJT1M6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBh
aW50SW5mbyYKIAogICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgaWYgKHJlYWRvbmx5KQotICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxNzgsIDE3OCwg
MTc4KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDE3OCwgMTc4LCAxNzgpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcig3Niwg
NzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDc2LCA3NiwgNzYpKTsKIAogICAgICAgICBSZXRh
aW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRlZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhD
cmVhdGVNdXRhYmxlKCkpOwogICAgICAgICBDR1BhdGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVj
dFBhdGguZ2V0KCksIDAsIHRyYWNrQ2xpcCwgY29ybmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBA
IC04NTksOCArODU5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBzdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIGNv
bnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7
CiAKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3Bh
Y2UoKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgY29s
b3JTcGFjZSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSkp
OwogCiAgICAgUGF0aCB0cmFja1BhdGg7CiAgICAgRmxvYXRSZWN0IHRyYWNrUmVjdChyZWN0Lngo
KSArIDAuMjUsIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjI1LCByZWN0LndpZHRoKCkg
LSAwLjUsIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41KTsKQEAgLTEwMjQsOCArMTAyMyw4IEBAIGJv
b2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBSCiAKICAgICAgICAgLy8gQmFja2dyb3VuZCBwaWN0dXJlIGZy
YW1lIGFuZCBzaW1wbGUgYmFja2dyb3VuZCBpY29uIHdpdGggYSBncmFkaWVudCBtYXRjaGluZyB0
aGUgYnV0dG9uLgogICAgICAgICBDb2xvciBiYWNrZ3JvdW5kSW1hZ2VDb2xvciA9IENvbG9yKGJ1
dHRvblJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKS5yZ2IoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFt
ZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwg
Y29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNr
Z3JvdW5kSW1hZ2VDb2xvcik7CiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKTsKQEAgLTEwNDUsNyArMTA0NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSCiAg
ICAgfQogCiAgICAgLy8gRm9yZWdyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJu
YWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwg
Y29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRo
dW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNp
emUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvcik7CiAgICAgaWNvbi0+cGFpbnQocGFp
bnRJbmZvLmNvbnRleHQoKSwgdGh1bWJuYWlsUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggOTJhZjBjZjVh
YzVhODNmODBiNzYxMDdlNDVmZWZmNjZlZGNhZjNiZC4uN2Y4ZGMyNDIxOTBmOWUwZDA5NjE1MzEz
ZjhiMjI2N2M5YmVhZTM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQpAQCAtMTE1Niw3ICsxMTU2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoLTEsIDEpKTsKICAgICB9
CiAKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGluZmxhdGVkUmVj
dC5sb2NhdGlvbigpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEzMDEsNyArMTMwMSw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHJlbmRlcmVyLnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBwYWludEluZm8uY29udGV4
dCgpLnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAgIEZsb2F0UG9pbnQgYXJyb3cxWzNd
OwpAQCAtMTMzMCwxMSArMTMzMCwxMSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVM
aXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgIC8v
IERyYXcgdGhlIHNlcGFyYXRvciB0byB0aGUgbGVmdCBvZiB0aGUgYXJyb3dzCiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7IC8vIERlbGliZXJhdGVseSBpZ25v
cmVzIHpvb20gc2luY2UgaXQgbG9va3MgbmljZXIgaWYgaXQgc3RheXMgdGhpbi4KICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihsZWZ0
U2VwYXJhdG9yQ29sb3IpOwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9p
bnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy5tYXhZKCkp
KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0
b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRTdHJva2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yKTsKICAgICBwYWludEluZm8uY29udGV4
dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFj
ZSwgYm91bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50
KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLm1heFkoKSkpOwog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MTQsNyArMTkxNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsCiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVk
UGx1Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNv
bnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgcGx1Z0luUmVuZGVyZXIuc3R5bGUoKS5jb2xvclNw
YWNlKCksIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250
ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3Vy
Y2VPdmVyKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIxODQsNyArMjE4NCw3IEBAIHN0
YXRpYyBOU0NvbG9yICp0aXRsZVRleHRDb2xvckZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCkKICAgICBpZiAoYXR0YWNobWVudC5zZWxlY3Rpb25TdGF0ZSgp
ICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewogICAgICAgICBpZiAoYXR0YWNobWVu
dC5mcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVjdGVkQ29udHJvbFRleHRDb2xvcl07ICAgIAot
ICAgICAgICByZXR1cm4gKE5TQ29sb3IgKiljYWNoZWRDR0NvbG9yKGF0dGFjaG1lbnRUaXRsZUlu
YWN0aXZlVGV4dENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICByZXR1cm4g
KE5TQ29sb3IgKiljYWNoZWRDR0NvbG9yKGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9y
KCkpOwogICAgIH0KIAogICAgIHJldHVybiBbTlNDb2xvciBibGFja0NvbG9yXTsKQEAgLTIyOTQs
NyArMjI5NCw3IEBAIHZvaWQgQXR0YWNobWVudExheW91dDo6bGF5T3V0U3VidGl0bGUoY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBm
b250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlGb250
U3lzdGVtLCBhdHRhY2htZW50U3VidGl0bGVGb250U2l6ZSwgbGFuZ3VhZ2UpKTsKICAgICBOU0Rp
Y3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0gQHsKICAgICAgICAgKGlkKWtDVEZvbnRBdHRyaWJ1
dGVOYW1lOiAoaWQpZm9udC5nZXQoKSwKLSAgICAgICAgKGlkKWtDVEZvcmVncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWU6IChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2htZW50U3VidGl0bGVU
ZXh0Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQikKKyAgICAgICAgKGlkKWtDVEZvcmVncm91
bmRDb2xvckF0dHJpYnV0ZU5hbWU6IChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2htZW50
U3VidGl0bGVUZXh0Q29sb3IoKSkKICAgICB9OwogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRT
dHJpbmc+IGF0dHJpYnV0ZWRTdWJ0aXRsZVRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpzdWJ0aXRsZVRleHQgYXR0cmlidXRlczp0ZXh0QXR0
cmlidXRlc10pOwogICAgIHN1YnRpdGxlTGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0
dHJpYnV0ZWRTdHJpbmcoKENGQXR0cmlidXRlZFN0cmluZ1JlZilhdHRyaWJ1dGVkU3VidGl0bGVU
ZXh0LmdldCgpKSk7CkBAIC0yMzU1LDcgKzIzNTUsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFj
aG1lbnRJY29uQmFja2dyb3VuZChjb25zdCBSZW5kZXJBdHRhY2htZW50JiwgR3JhcGhpY3NDb250
ZQogICAgIGlmIChwYWludEJvcmRlcikKICAgICAgICAgYmFja2dyb3VuZFJlY3QuaW5mbGF0ZSgt
YXR0YWNobWVudEljb25TZWxlY3Rpb25Cb3JkZXJUaGlja25lc3MpOwogCi0gICAgY29udGV4dC5m
aWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdCwgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkoYXR0YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVzKSksIGF0dGFjaG1l
bnRJY29uQmFja2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYmFja2dyb3VuZFJlY3QsIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpKGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cykpLCBhdHRh
Y2htZW50SWNvbkJhY2tncm91bmRDb2xvcigpKTsKIAogICAgIGlmIChwYWludEJvcmRlcikgewog
ICAgICAgICBGbG9hdFJlY3QgYm9yZGVyUmVjdCA9IGxheW91dC5pY29uQmFja2dyb3VuZFJlY3Q7
CkBAIC0yMzY0LDcgKzIzNjQsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFj
a2dyb3VuZChjb25zdCBSZW5kZXJBdHRhY2htZW50JiwgR3JhcGhpY3NDb250ZQogICAgICAgICBG
bG9hdFNpemUgaWNvbkJhY2tncm91bmRSYWRpdXNTaXplKGF0dGFjaG1lbnRJY29uQmFja2dyb3Vu
ZFJhZGl1cywgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVzKTsKICAgICAgICAgUGF0aCBi
b3JkZXJQYXRoOwogICAgICAgICBib3JkZXJQYXRoLmFkZFJvdW5kZWRSZWN0KGJvcmRlclJlY3Qs
IGljb25CYWNrZ3JvdW5kUmFkaXVzU2l6ZSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IoYXR0YWNobWVudEljb25Cb3JkZXJDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKCkp
OwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhhdHRhY2htZW50SWNvblNlbGVj
dGlvbkJvcmRlclRoaWNrbmVzcyk7CiAgICAgICAgIGNvbnRleHQuc3Ryb2tlUGF0aChib3JkZXJQ
YXRoKTsKICAgICB9CkBAIC0yMzk3LDcgKzIzOTcsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFj
aG1lbnRUaXRsZUJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwg
RwogICAgIGVsc2UKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gYXR0YWNobWVudFRpdGxlSW5h
Y3RpdmVCYWNrZ3JvdW5kQ29sb3IoKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGJhY2tn
cm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoYmFja2dyb3VuZENvbG9yKTsKIAogICAgIFBhdGggYmFja2dyb3VuZFBhdGggPSBQYXRoVXRp
bGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZWRSZWN0cyhiYWNrZ3JvdW5kUmVjdHMsIGF0dGFj
aG1lbnRUaXRsZUJhY2tncm91bmRSYWRpdXMpOwogICAgIGNvbnRleHQuZmlsbFBhdGgoYmFja2dy
b3VuZFBhdGgpOwpAQCAtMjQ0Nyw3ICsyNDQ3LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2ht
ZW50UHJvZ3Jlc3MoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3MK
ICAgICBiYWNrZ3JvdW5kUmVjdC5pbmZsYXRlKC1hdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJX
aWR0aCAvIDIpOwogCiAgICAgRmxvYXRSb3VuZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3Qo
YmFja2dyb3VuZFJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKGJhY2tncm91bmRSZWN0Lmhl
aWdodCgpIC8gMikpOwotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KGJhY2tncm91bmRSb3Vu
ZGVkUmVjdCwgYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KGJhY2tncm91bmRSb3Vu
ZGVkUmVjdCwgYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKCkpOwogCiAgICAg
ewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBTYXZlcihjb250ZXh0KTsK
QEAgLTI0NTcsMTMgKzI0NTcsMTMgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50UHJvZ3Jl
c3MoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3MKICAgICAgICAg
cHJvZ3Jlc3NSZWN0LnNldFdpZHRoKHByb2dyZXNzUmVjdC53aWR0aCgpICogcHJvZ3Jlc3MpOwog
ICAgICAgICBwcm9ncmVzc1JlY3QgPSBlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHByb2dyZXNz
UmVjdCwgYXR0YWNobWVudC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwogCi0gICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QocHJvZ3Jlc3NSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJG
aWxsQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QocHJvZ3Jlc3NSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJGaWxsQ29sb3IoKSk7CiAgICAg
fQogCiAgICAgUGF0aCBib3JkZXJQYXRoOwogICAgIGZsb2F0IGJvcmRlclJhZGl1cyA9IGJvcmRl
clJlY3QuaGVpZ2h0KCkgLyAyOwogICAgIGJvcmRlclBhdGguYWRkUm91bmRlZFJlY3QoYm9yZGVy
UmVjdCwgRmxvYXRTaXplKGJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzKSk7Ci0gICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJDb2xvcigpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRQ
cm9ncmVzc0JhckJvcmRlckNvbG9yKCkpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNz
KGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlcldpZHRoKTsKICAgICBjb250ZXh0LnN0cm9rZVBh
dGgoYm9yZGVyUGF0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
aW5kZXggOTAyOTVjYjFhYzk1ZTQwOWM0NDlmOTA5NWI5M2ZkODZlNGQ3MWQ1Ny4uMmQxNTRkZTIx
NDA3NGU4OTIwYzk2NjI1YWM3YTJjYWMxZGJiNDUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IAogICAgIC8vIFRoaXMgYXZvaWRzIHBhaW50aW5nIGdhcmJhZ2UgYmV0d2VlbiBjb2x1bW5zIGlm
IHRoZXJlIGlzIGEgY29sdW1uIGdhcC4KICAgICBpZiAoZnJhbWVWaWV3KCkucGFnaW5hdGlvbigp
Lm1vZGUgIT0gUGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50
V2l0aGluUm9vdCgqdGhpcykpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qo
cGFpbnRJbmZvLnJlY3QsIGZyYW1lVmlldygpLmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFp
bnRJbmZvLnJlY3QsIGZyYW1lVmlldygpLmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSk7CiAKICAgICBw
YWludE9iamVjdChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KQEAgLTYxMCw3ICs2MTAsNyBA
QCB2b2lkIFJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAgaWYgKGJhY2tncm91bmRDb2xvci5hbHBo
YSgpKSB7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0g
cGFpbnRJbmZvLmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwot
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwg
YmFja2dyb3VuZENvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBiYWNrZ3JvdW5kQ29sb3Ip
OwogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24o
cHJldmlvdXNPcGVyYXRvcik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGVhclJlY3QocGFpbnRJbmZvLnJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCA0NTQxZTkwYzhmMDRjOGRlNzczOGRmMGViZTA1
ZWFjNTdmZDViNzE2Li5jYzliOGNlNDJjNDk3MTUxMzE3NGJiOGU5MGI0NTZiZTA0Y2ZlZTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMjkwLDcgKzI5
MCw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRy
YW5zcGFyZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVk
KCkgJiYgIWRvY3VtZW50KCkucHJpbnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0
aW9uUmVjdCgpIGlzIGluIGFic29sdXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCi0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9u
UmVjdCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChz
ZWxlY3Rpb25SZWN0KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgfQogCiAg
ICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVzaXplKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggY2ZkYTVjZmJkNDg0OGM1ZDU0ZGYx
OTg3NTQ1YTFiODM4ZWExYzM2Ni4uYzkxOGE2YzE4NWRlODU5ODJkYmNjMTJjMmU5NGVhMmExY2Y2
ZDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAt
NDc3LDcgKzQ3Nyw3IEBAIEdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVTZWxlY3Rpb25HYXAo
UmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgICAgICAgICAg
TGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qo
cm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgbG9naWNhbFJlY3QpOwogICAgICAgICAgICAgICAg
IGlmIChpc1ByZXZpb3VzQm94U2VsZWN0ZWQgJiYgZ2FwUmVjdC53aWR0aCgpID4gMCAmJiBnYXBS
ZWN0LmhlaWdodCgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAocGFpbnRJbmZvICYm
IGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0
KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3QoZ2Fw
UmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFZpc2libGVTZWxlY3Rpb24gbWF5IGJlIG5vbi1j
b250aWd1b3VzLCBzZWUgY29tbWVudCBhYm92ZS4KICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LnVuaXRlQ2VudGVyKGdhcFJlY3QpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRl
eCA2NTZjN2Q0MjliMTg4OGIyMTZhODNlYTdkNTU1OTdmYzhiNGI3YzdjLi4zMjJjMWIyZTk1MmQy
NjU5M2FkZWMyZjdlNzM4ZmM1YThmZWYyZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC01Nyw4ICs1Nyw4
IEBAIHN0YXRpYyB2b2lkIHBhaW50RGVidWdCb3JkZXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgTGF5b3V0UmVjdCBib3JkZXJSZWN0LCBjCiAgICAgaWYgKHNuYXBwZWRSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwg
MCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcihDb2xvcigwLCAyNTUsIDApKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xv
cjo6dHJhbnNwYXJlbnQpOwogICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZFJlY3QpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAppbmRleCAyMjI2
ZWNkZjY5ZTUzYmJmNmJjODlkZTlkYmViYzczNjAzOTU2YTMxLi5lMWRlYmJiN2RjNDVkZDljYTIz
ZDYzNmNjZTg1OGUzYzQyNGJiNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRTdHlsZS5jcHAKQEAgLTM5LDI3ICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVRleHRQYWludFN0eWxlOjpUZXh0UGFpbnRTdHlsZShDb2xvclNwYWNlIGNvbG9yU3BhY2Up
Ci0gICAgOiBjb2xvclNwYWNlKGNvbG9yU3BhY2UpCi0gICAgLCBzdHJva2VXaWR0aCgwKQotI2lm
IEVOQUJMRShMRVRURVJQUkVTUykKLSAgICAsIHVzZUxldHRlcnByZXNzRWZmZWN0KGZhbHNlKQot
I2VuZGlmCi17Ci19Ci0KLVRleHRQYWludFN0eWxlOjpUZXh0UGFpbnRTdHlsZShDb2xvciBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotICAgIDogY29sb3JTcGFjZShjb2xvclNwYWNlKQot
ICAgICwgZmlsbENvbG9yKGNvbG9yKQorVGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKGNv
bnN0IENvbG9yJiBjb2xvcikKKyAgICA6IGZpbGxDb2xvcihjb2xvcikKICAgICAsIHN0cm9rZUNv
bG9yKGNvbG9yKQotICAgICwgc3Ryb2tlV2lkdGgoMCkKLSNpZiBFTkFCTEUoTEVUVEVSUFJFU1Mp
Ci0gICAgLCB1c2VMZXR0ZXJwcmVzc0VmZmVjdChmYWxzZSkKLSNlbmRpZgogewogfQogCi1zdGF0
aWMgQ29sb3IgYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKENvbG9yIHRleHRD
b2xvciwgQ29sb3IgYmFja2dyb3VuZENvbG9yKQorc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9y
VmlzaWJpbGl0eU9uQmFja2dyb3VuZChjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yKQogewogICAgIGludCBkID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4
dENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpOwogICAgIC8vIFNlbWktYXJiaXRyYXJpbHkgY2hvc2Ug
NjUwMjUgKDI1NV4yKSB2YWx1ZSBoZXJlIGFmdGVyIGEgZmV3IHRlc3RzLgpAQCAtNzYsNyArNjIs
NyBAQCBzdGF0aWMgQ29sb3IgYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKENv
bG9yIHRleHRDb2xvciwgQ29sb3IgYmFja2dybwogCiBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4
dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0
eWxlLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykKIHsKLSAgICBUZXh0UGFpbnRTdHlsZSBw
YWludFN0eWxlKGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgIFRleHRQYWludFN0eWxlIHBh
aW50U3R5bGU7CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgcGFpbnRTdHlsZS51c2VM
ZXR0ZXJwcmVzc0VmZmVjdCA9IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYg
VGV4dERlY29yYXRpb25MZXR0ZXJwcmVzczsKQEAgLTE5OCwxMiArMTg0LDEyIEBAIHZvaWQgdXBk
YXRlR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFBh
aW50U3R5bGUmIHBhaW50CiAgICAgfQogCiAgICAgQ29sb3IgZmlsbENvbG9yID0gZmlsbENvbG9y
VHlwZSA9PSBVc2VFbXBoYXNpc01hcmtDb2xvciA/IHBhaW50U3R5bGUuZW1waGFzaXNNYXJrQ29s
b3IgOiBwYWludFN0eWxlLmZpbGxDb2xvcjsKLSAgICBpZiAobW9kZSAmIFRleHRNb2RlRmlsbCAm
JiAoZmlsbENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkgfHwgcGFpbnRTdHlsZS5jb2xvclNw
YWNlICE9IGNvbnRleHQuZmlsbENvbG9yU3BhY2UoKSkpCi0gICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGZpbGxDb2xvciwgcGFpbnRTdHlsZS5jb2xvclNwYWNlKTsKKyAgICBpZiAobW9kZSAm
IFRleHRNb2RlRmlsbCAmJiAoZmlsbENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpKQorICAg
ICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwogCiAgICAgaWYgKG1vZGUgJiBU
ZXh0TW9kZVN0cm9rZSkgewogICAgICAgICBpZiAocGFpbnRTdHlsZS5zdHJva2VDb2xvciAhPSBj
b250ZXh0LnN0cm9rZUNvbG9yKCkpCi0gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IsIHBhaW50U3R5bGUuY29sb3JTcGFjZSk7CisgICAgICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IpOwogICAg
ICAgICBpZiAocGFpbnRTdHlsZS5zdHJva2VXaWR0aCAhPSBjb250ZXh0LnN0cm9rZVRoaWNrbmVz
cygpKQogICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MocGFpbnRTdHlsZS5z
dHJva2VXaWR0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5
bGUuaAppbmRleCA5OTRlNDVkY2Y0ZThhNDg5ODg0Y2RjYmMyM2IxYzIwNmI3MGE5ODA2Li5mMGNi
ZWJiOWY4NDdjNWE1N2U2OGEwMTU0ZmQ0NDcwZDZhYWFkNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaApAQCAtMzksMTYgKzM5LDE1IEBAIGNsYXNzIFNoYWRv
d0RhdGE7CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBzdHJ1Y3QgVGV4dFBhaW50U3R5bGUgewotICAg
IFRleHRQYWludFN0eWxlKENvbG9yU3BhY2UpOwotICAgIFRleHRQYWludFN0eWxlKENvbG9yLCBD
b2xvclNwYWNlKTsKKyAgICBUZXh0UGFpbnRTdHlsZSgpIHsgfQorICAgIFRleHRQYWludFN0eWxl
KGNvbnN0IENvbG9yJik7CiAKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2U7CiAgICAgQ29sb3Ig
ZmlsbENvbG9yOwogICAgIENvbG9yIHN0cm9rZUNvbG9yOwogICAgIENvbG9yIGVtcGhhc2lzTWFy
a0NvbG9yOwotICAgIGZsb2F0IHN0cm9rZVdpZHRoOworICAgIGZsb2F0IHN0cm9rZVdpZHRoIHsg
MCB9OwogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKLSAgICBib29sIHVzZUxldHRlcnByZXNzRWZm
ZWN0OworICAgIGJvb2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgeyBmYWxzZSB9OwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCBlNDI4NmMw
NDEwM2NjYjc5YjRlNmU2NmI3YmJiNTQyNmZjMmQ2ODczLi5lYzIzMDJjY2VlZTYxYjYzNDNlMTY0
OWY3ZjI2NmFkYmU1NGU4N2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRl
ci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBTaGFkb3dBcHBsaWVyOjpTaGFkb3dBcHBsaWVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LAogICAgIH0K
IAogICAgIGlmICghbV9hdm9pZERyYXdpbmdTaGFkb3cpCi0gICAgICAgIGNvbnRleHQuc2V0U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgY29udGV4dC5maWxs
Q29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIH0KIAogU2hhZG93QXBwbGllcjo6flNoYWRvd0Fw
cGxpZXIoKQpAQCAtMTE4LDExICsxMTgsMTAgQEAgc3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNo
YWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm8KICAg
ICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGJvb2wgc3Ryb2tlZCwgYm9vbCBob3Jpem9udGFs
KQogewogICAgIENvbG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7Ci0gICAgQ29s
b3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKICAgICBi
b29sIG9wYXF1ZSA9ICFmaWxsQ29sb3IuaGFzQWxwaGEoKTsKICAgICBib29sIGxhc3RTaGFkb3dJ
dGVyYXRpb25TaG91bGREcmF3VGV4dCA9ICFzdHJva2VkICYmIG9wYXF1ZTsKICAgICBpZiAoIW9w
YXF1ZSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBmaWxsQ29s
b3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAK
ICAgICBkbyB7CiAgICAgICAgIFNoYWRvd0FwcGxpZXIgc2hhZG93QXBwbGllcihjb250ZXh0LCBz
aGFkb3csIGJveFJlY3QsIGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCwgb3BhcXVl
LCBob3Jpem9udGFsID8gSG9yaXpvbnRhbCA6IFZlcnRpY2FsKTsKQEAgLTEzMyw3ICsxMzIsNyBA
QCBzdGF0aWMgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmbwogCiAgICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQg
PSByb3VuZGVkSW50U2l6ZShzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCkpOwogICAgICAgICBp
ZiAoIXNoYWRvdyAmJiAhb3BhcXVlKQotICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
ZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IpOwogCiAgICAgICAgIGlmIChzdGFydE9mZnNldCA8PSBlbmRPZmZzZXQp
CiAgICAgICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNNYXJrcyhjb250ZXh0LCBmb250LCB0ZXh0
UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgdGV4dE9yaWdpbiArIGV4dHJh
T2Zmc2V0LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggYjZkZTc5ZThi
MjQ2NTk5ZmQyYTQ1OTI0Yzc2OTRhMjE3YTg4YjE5Ny4uOTBjNTljZTk1NDEwMTMzZGM1YTk5ZGFl
MTE5OGYxNWM2NWY5OTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICAKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25l
c3MoMS4wZik7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2Up
OwotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENv
bG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigw
LCAwLCAyNTUpKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBh
aW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBl
ZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7CiAgICAgaW5mby5jb250
ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNu
YXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSksIEludFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0
ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOwpAQCAtMTEz
LDEzICsxMTMsMTMgQEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgCiAgICAgaW50IHRvcFN0
YXJ0ID0gcGFkZGluZ1RvcCgpOwogICAgIAotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKENvbG9yKDAsIDI1NSwgMCksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApKTsKICAgICAKICAgICBpbmZvLmNvbnRl
eHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQ
YWludE9mZnNldC55KCkgKyB0b3BTdGFydCksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQu
eCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkg
KyB0b3BTdGFydCkpOwogICAgIAogICAgIGludCBiYXNlbGluZSA9IHJvdW5kVG9JbnQoYmFzZWxp
bmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKSk7CiAg
ICAgCi0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwg
Q29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9y
KDI1NSwgMCwgMCkpOwogICAgIAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50
KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2Vs
aW5lKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJh
Y3Rpb24uY3BwCmluZGV4IDUxOWJiMzg4ODk2MzI2NTM4NTY5NjgyOGVhMGM2YjdmMDY1ZDJkN2Iu
LjkyZTIxODI1MDUxODk3YzFkY2I4YWJjZjgxMzZiYWMwOThkZDNkNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24u
Y3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQo
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAKICAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9saW5lVGhpY2tuZXNzKTsKICAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSk7CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgcm91
bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgZGVub21p
bmF0b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNZW5jbG9zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmNwcAppbmRleCBiODZlMzYyOWE2Yjc4ZTQwNGE1ZmJhZGU0NDc4ZDJl
NDc0NTQ3NjkxLi5lOWU1MzRjNDNkNTQ3ZmViZDNiZWJiNjMzNzliMDFjZGVmOTYyYTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xv
c2U6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRl
eHQoKSk7CiAgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKICAg
ICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGlu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICAgICAgLy8gVE9ETyBhZGQgc3VwcG9ydCBmb3Igbm90
YXRpb24gdmFsdWUgdXBkaWFnb25hbGFycm93IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc0NjYKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub3RhdGlv
bmFsVmFsdWVTaXplOyBpKyspIHsKICAgICAgICAgICAgIGlmIChub3RhdGlvblZhbHVlc1tpXSA9
PSAidXBkaWFnb25hbHN0cmlrZSIpCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW5kZXJNYXRo
TUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJob3Jp
em9udGFsc3RyaWtlIikKICAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJ
bnRQb2ludChsZWZ0LCB0b3AgKyBoYWxmYm94SGVpZ2h0KSwgSW50UG9pbnQobGVmdCArIGJveFdp
ZHRoLCB0b3AgKyBoYWxmYm94SGVpZ2h0KSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub3RhdGlv
blZhbHVlc1tpXSA9PSAiY2lyY2xlIikgewotICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgp
LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnQpOwogICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdFbGxpcHNlKHJlY3Qp
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAibG9uZ2RpdiIp
CiAgICAgICAgICAgICAgICAgaXNEZWZhdWx0TG9uZ0RpdiA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3Bw
CmluZGV4IDNjZmViMjFjYThkMjU3ZjNlZmU1MGFhMWU5Y2RjMTdlNDkyMmMxYWMuLjY2MDIxMGYz
NGNmNjBjY2JmNzc2ZjUxYmQwMGYxMzY3ZGJjYmVmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0x
ODg5LDcgKzE4ODksNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWludChQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgICAgICByZXR1cm47
CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0
KCkpOwotICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAg
IGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAKICAgICBpZiAobV9zdHJldGNoeURhdGEubW9kZSgpID09
IERyYXdTaXplVmFyaWFudCkgewogICAgICAgICBBU1NFUlQobV9zdHJldGNoeURhdGEudmFyaWFu
dCgpLmdseXBoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAppbmRleCA2OTI1YTc5ZDU1
OWQ2MWJlZGQ5NGNjODVkN2QwN2U3NDIzNGU5YmI1Li4xODA4MjlkZjA5MTA3NDQzYjcxMWU2NTBm
NDQyYjRlZDI4MjliOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCkBAIC0xMzMs
NyArMTMzLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KIAogICAgIGluZm8uY29udGV4dCgp
LnNldFN0cm9rZVRoaWNrbmVzcyhnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgpLmZv
bnRTaXplKCkpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
aW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgIGluZm8uY29udGV4dCgpLnNldExpbmVKb2luKE1p
dGVySm9pbik7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0TWl0ZXJMaW1pdChzdHlsZSgpLmZvbnRT
aXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb290LmNwcAppbmRleCBhYzRhMTVkZDg0YTQ5MzQ0MmYzNDU5YzVhNDUwMjEzMTRh
MDE3NWU2Li5jMjQzZDIwZThhN2IyYTA4NzdkNTA5MzEzMWU0ZjhiZTI4MDlhYzZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fcnVsZVRoaWNrbmVzcyk7CiAgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7
CiAKICAgICAvLyBUaGUgcHJlZmVycmVkIHdpZHRoIG9mIHRoZSByYWRpY2FsIGlzIHNvbWV0aW1l
cyBpbmNvcnJlY3QsIHNvIHdlIGRyYXcgYSBzbGlnaHRseSBsb25nZXIgbGluZSB0byBlbnN1cmUg
aXQgdG91Y2hlcyB0aGUgcmFkaWNhbCBzeW1ib2wgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAzMjYpLgogICAgIExheW91dFVuaXQgc2l6ZUVycm9yID0gcmFkaWNh
bC0+dHJhaWxpbmdTcGFjZUVycm9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCmluZGV4IGUwY2FlYWM5Y2Q4MDFhMWI4YjczMGI4ZjRiOWQ3YTZkNzE3ZWJhYWQu
LmZjYzhiN2E4ODkzNTRjMjJhNTYwZGQ5YTI5ZmI4MWVhNjNiOTcyOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBm
bG9hdCB0aHJlc2hvbGQsIGMKICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogICAg
ICAgICBpZiAoaW1hZ2UpCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCpp
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Qu
c2l6ZSgpKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAKICAgICAgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gaW1hZ2VCdWZmZXItPmdldFVubXVsdGlw
bGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKICAg
ICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHBpeGVsQXJyYXktPmxlbmd0aCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAK
aW5kZXggYzkzOWFlNzVkMWRmYmI5M2MyMDBkOTQwY2E2ZDRhMjlhNzZhNmJkMC4uNWRlZGI1NTYy
YjgzNDFhN2FlNjc1OTkzODZkMGI5MTBmOGVjMzM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCkBAIC0yMDksMjAgKzIwOSwxOCBA
QCB2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZAogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlLmNvbG9yU3BhY2UoKTsKLQog
ICAgIGZvciAoSW1hZ2VQaWVjZSBwaWVjZSA9IE1pblBpZWNlOyBwaWVjZSA8IE1heFBpZWNlOyAr
K3BpZWNlKSB7CiAgICAgICAgIGlmICgocGllY2UgPT0gTWlkZGxlUGllY2UgJiYgIWZpbGwoKSkg
fHwgaXNFbXB0eVBpZWNlUmVjdChwaWVjZSwgZGVzdGluYXRpb25SZWN0cywgc291cmNlUmVjdHMp
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGlzQ29ybmVyUGllY2UocGll
Y2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgY29s
b3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3Ap
OworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RpbmF0
aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIG9wKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gaXNI
b3Jpem9udGFsUGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPihob3Jp
em9udGFsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsKICAgICAgICAgSW1hZ2U6OlRpbGVS
dWxlIHZSdWxlID0gaXNWZXJ0aWNhbFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpU
aWxlUnVsZT4odmVydGljYWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwotICAgICAgICBn
cmFwaGljc0NvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBjb2xvclNwYWNlLCBkZXN0aW5h
dGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwg
aFJ1bGUsIHZSdWxlLCBvcCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFn
ZSgqaW1hZ2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIHRp
bGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMmI2NDUwNzc2NzA4
Njg4MjBjY2U5N2YwMDRhNTQ1NTk3MmYwZWIyNy4uYmYxYzIxOTAyZDJmNGYwNzQwZTY3Y2RlMWUx
NDM3NmZiMzYwMDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTkwMiw3ICs5MDIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXh0U2hh
ZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwgTGF5b3V0VW5p
dCYgbG9naWNhbEJvdHRvbSkgY29uc3QgeyBnZXRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudCh0
ZXh0U2hhZG93KCksIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOyB9CiAKICAgICBmbG9hdCB0
ZXh0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0
cm9rZVdpZHRoOyB9Ci0gICAgc3RhdGljIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIHsgcmV0dXJu
IENvbG9yU3BhY2VTUkdCOyB9IC8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgYWRkaW5nIGNvbG9yIHNw
YWNlIGhhbmRsaW5nIGludG8gdGhlIENvbG9yIGNsYXNzLgogICAgIGZsb2F0IG9wYWNpdHkoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eTsgfQogICAgIENvbnRy
b2xQYXJ0IGFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250cm9sUGFy
dD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSk7IH0KICAgICBBc3BlY3RSYXRp
b1R5cGUgYXNwZWN0UmF0aW9UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXNwZWN0
UmF0aW9UeXBlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb1R5cGUpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4
IGVmNzU3ZTczNjNmMzQ4ZGJkZmZhNTJmY2NkZThhZDJjYzAyYjczNTYuLmVhNDAyMDcyOTA3ZDY0
OGFjMzhkNTFhYTY1YzNiNTBjYTA1YjE5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBSZW5k
ZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogCiAgICAg
aW1hZ2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJl
Y3QsIHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdl
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZv
aWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXggMWQwMTNh
ZDdjMWUwZThjNDAxNDAwODY4YTI3MjU5M2FiYWNhMmQwNS4uMjk0Y2I0NjIzZGQ3ODEzZGI2Nzg4
Mzc1ZmQ2ZWEyNmQzYmQ2NWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1BhdGguY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIHVzZVN0cm9r
ZVN0eWxlVG9GaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBlbHNlIGlmIChQYXR0
ZXJuKiBwYXR0ZXJuID0gY29udGV4dC5zdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIGNvbnRleHQu
c2V0RmlsbFBhdHRlcm4oKnBhdHRlcm4pOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoY29udGV4dC5zdHJva2VDb2xvcigpLCBjb250ZXh0LnN0cm9rZUNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbnRleHQuc3Ryb2tlQ29sb3IoKSk7
CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA0ZjNiZDc4ODI3YzU2MjBkMTViNzYy
N2YyNmY2NWVhNGE3MGNmMWEzLi4xNmFlZGI3MzI2NmRiZmZmN2M5OTNhZmI5ZjU4YWRkODdkNjdk
NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBHcmFwaGljCiAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hl
YXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKIAogICAgICAgICAgICAgY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRp
b24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCku
aGVpZ2h0KCkpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBsYXN0RWZmZWN0LT5hYnNvbHV0
ZVBhaW50UmVjdCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVz
dWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkpOwog
CiAgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCmluZGV4IGZiODhmYzhiNGIy
OGI3ODU5ZGQ4ZjIxNWI5MDI1MWQ3ZTBkMjgzZTcuLjRiMjBkYTU4ZjllNWMzZWM5MDVmOWVhMzZj
ZjM4ZGY2ZDc2M2NhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKQEAgLTQyLDcgKzQyLDYg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFIKICAgICBBU1NFUlQocmVzb3VyY2VNb2RlICE9IEFw
cGx5VG9EZWZhdWx0TW9kZSk7CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUg
PSBzdHlsZS5zdmdTdHlsZSgpOwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlLmNv
bG9yU3BhY2UoKTsKIAogICAgIGJvb2wgaXNSZW5kZXJpbmdNYXNrID0gcmVuZGVyZXIudmlldygp
LmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JSZW5kZXJpbmdTVkdN
YXNrOwogCkBAIC01MSw3ICs1MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9y
OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSCiAgICAgICAg
ICAgICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5maWxsT3BhY2l0eSgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoMSk7Ci0gICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihtX2NvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0
RmlsbENvbG9yKG1fY29sb3IpOwogICAgICAgICBpZiAoIWlzUmVuZGVyaW5nTWFzaykKICAgICAg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxSdWxlKHN2Z1N0eWxlLmZpbGxSdWxlKCkpOwogCkBAIC02
MSw3ICs2MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291
cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSCiAgICAgICAgIC8vIFdoZW4gcmVu
ZGVyaW5nIHRoZSBtYXNrIGZvciBhIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciwgdGhlIHN0cm9r
ZSBjb2RlIHBhdGggaXMgbmV2ZXIgaGl0LgogICAgICAgICBBU1NFUlQoIWlzUmVuZGVyaW5nTWFz
ayk7CiAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLnN0cm9rZU9wYWNpdHkoKSk7
Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fY29sb3IsIGNvbG9yU3BhY2UpOwor
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yKTsKIAogICAgICAgICBTVkdS
ZW5kZXJTdXBwb3J0OjphcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHN0eWxlLCBy
ZW5kZXJlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCmluZGV4IDY5ZjI5NjA2YzZjY2YxMDQwZDVhMDlhMzVmZDNiMjQzYzg5NjZm
NjguLjZlNWRmMzAzZTIyZDA4OGM2MWZhMmYzMDBkZDQ1YTMzNGRkNTljNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMjI1
LDggKzIyNSw4IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3Jv
dW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgICAgICBpZiAoIWZyYWdtZW50VHJhbnNmb3Jt
LmlzSWRlbnRpdHkoKSkKICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RN
KGZyYWdtZW50VHJhbnNmb3JtKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChm
cmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5
bGUpLCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChm
cmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5
bGUpLCBiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUg
PSBBcHBseVRvRGVmYXVsdE1vZGU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZDAyZWU1MGJkNmNhMzdl
NjBhNTJlZDRmNjgwNDZlZmY5MDgxYThiYy4uNmM5OTA1NTJmODFjYTE0OTAwODc5MTg4YzE2MTRl
MTdmMTNjNTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBTVkdSZW5kZXJp
bmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBQYWkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaGFkb3cpIHsKLSAgICAgICAgICAg
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFk
b3ctPngoKSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hh
ZG93LT5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgbV9wYWludElu
Zm8tPmNvbnRleHQoKS5zZXRTaGFkb3coSW50U2l6ZShyb3VuZFRvSW50KHNoYWRvdy0+eCgpKSwg
cm91bmRUb0ludChzaGFkb3ctPnkoKSkpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9y
KCkpOwogICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKDEpOwogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBFbmRTaGFkb3dMYXll
cjsKICAgICAgICAgfQpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6YnVmZmVyRm9yZWdyb3VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWludEluZm8tPmNv
bnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBib3VuZGluZ0JveCk7CisgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBib3VuZGluZ0JveCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcAppbmRleCBkZThhMjJiYWQyYjVhYzdm
ZTk0OTFjMTc4MDMyOTE4MTcyZDBhNzZiLi5jNmI0OTU4YjcxZWY1NDMyMGQ0YzJhZDQyYjMxOGY5
NWIxNGU5M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkCiAgICAgZmxvYXQgYWxwaGEgPSBh
bmltYXRlZENvbG9yLmFscGhhKCk7CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRk
aXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21Db2xvci5hbHBoYSgpLCB0
b0NvbG9yLmFscGhhKCksIHRvQXRFbmRPZkR1cmF0aW9uQ29sb3IuYWxwaGEoKSwgYWxwaGEpOwog
Ci0gICAgYW5pbWF0ZWRDb2xvciA9IHsgeyByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKHJlZCks
IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoZ3JlZW4pLCByb3VuZEFuZENsYW1wQ29sb3JDaGFu
bmVsKGJsdWUpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGFscGhhKSB9LCBDb2xvclNwYWNl
U1JHQiB9OworICAgIGFuaW1hdGVkQ29sb3IgPSB7IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwo
cmVkKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChncmVlbiksIHJvdW5kQW5kQ2xhbXBDb2xv
ckNoYW5uZWwoYmx1ZSksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYWxwaGEpIH07CiB9CiAK
IGZsb2F0IFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNzU0NGE3NmYzNWYzNWRhM2FhNTlkYjI3
NThhMWE2MmE5YTI5ZmY5Mi4uNzY5YzU0ZWE2YmY4ZGY5N2FlZjFjZjUwNmY4MGZkMzMwZjMyMjBm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xMzksNyAr
MTM5LDcgQEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiB9CiAKIHZv
aWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWkKICAg
ICBhZGp1c3RlZFNyY1NpemUuc2NhbGUocm91bmRlZENvbnRhaW5lclNpemUud2lkdGgoKSAvIGNv
bnRhaW5lclNpemUud2lkdGgoKSwgcm91bmRlZENvbnRhaW5lclNpemUuaGVpZ2h0KCkgLyBjb250
YWluZXJTaXplLmhlaWdodCgpKTsKICAgICBzY2FsZWRTcmMuc2V0U2l6ZShhZGp1c3RlZFNyY1Np
emUpOwogCi0gICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbG9yU3BhY2Us
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
KyAgICBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAgICAgc2V0SW1hZ2VPYnNl
cnZlcihvYnNlcnZlcik7CiB9CkBAIC0xNzksNyArMTc5LDcgQEAgUGFzc05hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAgICAgaWYgKCFidWZmZXIp
IC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGRy
YXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3Qo
KSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CiAKICAgICAvLyBGSVhNRTogV0soQnVnIDExMzY1Nyk6IFdlIHNob3Vs
ZCB1c2UgRG9udENvcHlCYWNraW5nU3RvcmUgaGVyZS4KICAgICByZXR1cm4gYnVmZmVyLT5jb3B5
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBA
IC0xODcsNyArMTg3LDcgQEAgUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpCiAjZW5kaWYKIAogdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGNv
bnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgRmxvYXRSZWN0IHpvb21lZENvbnRhaW5l
clJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250YWluZXJTaXplKTsKICAgICB6b29t
ZWRDb250YWluZXJSZWN0LnNjYWxlKHpvb20pOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgU1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRTaXplCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1h
Z2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbnRleHQsIHRy
dWUpOwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAg
ICAgICByZXR1cm47Ci0gICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29u
dGFpbmVyU2l6ZSwgem9vbSwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0LCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwp
OworICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUs
IHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwgQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICBpZiAoY29udGV4dC5kcmF3THVtaW5hbmNl
TWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApAQCAt
MjE5LDEwICsyMTksMTAgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICB1bnNjYWxlZFBh
dHRlcm5UcmFuc2Zvcm0uc2NhbGUoMSAvIGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgMSAvIGlt
YWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCiAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNl
TWFzayhmYWxzZSk7Ci0gICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNjYWxlZFNyY1Jl
Y3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbG9yU3BhY2Us
IGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGltYWdlLT5kcmF3UGF0dGVy
bihjb250ZXh0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBT
VkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQordm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDFhYmE5MmFlODc5
M2E0Y2U0ZWI4MzY3NTg4NjY3NWQ4YTBhMTRlMWIuLjc5ODAzMTRlODc5OWY3MDk0MGViNGEwOTdj
ZDk4NDQ0ODI1ZjIyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBA
IC05Myw5ICs5Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciYsIGNvbnN0
IFVSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdGb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSwKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdGb3JDb250YWlu
ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CiAKICAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVu
dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHAKaW5kZXggNWEzODM1MTE2NTA4ZDdkMGRmY2JhMGU0MzYwZTY1Y2Y1
MzEwNzQzMC4uNGUxNjFlM2YwZDQ0YTZhYTZlYTZjMDNmNWVkOWFiYzE5ZWJhZWExZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwCkBAIC0zNSwxNSArMzUsMTUgQEAgRmxvYXRTaXplIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpz
aXplKCkgY29uc3QKIH0KIAogdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbikKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pCiB7Ci0gICAgbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRh
aW5lclNpemUsIG1fem9vbSwgZHN0UmVjdCwgc3JjUmVjdCwgY29sb3JTcGFjZSwgY29tcG9zaXRl
T3AsIGJsZW5kTW9kZSk7CisgICAgbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBt
X2NvbnRhaW5lclNpemUsIG1fem9vbSwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3AsIGJs
ZW5kTW9kZSk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgbV9pbWFnZS0+
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20s
IHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBj
b21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2ltYWdlLT5kcmF3UGF0dGVy
bkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fem9vbSwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBi
bGVuZE1vZGUpOwogfQogCiBQYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggNmFiYmJjNmQwMjJlMDBiY2M5
YjE4NmZhNTk4ODhiOWFkN2VlYTVmMy4uZGU5OGZmMjE2NjFlM2Q0NDIxM2NiMmU3NmQxZjMyZDRj
Y2ZjMzE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmgKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICBtX2ltYWdl
LT5jb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVp
Z2h0LCBpbnRyaW5zaWNSYXRpbyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFNpemUmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0Jiwg
QmxlbmRNb2RlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25z
dCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIHZpcnR1YWwgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApp
bmRleCA2NjE4Y2Y1NDg0ZTQ5ZWUyMWNjY2Y2Nzg5NGQwMDJmNjBlMTdlODA2Li43ZjdhOWMzMmRm
ODVmMWIxZTg0MTYwNzVlOGNiODE4ZWVlZDY3NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBA
IHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCptX2ltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2UoKm1faW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAog
dm9pZCBGRUltYWdlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1Bh
Z2VPdmVybGF5Q2xpZW50LmNwcAppbmRleCA2MWYxOWJmMTY1MDFhOWRmZjE2ZDdiOWU4OTgyMDQ4
NGUyMTExNWQ4Li5jYmMzODU2MzcxM2JmN2U3ZGI5NjhkMTdmZWI5NjkzMTA5MjUyYjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCkBA
IC04NywxMCArODcsMTAgQEAgdm9pZCBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGNvbnQKICAgICBGbG9hdFJlY3Qg
aW5zZXRSZWN0ID0gb3ZlcmxheS5ib3VuZHMoKTsKIAogICAgIGlmIChvdmVybGF5Lm92ZXJsYXlU
eXBlKCkgPT0gUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCkgewotICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCkpOwog
ICAgICAgICBpbnNldFJlY3QuaW5mbGF0ZSgtNTApOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAg
ICAgICAgIGluc2V0UmVjdC5pbmZsYXRlKC0yMCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KaW5kZXggZjFlNzQ5OTNhYzc4NDIwZTUxNTY5ODAx
NDE3ODA4ZThhZWRiYTM2Yy4uNTE5MmZiODE5YjgzOTAxOWVjYzllZjA5OWUwZjZkYjBlYzNhNWE3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtMTIw
LDcgKzEyMCw3IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlV2hp
dGUoQ0dGbG9hdCB3aGl0ZSwgQ0dGbG9hdCBhbHBoYSkKICAgICBDR0NvbnRleHRTYXZlR1N0YXRl
KGNvbnRleHQpOwogICAgIENHRmxvYXQgaGVpZ2h0ID0gV2ViS2l0TGlua2VkT25PckFmdGVyKFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfRkxJUFBFRF9TSEFET1dTKSA/IDIuMGYgOiAtMi4wZjsK
ICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoY29udGV4dCwgQ0dTaXplTWFrZSgwLjBm
LCBoZWlnaHQpLCAzLjBmLCBbW3NlbGYgY2xhc3NdIHNoYWRvd0NvbG9yXSk7Ci0gICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0
aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7CiAgICAgQ0dDb250
ZXh0RmlsbFJlY3QoY29udGV4dCwgcGFnZVJlY3QpOwogICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY29udGV4dCk7ICAgIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2Vi
Vmlldy9XZWJQbGFpbldoaXRlVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2Vi
UGxhaW5XaGl0ZVZpZXcubW0KaW5kZXggMWUwZTA3YzRmOTdmZWU0YWE0MjAxM2IxNTE2Y2I0Yzkz
OGQ5OThkMi4uOTA3NzIyMDYzMWNhNThhYmQ4MjJjMTJjOTM2YWRjMTFkMDViNTk5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tCkBAIC00Miw3
ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLSAodm9pZClkcmF3UmVjdDooTlNS
ZWN0KXJlY3QKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBo
aWNzQ29udGV4dCgpOwotICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0
LCBjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENv
bG9yOjp3aGl0ZSkpOwogICAgIFdLUmVjdEZpbGwoY29udGV4dCwgW3NlbGYgYm91bmRzXSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRy
YXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmlu
ZGV4IDAwMjVhZTI5MzAyMTdhMmFlNjYyZmYwNGQ2YTBiNjRjOWI0YmRkYWQuLmNmNzhkYjMzYjdm
MmU3YWU2MDAwYzc3OWQ2Y2JiNzEwNGY3NmJmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBC
T09MIGNhblVzZUZhc3RSZW5kZXJlcihjb25zdCBVbmlDaGFyICpidWZmZXIsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICAgICAgQ0dGbG9hdCBibHVlOwogICAgICAgICBDR0Zsb2F0IGFscGhhOwogICAg
ICAgICBbW3RleHRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xv
clNwYWNlXSBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBhbHBoYTomYWxwaGFd
OwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1
NSwgZ3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVk
ICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpKTsKIAogICAgICAg
ICB3ZWJDb3JlRm9udC5kcmF3VGV4dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChw
b2ludC54LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3
Lm1tCmluZGV4IGRiMDViMzRkYmViOTRkNjhlNjZlMmRiZmJjMjkyN2MyNmY1ZmMxMGIuLjM4YWJi
YjRkNDE2MTY4OWZlYjY4MmYwNzA4MmJlYWEzYTk2MmQ1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KQEAgLTI4
MCwxMCArMjgwLDEwIEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVy
LCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKICAgICBGbG9hdFF1YWQgcGFkZGluZ1F1YWQg
PSBoaWdobGlnaHQtPnF1YWRzWzJdOwogICAgIEZsb2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hs
aWdodC0+cXVhZHNbM107CiAKLSAgICBtYXJnaW5MYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0Nv
bG9yKGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGJv
cmRlckxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5ib3JkZXJDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNh
Y2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5wYWRkaW5nQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgIGNvbnRlbnRMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+
Y29udGVudENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBtYXJnaW5MYXllci5maWxs
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IpOworICAgIGJvcmRl
ckxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5ib3JkZXJDb2xvcik7
CisgICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5w
YWRkaW5nQ29sb3IpOworICAgIGNvbnRlbnRMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9y
KGhpZ2hsaWdodC0+Y29udGVudENvbG9yKTsKIAogICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdp
bkxheWVyLCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkKTsKICAgICBsYXllclBhdGhXaXRoSG9sZShi
b3JkZXJMYXllciwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQpOwpAQCAtMzAxLDcgKzMwMSw3IEBA
IHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1
YWQmIG91dGVyUXVhZCkKIAogICAgIFtzZWxmIF9hdHRhY2g6cGFyZW50TGF5ZXIgbnVtTGF5ZXJz
Om51bUxheWVyc107CiAKLSAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29s
b3IoaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIENH
Q29sb3JSZWYgY29udGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPmNvbnRlbnRD
b2xvcik7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbnVtTGF5ZXJzOyArK2kpIHsK
ICAgICAgICAgQ0FTaGFwZUxheWVyICpsYXllciA9IFtfbGF5ZXJzIG9iamVjdEF0SW5kZXg6aV07
CiAgICAgICAgIGxheWVyLmZpbGxDb2xvciA9IGNvbnRlbnRDb2xvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGM1YzdlN2QxYWM3ZWQzNDJhZTc4NjhkZTVlODAxYTY1
MjM1NDY1MWQuLmYyMTkwNjBlYWE2N2ExNDQ3ZGNjMDA4MTAzY2IxZTZiZDkyZTg3ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgc3Rh
dGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICByZXR1cm4gbnNDb2xvcihjb2xvcik7CiAjZWxz
ZQotICAgIHJldHVybiBjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvcik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCAxYzdmYTRhNDg5YjM5MWFjMGQ3
Y2M4ZmVmMjFjYjBjNzkxZjM3YzEzLi5hYzBlNzcyNGZjYzExNmFkN2E5Njk5NWRkNDEyYWIyZWI5
YzZiODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAt
NTI2LDcgKzUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011
dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgICAgICAgICBOU1Jl
Y3RGaWxsKHJlY3QpOwogI2Vsc2UKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBXS0dldEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAgICAgIENHQ29udGV4dFNl
dEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRl
LCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3JXaXRoQ29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSkpOwogICAg
ICAgICAgICAgV0tSZWN0RmlsbChjZ0NvbnRleHQsIHJlY3QpOwogI2VuZGlmCiAgICAgICAgIH0K
QEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3Mo
TlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbAogICAgICAgICAgICAg
TlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250
ZXh0ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgICAgICBDR0NvbnRl
eHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjpj
eWFuLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRGaWxs
Q29sb3JXaXRoQ29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjpjeWFuKSk7CiAg
ICAgICAgICAgICBXS1JlY3RGaWxsKGNnQ29udGV4dCwgcmVjdCk7CiAjZW5kaWYKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVy
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCmluZGV4
IDVlZDg0YmM3MzgyZThmNzIwNGJjM2UxOGUyOWUxNWJkYzg3ZjQwMDYuLmY5NDQ0ZGMzNzRlMDQy
YjZkMDUwNzcwYTI2MDcyZTFlN2JlMTJjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkluZGljYXRlTGF5ZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKICAgICAvLyBCbHVlIGhpZ2hsaWdodCBjb2xvci4KICAgICBzdGF0aWMgQ29s
b3IgaGlnaGxpZ2h0Q29sb3IoMTExLjBmIC8gMjU1LjBmLCAxNjguMGYgLyAyNTUuMGYsIDIyMC4w
ZiAvIDI1NS4wZiwgMC42NmYpOwotICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dD
b2xvcihoaWdobGlnaHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgc2VsZi5iYWNr
Z3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodENvbG9yKTsKIAogICAgIHJldHVy
biBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDFhNGY3NTIx
MTY1OTk4ODRlZmQyNjQ1MzE4YTRjNWNjMTQ3YzEyODcuLjA4MDUyMjEyOWMxY2M0MGRmY2YwMDYw
MjA3YzMyNzIzZTM0Y2FiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTg4OCw3ICs4ODgsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3Zp
ZGVySWZOZWNlc3NhcnkoKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgX3ByaXZhdGUtPmJhY2tn
cm91bmRDb2xvciA9IFtbTlNDb2xvciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxIGFscGhhOjFdIHJl
dGFpbl07CiAjZWxzZQotICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yUmV0
YWluKGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7Cisg
ICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xv
cihDb2xvcjo6d2hpdGUpKTsKICNlbmRpZgogICAgIF9wcml2YXRlLT5pbmNsdWRlc0ZsYXR0ZW5l
ZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlFUzsKIApAQCAtMTE4Nyw3
ICsxMTg3LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklm
TmVjZXNzYXJ5KCkKICAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJlZmVyZW5jZXMgcmV0
YWluXTsKICAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9IE5POwogICAgIF9w
cml2YXRlLT5kcmF3c0JhY2tncm91bmQgPSBZRVM7Ci0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRD
b2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpKTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xvclJl
dGFpbihjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSkpOwogCiAgICAgV2ViRnJhbWVWaWV3ICpm
cmFtZVZpZXcgPSBuaWw7CiAgICAgZnJhbWVWaWV3ID0gW1tXZWJGcmFtZVZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6IENHUmVjdE1ha2UoMCwwLGZyYW1lLnNpemUud2lkdGgsZnJhbWUuc2l6ZS5o
ZWlnaHQpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0lt
YWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAK
aW5kZXggOTljMjNmZTg5YjBiMzIzM2JhOTEyMTcxMWQwNTQ3NWZkNDE4M2QzMi4uYmNhYjYwYjVj
ZGY5N2VmMGRiMjFhMDI1MzFhODA4YzcyMTI0YjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTU3LDYgKzU3LDYgQEAgV0tJbWFnZVJlZiBX
S0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlv
bnMgb3B0aW9ucykKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAo
KS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2lu
dCgwLCAwKSwgaW1hZ2VTaXplKTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChyZWN0
KTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VT
aXplLCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCLCByZWN0LCByZWN0KTsKKyAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCBy
ZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAK
aW5kZXggZWI4NzY3MzhkZWQ4NzI4ZDkxZDU5NzA5Zjk4Mzk5NjI1ODRmMGI2OC4uYjU0NTRmNDcy
ZjQwNjQzMDI2ZGVkZTcyZTk3MTZiODI2YjY3MWQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtNjYsNyArNjYsNyBAQCBDb250
ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBtZW51TG9jYQogCiAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgdGhlIHJvdW5k
aW5nIHN0YXJ0ZWd5IGZvciBTaGFyZWFibGVCaXRtYXAuCiAgICAgbV9jb250cm9sbGVkSW1hZ2Ug
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkp
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAgIG1fY29udHJvbGxlZEltYWdl
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSk7CisgICAgbV9jb250cm9sbGVkSW1hZ2UtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoKmltYWdlLCBJbnRQb2ludCgpKTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IGYwZTI2MzYyZTUxYjcwOTNiZWY0YjBmMTk3ZDBiM2UyOWU5ZDYyYjAuLjM5ZGY3ZmIxYWVh
OWI2MDBiMjA2MTdjMGEyYzczNmY2Yjk0NGE0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC03NDIsNyArNzQyLDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBDcmVkZW50aWFsJiBjcmUKIHN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEFyZ3VtZW50RW5jb2Rl
ciYgZW5jb2RlciwgSW1hZ2UmIGltYWdlKQogewogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2Uu
c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIEludFBvaW50KCkpOworICAgIGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRy
YXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4
IDJjY2JhYzdmYzdmMjcwOWMwZmFjMmUyMGVlYzk5ZjQwY2JhZjlmYzUuLmM3YmM2MTAxZGE0YzM0
MWYwNmY3OTg2MjI2NzhhZmFiNTNiMmVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMjc1LDcgKzI3NSw3IEBA
IHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBDR0ltYWdlUmVmCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1faXNP
cGFxdWUpCi0gICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMsIENvbG9y
KDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KHNjYWxlZExheWVyQm91bmRzLCBDb2xvcigyNTUsIDAsIDApKTsKICNlbmRpZgogCiAgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGUw
YmFiMzczZWNlYWE4MzlkZjhjMTZkMjBhMDlmNjJiNGFjZjk1ZTguLmU3ZWZmMmYwZDFiYmY4MTlk
MTkzYTUwMjZiNmEyZmY2ZGVlY2VmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC04OTQsNyArODk0LDcgQEAgc3RhdGljIFdlYkNv
cmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQog
CiAgICAgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKIAotICAgIGF1dG8gdWlC
YWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9y
OmNhY2hlZENHQ29sb3IoY29sb3IsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXSk7Cisg
ICAgYXV0byB1aUJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0
V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvcildKTsKICAgICBbX3Njcm9sbFZpZXcgc2V0
QmFja2dyb3VuZENvbG9yOnVpQmFja2dyb3VuZENvbG9yLmdldCgpXTsKIAogICAgIC8vIFVwZGF0
ZSB0aGUgaW5kaWNhdG9yIHN0eWxlIGJhc2VkIG9uIHRoZSBsaWdodG5lc3MvZGFya25lc3Mgb2Yg
dGhlIGJhY2tncm91bmQgY29sb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQppbmRleCAzNmNkYWJhM2NkZmY5NzY5NGM4NDQ2
MzAxMmVhMzk1ZTEyMDY2ZjlmLi41ZWU1NWE1ZTZkNzE0ZDgwMWFjYjViMzg4MTliODA2ZmE3YjA1
NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tJbnNwZWN0b3JIaWdo
bGlnaHRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0luc3BlY3Rvckhp
Z2hsaWdodFZpZXcubW0KQEAgLTIyOSwxMCArMjI5LDEwIEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0
aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKICAgICBG
bG9hdFF1YWQgcGFkZGluZ1F1YWQgPSBoaWdobGlnaHQucXVhZHNbb2Zmc2V0ICsgMl07CiAgICAg
RmxvYXRRdWFkIGNvbnRlbnRRdWFkID0gaGlnaGxpZ2h0LnF1YWRzW29mZnNldCArIDNdOwogCi0g
ICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQubWFyZ2lu
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGJvcmRlckxheWVyLmZpbGxDb2xvciA9
IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQu
cGFkZGluZ0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZW50TGF5ZXIuZmls
bENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICBtYXJnaW5MYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhp
Z2hsaWdodC5tYXJnaW5Db2xvcik7CisgICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVk
Q0dDb2xvcihoaWdobGlnaHQuYm9yZGVyQ29sb3IpOworICAgIHBhZGRpbmdMYXllci5maWxsQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5wYWRkaW5nQ29sb3IpOworICAgIGNvbnRlbnRM
YXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5jb250ZW50Q29sb3IpOwog
CiAgICAgbGF5ZXJQYXRoV2l0aEhvbGUobWFyZ2luTGF5ZXIsIG1hcmdpblF1YWQsIGJvcmRlclF1
YWQpOwogICAgIGxheWVyUGF0aFdpdGhIb2xlKGJvcmRlckxheWVyLCBib3JkZXJRdWFkLCBwYWRk
aW5nUXVhZCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hh
cGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogCiAgICAgW3NlbGYg
X2NyZWF0ZUxheWVyczpudW1MYXllcnNdOwogCi0gICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3Ig
PSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIENHQ29sb3JSZWYgY29udGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGln
aHQuY29udGVudENvbG9yKTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBudW1MYXll
cnM7ICsraSkgewogICAgICAgICBDQVNoYXBlTGF5ZXIgKmxheWVyID0gW19sYXllcnMgb2JqZWN0
QXRJbmRleDppXTsKICAgICAgICAgbGF5ZXIuZmlsbENvbG9yID0gY29udGVudENvbG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJv
bGxlcklPUy5tbQppbmRleCAyZjQ4ZGJiMWQ0NDFjZTc1ZDQ2NDg3NjljNmU1M2E2NmQ5OTJiYzIz
Li42ZjkxMTc2NTQwYmRlY2I1MzEwYjdiZDk2NGI2OWQ2NTZlNmIzMDNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdp
blN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uCiAgICAgICAg
ICAgICBbbV9zbmFwc2hvdFZpZXcgbGF5ZXJdLmNvbnRlbnRzID0gc25hcHNob3QtPmFzTGF5ZXJD
b250ZW50cygpOwogICAgICAgICBDb2xvciBjb3JlQ29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3Vu
ZENvbG9yKCk7CiAgICAgICAgIGlmIChjb3JlQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAg
YmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xv
cjpjYWNoZWRDR0NvbG9yKGNvcmVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQildKTsKKyAgICAg
ICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0
aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IpXSk7CiAgICAgfQogCiAgICAgW21fc25h
cHNob3RWaWV3IHNldEJhY2tncm91bmRDb2xvcjpiYWNrZ3JvdW5kQ29sb3IuZ2V0KCldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCA4ZWU2YTdhOThmMDI4ZGJjM2UwZDhjZDhhYmFlNWU0YzQxZDkwYmYx
Li5jNDNlZjNhMWUxNzUzMzc1ZTk0YmU2ZDEzMWJiYzc3MGQxZmI3OWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtNzg5LDcgKzc4OSw3IEBAIHN0YXRpYyBOU1ZhbHVlICpuc1NpemVGb3JUYXBIaWdo
bGlnaHRCb3JkZXJSYWRpdXMoV2ViQ29yZTo6SW50U2l6ZSBib3JkZXJSYWRpdXMsCiAgICAgICAg
IHJldHVybjsKIAogICAgIHsKLSAgICAgICAgUmV0YWluUHRyPFVJQ29sb3I+IGhpZ2hsaWdodFVJ
S2l0Q29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yLCBXZWJDb3JlOjpDb2xvclNw
YWNlRGV2aWNlUkdCKV0pOworICAgICAgICBSZXRhaW5QdHI8VUlDb2xvcj4gaGlnaGxpZ2h0VUlL
aXRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVk
Q0dDb2xvcihfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24uY29sb3IpXSk7CiAgICAgICAgIFtfaGln
aGxpZ2h0VmlldyBzZXRDb2xvcjpoaWdobGlnaHRVSUtpdENvbG9yLmdldCgpXTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJNYWMubW0KaW5kZXggNDBiNGY3YWUwNTE4YWI1MmNmZDdhZWU0ZjY0ODVjN2Q0OTIz
NzFmNC4uNjZjOGIwZjlkYzk5NzViZjJmNWRmNzA1YzVkZWNmYWRkY2I0OTAwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW0KQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbQogCiAg
ICAgICAgIENvbG9yIGNvcmVDb2xvciA9IHNuYXBzaG90LT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICAgICAgaWYgKGNvcmVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKGNvcmVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
ICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGNvcmVDb2xvcik7CiAgICAg
ICAgIG1fY3VycmVudFN3aXBlU25hcHNob3QgPSBzbmFwc2hvdDsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDMwM2UxYjczMzZiYTE1N2M4MGI2MzYxNzIwODNjMzk1NzEyZDUzNjMuLjhhNzYzMWUxMTI4
Mjc2M2ZhMzkzNzA5NDRhZGU0MGZiOWI5Yzk4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtNDYwLDEzICs0NjAs
MTMgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY28KICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMg
PSByZWN0c0ZvclRleHRNYXRjaGVzSW5SZWN0KGJvcmRlckluZmxhdGVkRGlydHlSZWN0KTsKIAog
ICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQuCi0gICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0
KGRpcnR5UmVjdCwgb3ZlcmxheUJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZVNSR0IpOworICAg
IGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChkaXJ0eVJlY3QsIG92ZXJsYXlCYWNrZ3JvdW5kQ29s
b3IpOwogCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93
KEZsb2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1
cywgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgc2hhZG93Q29sb3JBbHBoYSksIENvbG9yU3BhY2VT
UkdCKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUs
IENvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9h
dFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIENv
bG9yKDAuMGYsIDAuMGYsIDAuMGYsIHNoYWRvd0NvbG9yQWxwaGEpKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOwogCiAgICAgICAgIC8vIERyYXcg
d2hpdGUgZnJhbWVzIGFyb3VuZCB0aGUgaG9sZXMuCiAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6
IHJlY3RzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAppbmRleCAyNTBiNDJiOWRjN2VlZGY0YTQ4MGQwMGQzMzRiYzMxOTkxNGNlZjg1Li4wOGI4
N2QxMzRjNTg4ZjVhNjQ0MzY0MjI2NzNlZTYzMzhmMzgyOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTg0OCw3ICs4NDgsNyBAQCBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBz
aG90KCkgY29uc3QKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZFNuYXBzaG90LT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNv
cmVGcmFtZSgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9y
KSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnNuYXBzaG90LCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBGbG9hdFBvaW50KCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKCpzbmFwc2hvdCwgRmxvYXRQb2ludCgpKTsKIAogICAgIHJldHVybiBzaGFy
ZWRTbmFwc2hvdC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDU1NjA5OGFhMDIwZTQxOWQ0OGQ2YzYyOTY3MmYxYjBk
OGQxNDAxNy4uNDMyNzE0ODA3NDkzNGE3Mjc4Yjg3ZjlhYTVmNDBkZTJlNDM1ZDQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTc4MCw3
ICsxNzgwLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUo
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKIAogICAgIENvbG9yIGRvY3VtZW50
QmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwog
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IChjb3JlRnJhbWUtPnNldHRpbmdzKCkuYmFja2dy
b3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UoKSAmJiBkb2N1bWVudEJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpID8gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgOiBmcmFtZVZpZXctPmJhc2VCYWNr
Z3JvdW5kQ29sb3IoKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgYml0bWFwU2l6ZSksIGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJp
dG1hcFNpemUpLCBiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpIHsKICAgICAgICAgZG91YmxlIGRl
dmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKQEAgLTE4
MDMsNyArMTgwMyw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRT
aXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAKICAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlKSB7CiAgICAgICAgIEZs
b2F0UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNl
bGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKENvbG9yKDB4RkYsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigweEZGLCAwLCAwKSk7
CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c3Ryb2tlUmVjdChzZWxlY3Rpb25SZWN0YW5nbGUs
IDEpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IGRiYTJkMDU4Y2E1OTI1
YzEwOGQwM2Y5ZjZlZDU5ODBiYzEwYTZkNDAuLjFkNjkwOGJlOWVmYjU4ZGNmM2FkYzcwYTNhMTll
NWQwNzE0M2VlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtNzksMTEgKzc5LDExIEBAIHZv
aWQgRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBv
dmVybGF5LCBHcmFwaGljc0NvbnRlCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gdGV4dFJlY3RzSW5C
b3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IG1fdGV4dEluZGljYXRvci0+dGV4dFJlY3RzSW5Cb3Vu
ZGluZ1JlY3RDb29yZGluYXRlcygpOwogICAgIFZlY3RvcjxQYXRoPiBwYXRocyA9IFBhdGhVdGls
aXRpZXM6OnBhdGhzV2l0aFNocmlua1dyYXBwZWRSZWN0cyh0ZXh0UmVjdHNJbkJvdW5kaW5nUmVj
dENvb3JkaW5hdGVzLCBjb3JuZXJSYWRpdXMpOwogCi0gICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
aGlnaGxpZ2h0Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoaGlnaGxpZ2h0Q29sb3IoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDog
cGF0aHMpCiAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKLSAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW5kaWNhdG9ySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIG92ZXJsYXkuYm91
bmRzKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbmRpY2F0b3JJbWFnZSwgb3ZlcmxheS5i
b3VuZHMoKSk7CiB9CiAKIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3Io
RnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91bGRB
bmltYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IGI4MjNiOGU5ZjMxN2Y1ZjRkYzM0N2Y1MjJkY2M3Zjg4MWE5OTI4
ZmEuLjY3ZDYyNDU3ZTAwOWNmMDZlNjZlYjc5MDM1Nzg2OTExMGU2ZjkzNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTIyMTksNyArMjIxOSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihj
b25zdCBJbnRQb2ludCYgcG9pbnQsIEludGVyYWN0aW9uSW5mb3JtYXRpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBiaXRtYXBTaXplID0gc2NhbGVkU2l6ZS53aWR0
aCgpIDwgaW1hZ2UtPnNpemUoKS53aWR0aCgpID8gc2NhbGVkU2l6ZSA6IGltYWdlLT5zaXplKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRT
aXplKGJpdG1hcFNpemUpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNo
YXJlZEJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1h
cFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNp
emUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCmluZGV4IGVlYzY1YWI0NzU0NzIzMjJkODg2Y2RjYTc1YjNmODRlMzg0ODVk
OTIuLjBiZjM2NGMxNDM3ZTM1NjFkYTExYjJkYjZlMmFjZTFiYTFlMjI0MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFu
c2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwogCiAgICAgW3ZpZGVvTGF5ZXIgc2V0UG9z
aXRpb246Q0dQb2ludE1ha2UoMCwgMCldOwotICAgIFt2aWRlb0xheWVyIHNldEJhY2tncm91bmRD
b2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCwgV2ViQ29yZTo6
Q29sb3JTcGFjZURldmljZVJHQildOworICAgIFt2aWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xv
cjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogCiAgICAgLy8g
U2V0IGEgc2NhbGUgZmFjdG9yIGhlcmUgdG8gbWFrZSBjb252ZXJ0UmVjdDp0b0xheWVyOm5pbCB0
YWtlIHNjYWxlIGZhY3RvciBpbnRvIGFjY291bnQuIDxyZGFyOi8vcHJvYmxlbS8xODMxNjU0Mj4u
CiAgICAgLy8gVGhpcyBzY2FsZSBmYWN0b3IgaXMgaW52ZXJ0ZWQgaW4gdGhlIGhvc3RpbmcgcHJv
Y2Vzcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264991</attachid>
            <date>2015-11-06 19:23:40 -0800</date>
            <delta_ts>2015-11-06 20:02:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150967-20151106192326.patch</filename>
            <type>text/plain</type>
            <size>317102</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzMDRmYTY1MDg1ODVm
ZTI5ZjViZjEwMTIzODVlZGIxNTg4ZGY2Mi4uNDY3OTAzODA0OWI2OTJiYjBhYjY5N2I0OGNjYjAz
MTk3Zjg0MTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NCBAQAorMjAxNS0xMS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29s
b3JTcGFjZSBhcmd1bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSAtd2Via2l0LWNvbG9y
LWNvcnJlY3Rpb24gQ1NTIHByb3BlcnR5IHdhcyByZW1vdmVkIGluIHIxODgyMDIsIGFuZCBDb2xv
clNwYWNlRGV2aWNlUkdCCisgICAgICAgIGFuZCBDb2xvclNwYWNlU1JHQiBhcmUgZnVuY3Rpb25h
bGx5IGVxdWl2YWxlbnQsIHdlIGNhbiByZW1vdmUgYWxsIHRoZSBDb2xvclNwYWNlIGFyZ3VtZW50
cyBwYXNzZWQKKyAgICAgICAgdG8gZHJhd2luZyBmdW5jdGlvbnMsIGFuZCByZW1vdmUgUmVuZGVy
U3R5bGU6OmNvbG9yU3BhY2UoKSwgd2hpY2ggd2FzIGhhcmRjb2RlZCB0byByZXR1cm4gQ29sb3JT
cGFjZVNSR0IuCisgICAgICAgIAorICAgICAgICBGaWxsIGFuZCBzdHJva2UgQ29sb3JTcGFjZXMg
YXJlIGFsc28gcmVtb3ZlIGZyb20gZ3JhcGhpY3Mgc3RhdGUsIHNpbXBsaWZ5aW5nIGNvbG9yIHNh
dmUvcmVzdG9yZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoX3BsYXRmb3JtQ29s
b3IpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZp
bGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3
SW1hZ2VJbnRvQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Ny
b2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZTo6ZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRy
YXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2Fj
eVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxDb2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3U2hhZG93QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVy
QW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YmVn
aW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjplbmRTaGFkb3dM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0
cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdS
ZXBhaW50Q291bnRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldENH
RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNG
b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lU
aWxlR3JpZFRpbGU6OnNob3dCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENv
bXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRD
b21wb3NpdGlvblVuZGVybGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCb3hTaGFkb3dGb3JC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0F4aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWlu
dFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVV
cGxvYWRJY29uRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9y
Rm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50TGF5b3V0OjpsYXlP
dXRTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlv
bkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnREZWJ1Z0JvcmRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGll
cjo6U2hhZG93QXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93
cyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUt
MTEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmlldyBvbiBhcHBsZS5jb20vY29udGFjdCB3aXRoIGFsbCB0ZXh0IHNlbGVjdGVkIHNob3dz
IGEgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTBiMGFkZDAzNWQxZTE5ODljZjI0ZWYzNzdiODYw
NjZkOWE2MzgwMi4uY2MyMmQ3NjhhMjBlM2Y2YmU2MWIwMmZhMmUyMTJiYTUxODIyNTQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFy
Z3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlv
biBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZp
Y2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZh
bGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAor
ICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29s
b3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1t
OgorCiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXhlZCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTE5MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NGUxODNhNDc5ZTczOTc1MTRjMjA3MGI0NzU1YzZkYWJiYWU4NWFmZC4uNDFkZmQzZDBjYjFhNjNl
NTFkNmFmZTNiZDBiNmYzZDE3ZjkxMjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBj
YWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQg
aW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3Bh
Y2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhl
IENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9u
cywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNv
ZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9u
dDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dFZpZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJO
b2RlSGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklu
ZGljYXRlTGF5ZXIubW06CisKIDIwMTUtMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0sxXSBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcgQmxpbmsg
bGF5b3V0IHRlc3QgZWRpdGluZy9pbnB1dC90ZXh0LWlucHV0LWNvbnRyb2xsZXItbm8tZWRpdGFi
bGUtbm8tY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhMGRkZDQ3MjQ2MmU5YTE0M2RiNTUzYmFh
NWQ1ZTQzZGRhMjhhZTQuLjk4MDQ5MDAxOTg3OGNiMWNkOWUwZjM4ZGYxYmRiNjQxMWJhZWQzNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNS0xMS0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JTcGFjZSBhcmd1
bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9Db250
ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6b2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0XSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250
cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0xMS0wNSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2aWV3IG9uIGFwcGxlLmNv
bS9jb250YWN0IHdpdGggYWxsIHRleHQgc2VsZWN0ZWQgc2hvd3MgYSBtYXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4
IDQxNzE5ODc0YzdkNjEwMWUyYzg2MDJmMzQ2NjA2ODQ1NmRkMTg0MjAuLmYzNzJhMTBlMDMzZWRl
YmZjNTM1OGRmM2ZkMTI0YWYyMGNiZTU2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTM0Nyw3ICsxMzQ3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxU
eXBlIGVxICJDb2xvciIpIHsKICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZUNHQ29sb3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6OmNh
Y2hlZENHQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsIC49ICIsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpIjsKKyAg
ICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
V2ViQ29yZTo6bnNDb2xvcigkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCmluZGV4IGJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0Yzc3MjYw
NjAyM2IuLjIzMWEzMmQ2YWE1MGIzNTFjNWEzYTA5NjI4ZGI2OWE1MDcwOTRlNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFn
ZSgpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBpbWFnZVJlY3QpOworICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3QpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
PiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAgICBm
aWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RGOjptb3ZlKHRleHR1cmUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYTcxZThiNWI5YjExMTJl
NWEzZGJkM2Q2ODVlZWZjZTQwNGUzZjg3Yi4uNmU0YjMxZWYzMzY4YjZlYmEzYTU5NzhhZGJkZDk2
ZGM4MmUxMWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE1NzAsNyArMTU3MCw2IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5v
ZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2Rl
LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCA9IG5v
ZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIApAQCAtMTU4MywxNyArMTU4MiwxNCBAQCB2b2lk
IENhcmV0QmFzZTo6cGFpbnRDYXJldChOb2RlKiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAgYXV0byBlbGVtZW50QkdDb2xvciA9IGVs
ZW1lbnRTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwogICAgICAgICAgICAgaWYgKGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChlbGVtZW50QkdD
b2xvciwgcm9vdEVkaXRhYmxlQkdDb2xvcikpIHsKICAgICAgICAgICAgICAgICBjYXJldENvbG9y
ID0gcm9vdEVkaXRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwotICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UgPSByb290RWRpdGFibGVTdHlsZS5jb2xv
clNwYWNlKCk7CiAgICAgICAgICAgICAgICAgc2V0VG9Sb290RWRpdGFibGVFbGVtZW50ID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRh
YmxlRWxlbWVudCkgeworICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRhYmxlRWxlbWVudCkKICAg
ICAgICAgICAgIGNhcmV0Q29sb3IgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAgICAgIGNvbG9yU3Bh
Y2UgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IsIGNvbG9y
U3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQzZDQ2
NWZiN2QwNDdkMzgyYTU1NWI4MjU2ZmI0ODAzMjgxZjNkOGUuLjc1ZGI3MWQ0MDE1OWQ5NDhhZmE4
MThjYWQ1NmU1N2Y4NDIxNzgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgTlNCdW5kbGUgKl93
ZWJLaXRCdW5kbGUoKQogCiBzdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENv
bG9yIGNvbG9yKQogewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0
ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBX
ZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKIH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0
Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAppbmRleCA1NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExLi5j
MGZiNDhiZmE0YmY2MWFmOGUzM2ZjNjcwNDlkMTFiZDZiZGRhN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAg
ICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJ
bnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGIxOWQ5
ZTBkYzcwM2Q1NTUzZjczMjYyMTMzYzIwYzk0ZjYyOGM3OWYuLmQyYmRkMGJjMjUyNDE1YTg2YzI4
NzE0OGI1Y2IxMmJlMzBhNjY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE1NCw3ICsxMTU0LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkg
ewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0gdHJ1ZTsKLSAgICAg
ICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNw
YXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lT
aGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgfQogICAgIGlm
IChzdGF0ZSgpLmdsb2JhbEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAt
MTMxOSw5ICsxMzE5LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hh
ZG93KCkKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkgewogICAgICAgICBmbG9hdCB3aWR0
aCA9IHN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9
IHN0YXRlKCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpOwotICAgICAgICBjLT5zZXRMZWdhY3lTaGFk
b3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5zaGFkb3dCbHVyLCBzdGF0ZSgp
LnNoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYy0+c2V0TGVnYWN5
U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkuc2hhZG93Qmx1ciwgc3Rh
dGUoKS5zaGFkb3dDb2xvcik7CiAgICAgfSBlbHNlCi0gICAgICAgIGMtPnNldExlZ2FjeVNoYWRv
dyhGbG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJh
bnNwYXJlbnQpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxkRHJh
d1NoYWRvd3MoKSBjb25zdApAQCAtMTQ0OCwxNyArMTQ0OCwxNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCwg
Y29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERz
dFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKKyAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBp
ZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAg
ICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAg
IGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1
MzYsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2Fu
dmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENv
bnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKLSAg
ICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOworICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52
YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0
ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xv
YmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBk
aWREcmF3KGRzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE2MTIsNyArMTYxMiw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8s
IGNvbnN0IEZsb2F0UmVjCiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAg
Yy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8tPnZpZGVvV2lkdGgoKSwg
dmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8t
PnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsK
ICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpAQCAtMTcyNiwyMSArMTcyNiwyMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7CiAg
ICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwogICAgIGMtPnJlc3RvcmUoKTsKLSAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0Lmxv
Y2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoYnVmZmVyLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
KTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBv
cCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKTsK
IApAQCAtMTc2Niw3ICsxNzY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAgICBidWZm
ZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9u
KCkueCgpLCAtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0LndpZHRoKCksIGNyb3BwZWRP
ZmZzZXQuaGVpZ2h0KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3Rp
dmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250
ZXh0KCksIHN0eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAogICAgIGNvbXBvc2l0
ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkBAIC0yNDQwLDggKzI0NDAsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICAgICAgICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICAgICAgICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgICAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgICAgICAgICAgYy0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAgICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZs
YXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7CkBAIC0yNDUwLDEyICsyNDQ5LDEyIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgICAgIHNoYWRvd09mZnNldCArPSBvZmZzZXQ7CiAK
LSAgICAgICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICAgICAgYy0+c2V0TGVn
YWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGMtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24gKyBvZmZz
ZXQsIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQpA
QCAtMjQ2Nyw5ICsyNDY2LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdU
ZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGZpbGwpCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAppbmRleCA4NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4NDE1OTQ1M2Q5Li5k
Njk5OWJmM2MzZmUwNmVjMjU3ZDA3MDVjYjkzMDA2ZDM3YzExODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0zNjcsNyArMzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZShUJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGQzNThhMjE3OTU4ODM5NmJmYjcwYTVmZDdjZWI1
MjgwMjRmZTM5MTkuLmI2ODNhMmVhNjk5ZWJhY2E4YTM2NTIxNzM2ZTdhMDg1MmQ3ZjFjMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0
IEFQSS4KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNv
bG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAg
IENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jbXlrYS0+YywgbV9jbXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+
YSk7CiAjZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NteWthLT5yZ2Jh
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jbXlrYS0+cmdiYSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29u
dGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215a2Et
PmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwogI2Vs
c2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY215a2EtPnJnYmEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jbXlrYS0+cmdi
YSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2
NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNjZmYwN2U1YmNjLi4zMzBjOTUwNGIwNzY5ZDk0
MDcyMzE3ZGRkMjk5M2QyOThiOWY5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE3Niw3ICsz
MTc2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJh
d0ltYWdlSW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGkKIAogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBidWYtPmNvbnRleHQo
KS5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICByZXR1cm4gYnVmLT5j
b3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3NDA4MDQw
NzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLjBlY2Y4M2Q5Njk3ZjY2ZDJhZmEzN2JmYmE3ZDFkOWE2
ODY0ZjdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmUKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7Ci0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgQ29sb3JTcGFjZVNSR0IpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgIGZvciAoYXV0byByZWN0IDogbV9yZWdp
b24tPnJlY3RzKCkpIHsKICAgICAKICAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhkaXJ0eVJl
Y3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEyMjk2NGE3OWVkYmJjNGViYTlk
OTcxM2FlYzUzODU3YjdmNjZlODMuLmI2ZjY5YjU5YTJjODBlMWFiYjM3Y2U1MWI5NzExNDYzMDY4
N2NiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM3MzYsNyArMzczNiw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tn
cm91bmRDb2xvcigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3NDksNyArMzc0OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJCiAg
ICAgaWYgKGJhci5pc0N1c3RvbVNjcm9sbGJhcigpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBJbnRSZWN0IHRvRmlsbCA9IGJhci5mcmFtZVJlY3QoKTsKICAgICAgICAgdG9G
aWxsLmludGVyc2VjdChyZWN0KTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAg
IFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKGNvbnRleHQsIGJhciwgcmVjdCk7CkBAIC00MDE3
LDcgKzQwMTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFJl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGZpbGxXaXRoUmVkKQotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCkp
OwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdTaXplQWRqdXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDI2Mzc1MTE0NDYwNzU4YWE2NzRh
OGIyMjIzN2NhNWFhMTNkYzllYmUuLjAzNDY4OWFjYjdmOTA5MWQ5MDM3MWQ3MzBkZjkxOWIxNzY0
ZGRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMzNyw3ICszMzcs
NyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1l
JiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VS
ZWN0cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAg
IC8vIEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1
KSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lk
dGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwpAQCAtMzU2
LDggKzM1Niw4IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJp
ZXMoRnJhbWUmIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyCiAgICAgICAgICAgICBpbnQgYm91
bmRhcnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOwogI2VuZGlmCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0xpbmUoSW50UG9pbnQoMCwgYm91bmRhcnlMaW5lWSksIEludFBvaW50KHBhZ2VXaWR0aCwgYm91
bmRhcnlMaW5lWSkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxNWEwYmIx
ZDBjMjRkZDMxZWNjMjkzZDQ3ODE2ZDI1YjRiY2FjODMyLi5kZGVkZTY1MWQ4ZDg0NTE3MWM2YjIw
MGU2ZGM2NjFhYjQ3OGY5OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0g
bV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQ
b2ludCA9IHBhcmVudCgpLT53aW5kb3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdD
UG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBpY29uR0NQb2lu
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgKaW5kZXggZTU0YzQ2YWExY2ZmMjY0NzQ5Yzc5ODQ0OGY1YjRjMDdjYzM5OWYzOS4uY2Fl
NTI5OTQzMmNmOGViODQ4YmMzMDAyZTdhNTU1ZTI5NDVkNTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0
UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9p
ZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQorICAgIHN0YXRpYyB2b2lkIGRlZmF1
bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDcyZjJh
NjM2ZGExOGMwMmI3YzZlY2E5NGY0MDY2NWE4MDBiMmRhN2YuLjQ2ZDllZTY3MmQzNzdmNTgyM2Rj
MTM3ZmYzMjNiNGEzNTlmY2Q1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSk7CiB9CiAKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVj
dChTY3JvbGxiYXImIHNjcm9sbGJhcikKQEAgLTI4MSwxMSArMjgxLDExIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAog
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKICAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgp
KQogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3Zlcmhh
bmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlKTsKICAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDM5MDYzNDJm
NTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQuLjE5MzRiMzU2NTMyNTFlMzgzZjQ4ODU5
YzExNzIwN2U2MmNmODk0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIC8vIERyYXcgYSBnZW5l
cmljIFdpcmVsZXNzIFBsYXliYWNrIGljb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5jcHAKaW5kZXggOGZjY2RjNWZmNTk4M2ExOGFkYzFkYTdlMTM2ODc4
ZTY4ZWQwNzU2OC4uMzE0ZWVkNTMxNTNhMTcwOTdmYTE5NmU5M2RjNzcwMjQ3MWY0ZWVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5h
bWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJh
Y2tTcmNTaXplKDMyLCAyNC4wMTYpOwogICAgIGZpdENvbnRleHRUb0JveChjb250ZXh0LCB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSwgcmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDAwNTMzYWYzOTdjNzg1OTVk
YmU0MjZiNzc5ODRiNjY0NTIxMmEzYmMuLjNlYTFiNWY4OTQ3OWMxNDQ4ZDIwZDhkNjI1NDllNjU3
MjMxYjhjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTYwNywxMyArNjA3LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0
QW5pbWF0aW9uKCkKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKLSAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKCFtX2NhY2hlZEltYWdlKSB7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LAogICAgICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2Ug
ZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhp
cyByZWxheW91dC4KICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAg
ICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgIH0K
IAogICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIG1fY2FjaGVkSW1h
Z2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDQwZmM3NGEzOTJkNGQ2Njg5
NzI5ODBiZmMxY2FlNDA5YmUwYzYzZWIuLjg5MWU4YzQyM2NjNTZiYWVkYzQ5Zjg5MzU5N2FkZjFj
YTg1NDJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlk
ZTsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKQEAgLTIw
MSwxMyArMjAxLDEzIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVy
YXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoV0lOR0RJKQogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpOwogI2VuZGlmCiAKICAgICBzaXplX3QgY3VycmVudEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IGQxZDRlNzI3NzAwZDllMjhjMGNmZGIzNTRlYmI5YzljYWY5ZDE4NzUuLmNm
MmY4MGJhOTQ3YjZlM2M1ZWFkNjRlYjg1ZjU3ZWQ0YjIyY2EyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGludCBkaWZmZXJl
bmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CiB1aW50MTZfdCBmYXN0RGl2
aWRlQnkyNTUodWludDE2X3QpOwogCiAjaWYgVVNFKENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiBp
bmxpbmUgUkdCQTo6UkdCQSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNDM2ODJiMGQ3
ZWU0NzI0OGUyNjRlNWU4YTZiMmQ0NWJlYTc4MjY4NC4uNTdlM2YxYTRmMTkwNmEyNjY5ZmZmZmRk
MjAxNTU5Y2IzZWI1Y2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIENvbXBvcwogCiAgICAgaWYgKHRhcmdldFNpemUgIT0gaW1h
Z2VTaXplKQogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh0YXJnZXRTaXplLndpZHRo
KCkgLyBpbWFnZVNpemUud2lkdGgoKSwgdGFyZ2V0U2l6ZS5oZWlnaHQoKSAvIGltYWdlU2l6ZS5o
ZWlnaHQoKSkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRQb2ludCgpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQo
KSk7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9
CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAgZHJh
d0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVm
ZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRl
eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9y
U3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaAppbmRleCA4MDI4MzQ0ODBiZWIzZjUwZTg4OGQwYTM5MzM4N2M1ZWI3YWZlZTg2
Li44YWViYmM1NzM3MTQ2MGNiN2RiMzM0MDg0ZjE0NGRkZGVkNDczMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAog
ICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0lt
YWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAppbmRleCBiMTAyM2IwYWQ5ZTUxMjg5YjUwYjUyYjU1YWZhODc0
ODA0MGRmOGMxLi4wYzAzOGQ5OTYyZjU0MWEwZTRlMjVhMGQ2ODJlZWFmMTNmYjM0YzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
QEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGUgPSAwOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGY1
Y2ViNzA1MzNhNjNlNThkNDdlOWEyYjlhNjVjYzdlNDUxY2EyN2UuLjM3MjY5MWE5YjJiNzVmZTkz
MWQ1MWZmY2RhMGIxYTQzOTAxOTRkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEdyYWRpZW50
SW1hZ2U6On5HcmFkaWVudEltYWdlKCkKIHsKIH0KIAotdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK3ZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50
IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXpl
IGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHMKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAK
ICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0
LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRl
cm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRl
eCAwNTgyOGY1YTg0OTY4OTk1NGRjYzM4YjY1NzQwMTc2YTU5YjM0ZDlkLi45MjUwOWZiMWVjNTJj
NGY3MzIxNDg3ZTQ4YjhlZmM2ODIzYzVlMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAg
ICAgR3JhZGllbnRJbWFnZShQYXNzUmVmUHRyPEdyYWRpZW50PiwgY29uc3QgRmxvYXRTaXplJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDIzMDlmNWRkNWRkNTZmNjhmMWUxZWU0NmU1Y2UxN2E0NzE2Njc3MWYu
LjM4ODg5YzQ3NDA1ZTMyNzExMmY0Zjk2MTk5Y2QzYWVmMzI4YThkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MTQyLDIwICsxNDIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFp
c2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29s
b3IsIENvbG9yU3BhY2UgZWxsaXBzZUNvbG9yU3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNhdmUoKTsKIAotICAgIHNldFN0cm9r
ZUNvbG9yKHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICBzZXRGaWxsQ29sb3Io
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHNldFN0cm9rZUNvbG9yKHNoYWRv
d0NvbG9yKTsKKyAgICBzZXRGaWxsQ29sb3Ioc2hhZG93Q29sb3IpOwogCiAgICAgZHJhd0VsbGlw
c2UoRmxvYXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIDEsIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogCi0gICAgc2V0U3Ryb2tlQ29sb3IoZWxsaXBzZUNvbG9yLCBlbGxpcHNlQ29s
b3JTcGFjZSk7Ci0gICAgc2V0RmlsbENvbG9yKGVsbGlwc2VDb2xvciwgZWxsaXBzZUNvbG9yU3Bh
Y2UpOworICAgIHNldFN0cm9rZUNvbG9yKGVsbGlwc2VDb2xvcik7CisgICAgc2V0RmlsbENvbG9y
KGVsbGlwc2VDb2xvcik7CiAKICAgICBkcmF3RWxsaXBzZShyZWN0KTsgIAogCkBAIC0xNzQsMzQg
KzE3NCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwot
ICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
bV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29s
b3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID0g
dHJ1ZTsKICNlbmRpZgotICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Is
IGNvbG9yU3BhY2UpOworICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQpAQCAtMjA5LDE2ICsy
MDYsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBtX3N0YXRl
LnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7
CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dD
b2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBjbGVhclBsYXRmb3JtU2hhZG93
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNv
bnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBm
bG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUu
c2hhZG93T2Zmc2V0OwogICAgIGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3Ig
PSBtX3N0YXRlLnNoYWRvd0NvbG9yOwotICAgIGNvbG9yU3BhY2UgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2U7CiAKICAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CkBAIC0yNDEsMTMgKzIzNiwx
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogfQog
I2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKLSAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQpAQCAtMzc4LDEyICsz
NzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMo
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0
aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkp
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qo
ZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
LnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
RmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5vcmlnaW5hbFNpemUoKSk7CkBA
IC0zOTEsMjkgKzM4NSwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdAogICAgIEZsb2F0UmVj
dCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAK
LSAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
RGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
LSAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJh
d1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCkBAIC00MjEsMzIgKzQxNSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAKICAgICBp
ZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRyYXdJbWFnZShp
bWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5kcmF3
VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5sb2dp
Y2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UubG9naWNhbFNpemUoKSks
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIEZsb2F0
UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNl
LCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxv
Z2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVy
cG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5k
cmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC01MDksMjkgKzUwMywy
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHBy
ZXZpb3VzT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7Ci0gICAgZmlsbFJlY3QocmVjdCwgY29sb3IsIHN0eWxl
Q29sb3JTcGFjZSk7CisgICAgZmlsbFJlY3QocmVjdCwgY29sb3IpOwogICAgIHNldENvbXBvc2l0
ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAg
IGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKLSAgICAgICAgcGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QocmVjdCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZpbGxSZWN0KHJlY3Qu
cmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9k
ZSk7CisgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29tcG9zaXRlT3BlcmF0
aW9uKCksIGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ2LDE1ICs1NDAs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIAogICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxl
ID0gZmlsbFJ1bGUoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAg
ICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKICAgICAK
ICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgIHNldEZpbGxDb2xvcihjb2xvciwg
Y29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBh
dGgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29s
b3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9s
ZEZpbGxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiOWRjMDIzMDlmNmMzNjYxZmIyNmQ2
NzJjMjVmM2UzMjY5MTk1NDM0Li5iZTIwYTczNzlmZDg0MjkwMDFjYzFjODY1OTM3YTMxNGZlZjYz
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHRfaAog
I2RlZmluZSBHcmFwaGljc0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCkBAIC0xNDgsMTAgKzE0Nyw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAg
IFdpbmRSdWxlIGZpbGxSdWxlIHsgUlVMRV9OT05aRVJPIH07CiAKLSAgICBDb2xvclNwYWNlIHN0
cm9rZUNvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0gICAgQ29sb3JTcGFjZSBm
aWxsQ29sb3JTcGFjZSB7IENvbG9yU3BhY2VEZXZpY2VSR0IgfTsKLSAgICBDb2xvclNwYWNlIHNo
YWRvd0NvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0KICAgICBmbG9hdCBhbHBo
YSB7IDEgfTsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBv
c2l0ZVNvdXJjZU92ZXIgfTsKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9y
bWFsIH07CkBAIC0yMTQsOSArMjA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Ryb2tlU3R5
bGUoU3Ryb2tlU3R5bGUpOwogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KLSAgICBDb2xvclNw
YWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9y
U3BhY2U7IH0KIAogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAg
ICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybi5nZXQoKTsgfQpAQCAtMjI3LDkgKzIyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVs
ZTsgfQogICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
UnVsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBDb2xvciYpOwogICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yU3BhY2U7IH0KIAogICAgIHZvaWQgc2V0RmlsbFBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQpAQCAtMjYxLDcgKzI1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICB2b2lkIGRyYXdQYXRoKGNv
bnN0IFBhdGgmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBjbGlw
VG9OYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgYnVmZmVyU2l6ZSk7CiAgICAgCkBAIC0yODgsNyArMjgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHZv
aWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKTsKICAgICB2b2lkIGRyYXdDb252ZXhQ
b2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFu
dGlhbGlhcyA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29u
c3QgUGF0aCYpOwpAQCAtMjk4LDI5ICsyOTEsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKTsK
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7Ci0gICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgdm9pZCBm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFn
ZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0g
ICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAor
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJ
bWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7IH0KQEAgLTM3NiwxMyArMzY5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgYm9vbCBpc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDAp
ICYmIHN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICAvLyBMZWdhY3kgc2hh
ZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRv
dy4KICAgICAvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLSAg
ICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0TGVnYWN5U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyU2hhZG93KCk7Ci0gICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxv
YXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGdldFNoYWRvdyhGbG9h
dFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CiAKICAgICBib29sIGhhc1Zpc2libGVTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0
YXRlLnNoYWRvd0NvbG9yLmFscGhhKCk7IH0KICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OyB9CkBAIC00NjMsOCArNDU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZyYW1lQ29udHJv
bChjb25zdCBJbnRSZWN0JiByZWN0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGF0ZSk7CiAg
ICAgdm9pZCBkcmF3Rm9jdXNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpOwogICAgIHZvaWQgcGFp
bnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwotICAgIHZv
aWQgZHJhd0JpdG1hcChTaGFyZWRCaXRtYXAqLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpOwotICAgIHZvaWQgZHJh
d0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0bWFwKiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdElu
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFNpemUmIG9yaWdTb3VyY2VT
aXplKTsKKyAgICB2b2lkIGRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiwgY29uc3QgSW50UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CisgICAgdm9pZCBkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRtYXAqLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6ZSk7CiAgICAg
dm9pZCBkcmF3SWNvbihISUNPTiBpY29uLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBVSU5UIGZs
YWdzKTsKICAgICB2b2lkIGRyYXdSb3VuZENvcm5lcihib29sIG5ld0NsaXAsIFJFQ1QgY2xpcFJl
Y3QsIFJFQ1QgcmVjdFdpbiwgSERDIGRjLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2Vsc2UK
QEAgLTUyOSwxNyArNTIyLDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBsYXRmb3JtVGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKIAotICAgIHZvaWQgc2V0UGxhdGZv
cm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1TdHJv
a2VTdHlsZShTdHJva2VTdHlsZSk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVz
cyhmbG9hdCk7CiAKLSAgICB2b2lkIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYp
OwogCiAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sKTsKICAgICB2b2lk
IHNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9y
bUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCi0gICAg
dm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIGNsZWFyUGxh
dGZvcm1TaGFkb3coKTsKIAogICAgIHZvaWQgc2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CkBAIC01
NTUsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wm
IHNob3VsZEFudGlhbGlhcywgQ29sb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRlM2Q2MTUyZjY1OGFhMDkwOWVlNzBiMjY5NzAzYmM1Mjhl
NjBjZDMuLjgxZmJiMGYxZTdhY2JmMmYwOGVlZTc1NDI4YjY1OTMxMTdhNmIwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc5LDIxICs3OSwyMSBA
QCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsK
ICAgICBpZiAoIWNvbG9yLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb21w
b3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY3R4dC5jb21wb3NpdGVPcGVyYXRpb24o
KTsKICAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0
LmZpbGxSZWN0KGRzdFJlY3QsIGNvbG9yLCBzdHlsZUNvbG9yU3BhY2UpOworICAgIGN0eHQuZmls
bFJlY3QoZHN0UmVjdCwgY29sb3IpOwogICAgIGN0eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xp
ZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFko
KGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgp
IC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbAogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0
KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9u
KG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0
aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RS
ZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRp
b24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNj
YWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICAgICAgZHJhdyhjdHh0LCB0b1JlY3QsIGZy
b21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnRUaWxlUmVjdC5zaGlmdFhFZGdlVG8ob25lVGlsZVJlY3QueCgp
KTsKICAgICAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbAogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFu
c2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwog
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsK
LSAgICBkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qs
IGJsZW5kTW9kZSk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxl
bmRNb2RlKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGFydEFuaW1hdGlvbihEb05vdENh
dGNoVXApOwpAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKIAog
Ly8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5j
ZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCiB2b2lkIElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgc29saWRDb2xv
cigpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0
eHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwgb3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvCiAgICAgICAg
IHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAog
ICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0
LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkc3RS
ZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
YXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wLCBkc3RSZWN0KTsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggYTViMWU0YWUzZGNmZTk3NjE2MzBhMzBhNTY0NTI4OGU2
ZDE0NjVjYS4uNDczNzliM2U5MmU5ZTY3NWI3NTkyMzUyMDg1NTZjMzAwYjk4N2RhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
ZGVmaW5lIEltYWdlX2gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTE1NCw3ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1h
Z2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlV2l0aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBvcmlnaW5hbEltYWdlLCBDb2xvclNwYWNl
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTcxLDcgKzE2OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKICAgICBGbG9hdFJlY3QgYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1w
bGluZyhjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNjYWxlZFNpemUp
IGNvbnN0OwpAQCAtMTg2LDE2ICsxODQsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElt
YWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgdm9pZCBmaWxsV2l0
aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAKLSAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQg
Zm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0K
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgLCBCbGVu
ZE1vZGUpOwotICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pID0gMDsKKyAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUs
IFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5n
IHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCmluZGV4IDM2NjAzYjc5ZjhkMGE3ZTkyNzA3YzI1YzQ2ZDI0ZmQzZDllNTA1
MzAuLjM2MGNlODY1OTUxOTdlZmEyMzJjYTkwZTY4NzIzNGVmYTBjNWEwYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTM0LDggKzEz
NCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAK
ICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBkMGJhZDMwZTkyNzJkZmM4MWFjNDc2ZjM2ODUxNjYw
YjNjMGRmMjg1Li5hMGY2NDM0ZTg5YTg4OGNiNjk3MDI2YzU2Yzg4YzhlNzczNjZlMDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZs
b2F0U2l6ZSYKICAgICBzZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi12b2lkIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICNpZiBV
U0UoTkVXX1RIRU1FKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICNlbmRp
ZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCB0cnVlKTsK
QEAgLTcyLDE0ICs3MiwxMyBAQCB2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogICAgIHBsYXRmb3Jt
VGhlbWUoKS0+ZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVj
dCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxl
IHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJh
d1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShzcmNS
ZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGF0dGVyblRyYW5zZm9ybSk7CiAgICAgVU5VU0VEX1BB
UkFNKHBoYXNlKTsKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0eWxlQ29sb3JTcGFjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwogICAgIFVOVVNF
RF9QQVJBTShjb21wb3NpdGVPcCk7CiAgICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDZmNGVjZDliNzJiNmMzZjM3Nzc1ZWMzYjkxZGUzMWMwY2Zi
N2E1Y2IuLmQ5ZjBhYzFmMzE2Yzg3NjNmYWI3NzgzNGRlMTI5MjI5NmIzZThhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CmluZGV4IDg1YWVlZWZmNzJlZTI3MGU3NjAwODBkYzYwZWViMmIwNWM4MTc0YTMuLjhhY2JkYTI4
N2FjMjNhZGI4ZmQ1MWRiYjllNWIzMzU1ZDcxMzBlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04NSwxNSArODUsMTQgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9h
dFNpemUmIGxheWVyU2l6ZSkKKyAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxv
YXRTaXplJiBsYXllclNpemUpCiAgICAgewotICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYm
IG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0
Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKKyAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBtX2xhc3RXYXNJbnNldCA9
IGZhbHNlOwogICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CiAgICAgICAgIG1fbGFzdENv
bG9yID0gY29sb3I7Ci0gICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAg
ICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKICAgICAgICAgbV9sYXN0UmFkaWkg
PSByYWRpaTsKICAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gbGF5ZXJTaXplOwpAQCAtMTAxLDE2
ICsxMDAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKLSAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0
ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9s
YXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5k
cyAmJiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFk
aWkpCisgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAm
JiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSB0
cnVlOwogICAgICAgICBtX2xhc3RJbnNldEJvdW5kcyA9IGJvdW5kczsKICAgICAgICAgbV9sYXN0
UmFkaXVzID0gcmFkaXVzOwogICAgICAgICBtX2xhc3RDb2xvciA9IGNvbG9yOwotICAgICAgICBt
X2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKICAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9
IHNoYWRvd1JlY3Q7CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAKQEAgLTE0Niw3ICsx
NDQsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwogICAgIEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOwogICAgIENvbG9yIG1fbGFzdENvbG9y
OwotICAgIENvbG9yU3BhY2UgbV9sYXN0Q29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9sYXN0
UmFkaXVzOwogICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CiAgICAgRmxvYXRTaXplIG1fbGFzdExh
eWVyU2l6ZTsKQEAgLTE3MSw5ICsxNjgsOCBAQCBzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lS
YWRpdXMoZmxvYXQgcmFkaXVzKQogfQogI2VuZGlmCiAKLVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK1NoYWRvd0JsdXI6OlNoYWRvd0Js
dXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgOiBtX2NvbG9yKGNvbG9yKQotICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJSYWRpdXMocmFkaXVzKQogICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQogICAgICwgbV9sYXllckltYWdlKDApCkBAIC0xODQsNyArMTgwLDYgQEAgU2hhZG93
Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQsIGNvbnN0IEMKIAogU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBtX2NvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQot
ICAgICwgbV9jb2xvclNwYWNlKHN0YXRlLnNoYWRvd0NvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJS
YWRpdXMoc3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKICAgICAsIG1fb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKICAgICAsIG1fbGF5ZXJJbWFnZSgwKQpAQCAtMjA2LDEyICsy
MDEsMTEgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cigpCiB7CiB9CiAKLXZvaWQgU2hhZG93Qmx1
cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJv
b2wgaWdub3JlVHJhbnNmb3JtcykKK3ZvaWQgU2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCiB7CiAgICAgbV9ibHVyUmFkaXVzID0g
cmFkaXVzOwogICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fY29sb3IgPSBjb2xvcjsKLSAg
ICBtX2NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgPSBpZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwpA
QCAtNDczLDcgKzQ2Nyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0J1ZmZlcihHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAoRmxvYXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJTaXplKSk7CiAgICAgfQogICAgIGdy
YXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qo
bV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKG1fY29sb3IpOwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CkBAIC01NzIsNyArNTY2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGMKICAgICBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdC5tb3ZlKG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVy
IGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgYm9vbCBy
ZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1
ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNp
emUpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCku
c2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJS
ZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsK
ICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CkBAIC01ODAsNyArNTc0LDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGMKICAgICAgICAgLy8gQWRkIGEgcGl4ZWwgdG8gYXZv
aWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQuCiAgICAgICAgIHNoYWRvd0NvbnRl
eHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9s
YXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQudHJhbnNsYXRl
KG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICBpZiAoc2hhZG93
ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBzaGFkb3dDb250ZXh0LmZpbGxS
ZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOwogICAgICAgICBlbHNlIHsKQEAgLTYxMCw3ICs2MDQs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdC5t
b3ZlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4g
dGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3Vy
IG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhv
bGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9s
ZVJlY3QsIGhvbGVSZWN0LnJhZGlpKCkpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0
KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dD
b250ZXh0KTsKQEAgLTYyNyw3ICs2MjEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAogICAgICAgICBzaGFkb3dD
b250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgIHNoYWRv
d0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICAgICAgYmx1clNoYWRvd0J1ZmZlcihleHBh
bmRlZEludFNpemUobV9sYXllclNpemUpKTsKQEAgLTY4MSwxNCArNjc1LDE0IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlSG9sZSA9IEZsb2F0UmVjdChl
ZGdlU2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkg
LSAyICogZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VT
aXplLmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZl
ciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wg
cmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRl
Qm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGJvb2wgcmVkcmF3
TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xl
LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8v
IERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7
CiAgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKICAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAg
ICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsK
QEAgLTcyNCw3ICs3MTgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRl
eHQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3Bh
Y2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQpAQCAtNzQ1LDE0ICs3MzksMTQgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICBGbG9hdFJlY3QgdGVtcGxhdGVTaGFkb3cgPSBG
bG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6
ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAt
IDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2Ny
YXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMK
LSAgICBib29sIHJlZHJhd05lZWRlZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFs
dWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywg
c2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRl
ZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgdGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7
CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIHRo
ZSBJbWFnZUJ1ZmZlci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0g
bV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc2hhZG93U3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKIAogICAgICAgICBzaGFkb3dDb250
ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBs
YXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAKICAgICAgICAgaWYgKHNoYWRv
d2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxs
UmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CkBAIC03OTgsMTQgKzc5MiwxNCBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZQogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93SW50ZXJpb3Ioc2hhZG93Qm91bmRz
LngoKSArIGxlZnRTbGljZSwgc2hhZG93Qm91bmRzLnkoKSArIHRvcFNsaWNlLCBjZW50ZXJXaWR0
aCwgY2VudGVySGVpZ2h0KTsKICAgICAgICAgaWYgKCFzaGFkb3dJbnRlcmlvci5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFw
aGljc0NvbnRleHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
X2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihtX2NvbG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRv
dygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHNoYWRvd0ludGVyaW9y
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKG1fY29sb3IpOwogICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAg
Ly8gTm90ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0
aW5nIGEgSW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKQEAgLTgxNiw0NiArODEwLDQ2IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNpZGUuCiAgICAgRmxvYXRSZWN0IHRpbGVS
ZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVtcGxhdGVTaWRlTGVuZ3RoLCB0b3BTbGlj
ZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJSZWN0LndpZHRoKCksIHRvcFNsaWNlKTsK
LSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAg
ICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAgdGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRv
bVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRlclJlY3QubWF4WSgpKTsKICAgICBkZXN0
UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRp
bGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1h
Z2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBMZWZ0IHNpZGUuCiAgICAgdGlsZVJl
Y3QgPSBGbG9hdFJlY3QoMCwgdG9wU2xpY2UsIGxlZnRTbGljZSwgdGVtcGxhdGVTaWRlTGVuZ3Ro
KTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRTbGljZSwg
Y2VudGVyUmVjdC55KCksIGxlZnRTbGljZSwgY2VudGVyUmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFJp
Z2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0
U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwogICAgIGRlc3RSZWN0
LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAgIGRlc3RSZWN0LnNldFdpZHRoKHJpZ2h0U2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwg
MCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVy
UmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGlj
ZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBn
cmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0
aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxv
YXRSZWN0KHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwg
dG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCByaWdodFNsaWNlLCB0b3BTbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJv
dHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXpl
LndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGlj
ZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNl
bnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0Lm1heFkoKSwgcmlnaHRTbGljZSwgYm90dG9tU2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qo
MCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9t
U2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNs
aWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIH0KIAogCkBAIC04
NzgsNyArODcyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKQogICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKICAgICBzaGFkb3dDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VJbik7Ci0gICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICBzaGFkb3dDb250ZXh0LmZpbGxSZWN0KEZsb2F0
UmVjdCgwLCAwLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7
CiB9CiAKQEAgLTg5NCw3ICs4ODgsNyBAQCBHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJl
Z2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogICAgIC8v
IFdlIHJlc2V0IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1ZXMgaGVyZSwgYmVjYXVzZSB0aGUgYnVm
ZmVyIHdpbGwgbm8gbG9uZ2VyIGNvbnRhaW4KICAgICAvLyBkYXRhIGZyb20gYW55IHByZXZpb3Vz
IHJlY3RhbmdsZSBvciBpbnNldCBzaGFkb3dzIGRyYXduIHZpYSB0aGUgdGlsaW5nIHBhdGguCiAg
ICAgYXV0byYgc2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpOwotICAg
IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkoKSwgbV9sYXllclNpemUpOworICAgIHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93
VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIEludFJlY3QoKSwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIG1fbGF5ZXJJbWFnZSA9IHNjcmF0Y2hC
dWZmZXIuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwpAQCAtOTE1
LDcgKzkwOSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNv
bnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChy
b3VuZGVkSW50UG9pbnQobV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV9sYXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qocm91
bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSk7CiAK
ICAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRv
bigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKaW5kZXggMjA1MGFiOWNkZmFmMzlmN2M2NjBhMTk3
ZmE1MmViYjBiNTI0OWM1ZC4uZWQxNjZjZmM0MmNkMDRjOTI3MDQzY2FmYTJjNWE3ZjM1ZGU0ZGYy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApA
QCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmx1clNoYWRvdwogICAgIH07CiAK
LSAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUm
IG9mZnNldCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0
IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3Im
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgU2hh
ZG93Qmx1cigpOwogCi0gICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIGJvb2wgaWdub3JlVHJhbnNm
b3JtcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9v
bCBpZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVU
cmFuc2Zvcm1zOyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KQEAgLTEwNCw3ICsxMDQsNiBAQCBw
cml2YXRlOgogICAgIFNoYWRvd1R5cGUgbV90eXBlOwogCiAgICAgQ29sb3IgbV9jb2xvcjsKLSAg
ICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9ibHVyUmFkaXVzOwog
ICAgIEZsb2F0U2l6ZSBtX29mZnNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTAz
YzRmYjAyYjljNGVhZGMwMGYzNzU0ZjUzNTA0M2ZlNDY5ZTdmYS4uNTViM2Q0N2U0NjYxYjllZjVi
MzY5N2M1MTkzNjYxODhhZGNhMTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC02NzAs
NyArNjcwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVlBsYXllckxheWVyKCkKIAogICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQ
bGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0UGxheWVy
Om1fYXZQbGF5ZXIuZ2V0KCldOwotICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9y
OmNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAg
W21fdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihDb2xvcjo6Ymxh
Y2spXTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fdmlkZW9MYXllciBzZXROYW1lOkAiTWVkaWFQ
bGF5ZXJQcml2YXRlIEFWUGxheWVyTGF5ZXIiXTsKICNlbmRpZgpAQCAtMjM0Nyw3ICsyMzQ3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRl
b091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRw
dXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CiAK
ICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwg
dHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBj
cmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRl
b091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0
cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCA4MDdlZTEzOTUyZjFkM2NhY2IwZjUwYWY5NTE0NjA2YTg1MTFjODY5Li5hZDc5ZTk1MzU3NDlj
Yzc4OTNhNWU4N2JmN2RkN2Y2MjBiYTQ0YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTk4Niw4ICs5
ODYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8g
dGhpcyBiZWNhdXNlIHRoZSBjYWxsIHRvCi0gICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0
aENvbG9yU3BhY2UoKSBiZWxvdyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCisg
ICAgICAgIC8vIEZJWE1FOiBwcm9iYWJseSBkb24ndCBuZWVkIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlIGF0IGFsbCBub3cuCiAgICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKaW5kZXggZjE4MDlmY2YyZGRiZTEwNTMwYThhOGVkZjkw
OGRlNGQ5MTI2YjM1Zi4uNjhiOTU2Mjg0MDVhZTBlMjE2ZTM0MTRmM2ExOGI5MTc2NGI0NGZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNw
cApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50
Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAKICAgICBpbnQg
cmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KHBsYXRm
b3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5ZXIoKS5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAgICAgIFBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxh
dGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3IobV9jb250cm9sbGVyLnRp
bGVEZWJ1Z0JvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCBwbGF0Zm9ybUNBTGF5ZXIsIHJlcGFpbnRDb3VudCwgY2FjaGVkQ0dDb2xvcihtX2NvbnRy
b2xsZXIudGlsZURlYnVnQm9yZGVyQ29sb3IoKSkpOwogCiAgICAgaWYgKG1fY29udHJvbGxlci5z
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsKICAgICAgICAgRmxvYXRSZWN0
IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS54KCksIHBsYXRmb3JtQ0FM
YXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLndp
ZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IDcyMTNiNWI1NzEwYWNm
NjFlZTExODdmM2I5NDU3YWE0MWEyZjY1M2EuLjQzY2Q5ZTQ3ZGQ1OTNmNDk1ZGVlOTdhNWE1MjUw
NDA1ZTVhMmYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRy
YXdSZXBhaW50Q291bnRlcnMoQ0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29uCiAgICAgaWYgKGJv
cmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ0FDRkxheWVyR2V0Qm9y
ZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQotICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBj
YWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCkpOwog
CiAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBvd25l
cigpLCBkcmF3Q291bnQsIGJhY2tncm91bmRDb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CmluZGV4IGY1ZTNkZTBlNTM0YjAxNmVkZjYxYjQwY2U0ZmExYTUyOTVkNGE3NzQuLmNkNTdlZTQ4
NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiAgICAgY2hlY2tGb3JT
b2xpZENvbG9yKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKK3ZvaWQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAogICAgIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0
aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29u
c3QgRmxvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0LCBzb2xpZENvbG9y
KCksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29u
dGV4dCwgZHN0LCBzb2xpZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGE0MmI1NGQzODJjNDkyYjUwNDg2MTkz
MzAwMGQzZmQyMTM0ZDg4NGIuLmJmNmFmYTI0YWUwOTZlZGIzYWU3YmJkMWM1MGYxYzlkNjRjYjc3
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
IHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRoKCp0aGlzKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTcyNCwxMyArNzI0LDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBtX2RhdGEtPnRy
YW5zbGF0ZSh4LCB5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmls
bENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYpCiB7CiAgICAgLy8gQ2Fpcm8gY29udGV4
dHMgY2FuJ3QgaG9sZCBzZXBhcmF0ZSBmaWxsIGFuZCBzdHJva2UgY29sb3JzCiAgICAgLy8gc28g
d2Ugc2V0IHRoZW0ganVzdCBiZWZvcmUgd2UgYWN0dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3Im
LCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29s
b3IoY29uc3QgQ29sb3ImKQogewogICAgIC8vIENhaXJvIGNvbnRleHRzIGNhbid0IGhvbGQgc2Vw
YXJhdGUgZmlsbCBhbmQgc3Ryb2tlIGNvbG9ycwogICAgIC8vIHNvIHdlIHNldCB0aGVtIGp1c3Qg
YmVmb3JlIHdlIGFjdHVhbGx5IGZpbGwgb3Igc3Ryb2tlCkBAIC03OTgsNyArNzk4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSkKICAgICBtX2RhdGEtPnNldENUTSh0cmFuc2Zvcm0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29s
b3IgY29uc3QmLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3Jt
U2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0JikKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDE5LDcgKzEw
MTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHIp
CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBy
ZWN0LCBjb25zCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhv
bGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSB8fCAhY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDU5LDcgKzEwNTks
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsK
ICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5
IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAz
ZTUyMTNmODZkYTY1MTJkZTYxZGZhNWJmOWY2NWFlNzFjODJlM2RmLi4yNTZkMWNjODMxM2JhOGIw
NzE4N2M3NTBiMWM5NjQ2NzJkZjhlMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1
LDE5ICsxNjUsMTkgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbWFza1JlY3QpIGNvbnMKICAgICBjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tS
ZWN0KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3Rp
bmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7
CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0g
JmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5h
dGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwg
c3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRlc3RpbmF0aW9u
Q29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVz
ZUxvd1F1YWxpdHlTY2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxl
bmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUpCiB7CiAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwg
c3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFj
ZSwgb3AsIGRlc3RSZWN0KTsKKyAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3QpOwog
fQogCiB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qg
VmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCBlNGM2M2EzNDZlMjJkZmIz
NGVjZWJiNzcyNjNiNzRlMzc3N2IwZTk0Li4xMWU1N2I0YmQxYzA4NWVjNDE4NzA5ZGU0N2VmYTgy
YjkyNzdhMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQogewotICAgIGNvbnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1v
ZGUpOworICAgIGNvbnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAgICAg
aWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0
bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcAppbmRleCA1OWE4Y2RiZGU2ZGE1MjllYzUxMWNjYzIyMGM0NzI4MDgxMDMy
YmNjLi5iZjZmMjg2OTM2ZmZhY2ExNDU1ZjRhNTg2MGU3MTBhNjM5ZDVjMDUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cApAQCAtMjAzLDcgKzIwMyw3IEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6
Z2V0Q0dJbWFnZUFycmF5KCkKICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CiAKLXZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RD
YXRjaFVwKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0g
ICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBz
dHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9y
KGN0eHQsIGRlc3RSZWN0LCBzb2xpZENvbG9yKCksIGNvbXBvc2l0ZU9wKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
CiAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UuZ2V0KCksIGltYWdlU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc2NhbGVkU3Jj
UmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGN0eHQuZHJh
d05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNS
ZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1h
Z2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4
IDhhN2ZlYmVkNTQwODM3ZWQxMjMwMGQ3YjI4YjM3YmFiNzg2ZmZmMzUuLjlhNDhhMzMxZGYzMDgz
NzBhM2NlMzM1ODZhYzVlMjVmYzhhZGRlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC05OSwyNiArOTksMjYgQEAgQ29sb3I6OkNv
bG9yKENHQ29sb3JSZWYgY29sb3IpCiAgICAgbV92YWxpZCA9IHRydWU7CiB9CiAKLXN0YXRpYyBD
R0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQorc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogewogICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKICAgICBjb2xvci5nZXRSR0JBKGNvbXBv
bmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwot
ICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwg
Y29tcG9uZW50cyk7CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYo
KSwgY29tcG9uZW50cyk7CiB9CiAKLXRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3Rh
dGljIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitDR0NvbG9y
UmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHN3aXRjaCAoY29s
b3IucmdiKCkpIHsKICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDogewotICAgICAgICBzdGF0
aWMgQ0dDb2xvclJlZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29s
b3JTcGFjZSk7CisgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9
IGxlYWtDR0NvbG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsK
ICAgICB9CiAgICAgY2FzZSBDb2xvcjo6YmxhY2s6IHsKLSAgICAgICAgc3RhdGljIENHQ29sb3JS
ZWYgYmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAg
ICBzdGF0aWMgQ0dDb2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAg
ICAgICAgIHJldHVybiBibGFja0NHQ29sb3I7CiAgICAgfQogICAgIGNhc2UgQ29sb3I6OndoaXRl
OiB7Ci0gICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9y
KGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgd2hpdGVDR0Nv
bG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwog
ICAgIH0KICAgICB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdGVtcGxhdGU8Q29sb3JTcGFjZSBjb2xv
clNwYWNlPiBzdGF0aWMgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2wK
ICAgICAgICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9yc1tpXS5nZXQoKTsKICAgICB9CiAKLSAg
ICBDR0NvbG9yUmVmIG5ld0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7
CisgICAgQ0dDb2xvclJlZiBuZXdDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogCiAgICAg
c3RhdGljIHNpemVfdCBjdXJzb3I7CiAgICAgY2FjaGVkUkdCQVZhbHVlc1tjdXJzb3JdID0gY29s
b3IucmdiKCk7CkBAIC0xNDUsMjAgKzE0NSw2IEBAIHRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JT
cGFjZT4gc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sCiAg
ICAgcmV0dXJuIG5ld0NHQ29sb3I7CiB9CiAKLUNHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVy
biBjYWNoZWRDR0NvbG9yPENvbG9yU3BhY2VEZXZpY2VSR0I+KGNvbG9yKTsKLSAgICBjYXNlIENv
bG9yU3BhY2VTUkdCOgotICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xvclNwYWNlU1JH
Qj4oY29sb3IpOwotICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJu
IGNhY2hlZENHQ29sb3I8Q29sb3JTcGFjZUxpbmVhclJHQj4oY29sb3IpOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29s
b3JTcGFjZURldmljZVJHQik7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNE
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHAKaW5kZXggOTRhYWFhOTMwNWIzZTBkNDZiZWI1OWQ4MjE2OTgxOGU2MTA0MmE3
My4uMzdhNzI4OTkwOTM4MTdjYjg5YTMxMWUwYzA5N2MzZmU0MmIwYjM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpw
YWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwog
ICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNn
SW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgY2FudmFzUmVjdCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBjYW52YXNS
ZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDM2MGUz
ODdjYzgzMWE2MzA3NzY0MzNiZjYxNWNjOGJjYzgzZThkNWYuLjJhYzk0YjJkNTEyN2ZkMDhlZjVm
ZmMyOWRiMTMxNzAwZmNjYjU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTYzLDE2ICs2Mywx
NyBAQCB1c2luZyBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENH
RmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0g
ICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Io
Y29sb3IsIGNvbG9yU3BhY2UpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3Io
Y29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvcikpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1N0
cm9rZUNvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENHU3Ryb2tlQ29sb3IoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBDR0NvbnRleHRTZXRTdHJv
a2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNl
KSk7CisgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVk
Q0dDb2xvcihjb2xvcikpOwogfQogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBz
b29uLgogQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQogewogICAgIHN0
YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZp
Y2VSR0IoKTsKQEAgLTgxLDkgKzgyLDYgQEAgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9y
U3BhY2VSZWYoKQogCiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQogewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vs
c2UKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAg
Ly8gT3V0LW9mLWRhdGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNw
YWNlU1JHQi4gVGhpcyBsb2dpYyBhdm9pZHMKQEAgLTkzLDcgKzkxLDYgQEAgQ0dDb2xvclNwYWNl
UmVmIHNSR0JDb2xvclNwYWNlUmVmKCkKICAgICAgICAgc1JHQlNwYWNlID0gZGV2aWNlUkdCQ29s
b3JTcGFjZVJlZigpOwogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gc1JHQlNw
YWNlOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikgfHwg
UExBVEZPUk0oSU9TKQpAQCAtMTI3LDggKzEyNCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUluaXQoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKICAgICBzZXRQYWludGluZ0Rpc2Fi
bGVkKCFjZ0NvbnRleHQpOwogICAgIGlmIChjZ0NvbnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgICAgICBz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Ci0gICAg
ICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCkpOworICAgICAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBzZXRQbGF0
Zm9ybVN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIG1fc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShD
R0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwogICAg
IH0KQEAgLTE2Myw3ICsxNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRm
b3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJ
ZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CiAKQEAgLTI1NCw5ICsyNTEsNiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0
ciwgY29uc3QgRmxvYXRTaQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBh
ZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0
LCAxLCAtMSk7CiAKLSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIGltYWdlID0g
SW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSk7
Ci0KICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dCwgYWRqdXN0ZWREZXN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogfQpAQCAtMjgwLDcgKzI3NCw3IEBA
IHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIGlmICghcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzIwLDkgKzMxNCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIHN1
YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwg
dGlsZVJlY3QpKTsKICAgICB9CiAKLSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAg
IHN1YkltYWdlID0gSW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2Uoc3ViSW1hZ2UuZ2V0KCksIHN0
eWxlQ29sb3JTcGFjZSk7Ci0KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2Vl
biB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16
ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1Bh
dHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVS
ZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgp
KTsKQEAgLTM1MCw3ICszNDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICBp
ZiAoIXBhdHRlcm4pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQ
YXR0ZXJuKDApKTsKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNw
YWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKG51bGxwdHIpKTsKIAogICAg
ICAgICBDR0Zsb2F0IGFscGhhID0gMTsKICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgp
LCBwYXR0ZXJuLmdldCgpLCAmYWxwaGEpKTsKQEAgLTM5NCw3ICszODUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJU
aGlja25lc3MpCiAgICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3RzIHRvIHNpbXVs
YXRlIHRoZSBzdHJva2Ugb2YgYSBib3JkZXIuCiAgICAgICAgIENvbG9yIG9sZEZpbGxDb2xvciA9
IGZpbGxDb2xvcigpOwogICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkp
Ci0gICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xvcigpLCBzdHJv
a2VDb2xvclNwYWNlKCkpOworICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Ry
b2tlQ29sb3IoKSk7CiAgICAgICAgIENHUmVjdCByZWN0c1s0XSA9IHsKICAgICAgICAgICAgIEZs
b2F0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNz
KSwKICAgICAgICAgICAgIEZsb2F0UmVjdChyZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBib3JkZXJU
aGlja25lc3MsIHJlY3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKQEAgLTQwMyw3ICszOTQs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgICAgIH07CiAgICAgICAgIENHQ29udGV4dEZp
bGxSZWN0cyhjb250ZXh0LCByZWN0cywgNCk7CiAgICAgICAgIGlmIChvbGRGaWxsQ29sb3IgIT0g
c3Ryb2tlQ29sb3IoKSkKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZp
bGxDb2xvciwgZmlsbENvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihj
b250ZXh0LCBvbGRGaWxsQ29sb3IpOwogICAgIH0KIH0KIApAQCAtNDMyLDcgKzQyMyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50CiAgICAgaWYgKGRyYXdzRGFzaGVkTGluZSkgewogICAgICAg
ICAvLyBGaWd1cmUgb3V0IGVuZCBwb2ludHMgdG8gZW5zdXJlIHdlIGFsd2F5cyBwYWludCBjb3Ju
ZXJzLgogICAgICAgICBjb3JuZXJXaWR0aCA9IHN0cm9rZVN0eWxlID09IERvdHRlZFN0cm9rZSA/
IHRoaWNrbmVzcyA6IHN0ZDo6bWluKDIgKiB0aGlja25lc3MsIHN0ZDo6bWF4KHRoaWNrbmVzcywg
c3Ryb2tlV2lkdGggLyAzKSk7Ci0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9r
ZUNvbG9yKCksIHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKGNv
bnRleHQsIHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBpZiAoaXNWZXJ0aWNhbExpbmUpIHsKICAg
ICAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIEZsb2F0UmVjdChwb2ludDEueCgp
LCBwb2ludDEueSgpLCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRGaWxsUmVjdChjb250ZXh0LCBGbG9hdFJlY3QocG9pbnQxLngoKSwgcG9pbnQyLnkoKSAt
IGNvcm5lcldpZHRoLCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CkBAIC02MDcsNyArNTk4LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIGlmICghcGxh
dGZvcm1QYXR0ZXJuKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBwYXR0ZXJuU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4o
MCkpOworICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybihudWxscHRyKSk7CiAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yU3BhY2UoY2dDb250ZXh0LCBwYXR0ZXJuU3BhY2UuZ2V0KCkpOwogCiAgICAgY29u
c3QgQ0dGbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOwpAQCAtODM3LDE3ICs4MjgsMTYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBDR0Nv
bnRleHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3Io
KTsKLSAgICBDb2xvclNwYWNlIG9sZENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwogCi0g
ICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3Bh
Y2UpCi0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yLCBjb2xvclNwYWNlKTsK
KyAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yKQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihj
b250ZXh0LCBjb2xvcik7CiAKICAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRl
ZENvbnRleHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAg
IENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBkcmF3T3duU2hhZG93KTsK
QEAgLTg2NCwyMSArODU0LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgaWYgKGRy
YXdPd25TaGFkb3cpCiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCi0gICAgaWYgKG9s
ZEZpbGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAg
ICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7
CisgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvcikKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3Io
Y29udGV4dCwgb2xkRmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwotICAgIENvbG9yU3BhY2Ug
b2xkQ29sb3JTcGFjZSA9IGZpbGxDb2xvclNwYWNlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9y
ICE9IGNvbG9yIHx8IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dG
aWxsQ29sb3IoY29udGV4dCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgIGlmIChvbGRGaWxsQ29s
b3IgIT0gY29sb3IpCisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKIAog
ICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0Js
dXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9u
J3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgQ0dDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQsIGRyYXdPd25TaGFkb3cpOwpAQCAtOTA2LDExICs4OTUsMTEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnMKICAgICBpZiAoZHJhd093blNoYWRvdykKICAgICAg
ICAgc3RhdGVTYXZlci5yZXN0b3JlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9y
IHx8IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3Io
Y29udGV4dCwgb2xkRmlsbENvbG9yLCBvbGRDb2xvclNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENv
bG9yICE9IGNvbG9yKQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29s
b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9s
ZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtOTI3LDEwICs5MTYsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogCiAgICAgV2lu
ZFJ1bGUgb2xkRmlsbFJ1bGUgPSBmaWxsUnVsZSgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9
IGZpbGxDb2xvcigpOwotICAgIENvbG9yU3BhY2Ugb2xkRmlsbENvbG9yU3BhY2UgPSBmaWxsQ29s
b3JTcGFjZSgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgc2V0
RmlsbENvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRGaWxsQ29sb3IoY29sb3IpOwog
CiAgICAgLy8gZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2Vz
IG9mIHJlY3QgYXJlIGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBj
YXN0IGFyb3VuZCBpbnNpZGUgdGhlIGhvbGUuCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwpAQCAtOTQ5LDcgKzkzNyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEZsb2F0CiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIAogICAgIHNldEZp
bGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENvbG9yLCBvbGRG
aWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvcik7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNTks
NyArMTA0Nyw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVl
ZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQs
IGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5OSw3ICsxMDg3LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zm
c2V0LCBmbG9hdCBibHVyLCBjb24KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAg
Q0dDb250ZXh0U2V0U2hhZG93KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCks
IGJsdXJSYWRpdXMpOwogICAgIGVsc2UKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENv
bG9yKGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNh
Y2hlZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJS
YWRpdXMsIGNhY2hlZENHQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsZWFyUGxhdGZvcm1TaGFkb3coKQpAQCAtMTM5NiwxMiArMTM4NCwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRGFzaEFycmF5JgogICAgIH0KIAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJv
a2VDb2xvcikKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGxvY2Fs
U3Ryb2tlQ29sb3IsIHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9y
KHBsYXRmb3JtQ29udGV4dCgpLCBsb2NhbFN0cm9rZUNvbG9yKTsKIAogICAgIENHQ29udGV4dEZp
bGxSZWN0cyhwbGF0Zm9ybUNvbnRleHQoKSwgZGFzaEJvdW5kcy5kYXRhKCksIGRhc2hCb3VuZHMu
c2l6ZSgpKTsKIAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAg
ICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigpLCBmaWxs
Q29sb3JTcGFjZSgpKTsKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCks
IGZpbGxDb2xvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3Qo
Y29uc3QgVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKQEAgLTE1MDEsMTEgKzE0
ODksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2Rl
KFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgc2V0Q0dTdHJva2VDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwg
Y29sb3IsIGNvbG9yU3BhY2UpOworICAgIHNldENHU3Ryb2tlQ29sb3IocGxhdGZvcm1Db250ZXh0
KCksIGNvbG9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tl
VGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKQEAgLTE1MTUsMTEgKzE1MDMsMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVz
cykKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCksIHN0ZDo6bWF4
KHRoaWNrbmVzcywgMC5mKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAppbmRleCAzMjIzMjAyYjcyNzg4MjcyZjE2ODAzMTY0YjYzYjE3YmRkYTI5YTBjLi43
ZDMwZmFiM2RjOTI2OWU5Y2I3OTZhNDUxMTRiZGQxYzAyYWQxZjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAt
MjI4LDExICsyMjgsOCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFn
ZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVy
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxp
dHlTY2FsZSk7Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAm
Y29udGV4dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7Ci0KICAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAm
Y29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOyAvLyBEcmF3aW5nIGlu
dG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgpAQCAtMjQxLDEwICsyMzgsMTAg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1Jl
Y3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2Fs
ZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGNvbG9yU3BhY2UsIGRlc3RSZWN0
LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0
LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEltYWdlQnVmZmVy
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3Jj
UmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAtMjUy
LDE0ICsyNDksMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKICAgICBpZiAoIWNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0g
JmNvbnRleHQoKSB8fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAg
ICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3Rv
cmUpKSAvLyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5Lgot
ICAgICAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2Us
IG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXJpbmcgPSBjb3B5SW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAgICAgICAgIGltYWdlRm9yUmVuZGVy
aW5nLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJs
ZW5kTW9kZSk7CisgICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJu
KGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVz
dGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgICAgICAgICAgY29weS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggNzVh
YmJmOGNkMTY0Y2Q1Mzk1OGQ0ZmQ2NmNhMTNhOTQxODY5ODc0OS4uZjNkZDAyMmE5MDVhNjJlNGMx
MTgzOWFkZDRjYTZmMGIwOTM2MWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKQEAgLTQ1LDM1ICs0NSwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZTo6aW1hZ2VXaXRoQ29sb3JT
cGFjZShDR0ltYWdlUmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsK
LSAgICBDR0NvbG9yU3BhY2VSZWYgb3JpZ2luYWxDb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9y
U3BhY2Uob3JpZ2luYWxJbWFnZSk7Ci0KLSAgICAvLyBJZiB0aGUgaW1hZ2UgYWxyZWFkeSBoYXMg
YSAobm9uLWRldmljZSkgY29sb3Igc3BhY2UsIHdlIGRvbid0IHdhbnQgdG8KLSAgICAvLyBvdmVy
cmlkZSBpdCwgc28gcmV0dXJuLgotICAgIGlmICghb3JpZ2luYWxDb2xvclNwYWNlIHx8ICFDRkVx
dWFsKG9yaWdpbmFsQ29sb3JTcGFjZSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpKSkKLSAgICAg
ICAgcmV0dXJuIG9yaWdpbmFsSW1hZ2U7Ci0KLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAg
ICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbEltYWdl
OwotICAgIGNhc2UgQ29sb3JTcGFjZVNSR0I6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1h
Z2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSwgc1JHQkNvbG9yU3BhY2VS
ZWYoKSkpOwotICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbEltYWdlLCBsaW5l
YXJSR0JDb2xvclNwYWNlUmVmKCkpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gb3JpZ2luYWxJbWFnZTsKLX0KLQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3R4dC5kcmF3UGF0dGVy
bigqdGhpcywgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHls
ZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LmRyYXdQYXR0
ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXgg
ODJhM2E1YjRkZWE4ZjRmNjYyNWEyZWFmNTQ3M2QzYWVkZWM2NGU1YS4uYmZjZWEyODg5ODc3OTk2
YzBlNjhkMjdhOTY4YTcxNzM1YjZkNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTE3OSw3ICsx
NzksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBQREZEb2N1
bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAg
ICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
MSw3ICsxOTEsNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZl
cikKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsKKyAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBkc3RSZWN0KTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwg
ZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAppbmRleCA3ZmZkNjAzYjZmMWJmMzkwMzE1NTRjYjBkMDdlMzNmNWY5MmNkOGJmLi45
YTRjMWU5ZTBiNTFlMzlkNTBhNDRiMTliOTE1NTViZDliMDU2OTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBA
IC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBi
b29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FzY2FkZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENhc2NhZGVDb2NvYS5tbQppbmRleCA4MzljYTAzZDkzNmY1MmQ2MzQwNWIyNWVlOTlm
ODk4MDZjZWJkNzIzLi5kMWRjYmQ2NmVlYWVjMzZlZGExZjc4MmE1MjRjMGJjNTA1YjVkMmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fz
Y2FkZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EubW0KQEAgLTMzMyw5ICszMzMsNyBAQCB2b2lkIEZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgRwogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1
cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3Bh
Y2U7Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQuZmlsbENvbG9yU3Bh
Y2UoKTsKLSAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIEFmZmluZVRyYW5zZm9y
bSBjb250ZXh0Q1RNID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBmbG9hdCBzeW50aGV0aWNCb2xk
T2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CkBAIC0zNTIsMTQgKzM1MCwxNCBA
QCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7
CiAgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7CiAgICAgICAg
IENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3Jl
ZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9y
LmFscGhhKCkgLyAyNTUpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxs
Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihz
aGFkb3dGaWxsQ29sb3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSAr
IHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmlu
ZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZs
aXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9
IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2Vz
KEZsb2F0UG9pbnQoc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBn
bHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBo
QnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgaWYgKHN5bnRoZXRp
Y0JvbGRPZmZzZXQpCiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9p
bnQoc2hhZG93VGV4dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQs
IGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIGlmICh1c2VM
ZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM3MCw3ICszNjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29u
c3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgp
ICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlw
aEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVm
ZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFk
b3cpCi0gICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwg
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldFNoYWRv
dyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogI2lmICFQTEFURk9S
TShJT1MpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
Y3BwCmluZGV4IGVkZWY1NzgwMTgyZmNjODBmZTU3OTUzOTEyZDRhZDk1YTM3NmEwM2MuLmZmOTEx
MWM0YjYwMzI1NDZkNDc0M2MxYzRlZjA3ODViM2M0NjE0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNzUsOCAr
NzUsOCBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFp
bWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIyKQogICAgICAgICByZXR1cm47CiAKLSAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkp
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAg
ICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VC
dWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCA3
OGZmZGNlNGQ1OTFhZDZhODEyMmZlNjM4ODIzOTNmZjU1MWFlNzcyLi42ODYwZDdkZGZlNmEwMTVi
ZWY5ODQ2MGM4YmNiN2ViY2M0ZmU1NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTE0OSw3
ICsxNDksNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAK
ICAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIGlm
IChpbkJ1ZmZlcikKLSAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50
UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkpOwogICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRVbm11bHRpcGxpZWRJbWFn
ZURhdGEoaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggOWExNTZmODk0ZGYxNDNlZThl
Mzg1ODY4NzhkMDcwOTIyOGUxYmZlOS4uODg4ODQ2YWNjZWQwMjIyYjhlY2I4OTQ3MTRlMmJlMTZi
NGUxZDEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCB2b2lkIEZFQ29t
cG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsK
ICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjogewogICAgICAgICAv
LyBBcHBsaWVzIG9ubHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAgLTI5NCwyMSArMjk0
LDIxIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAg
IEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBhYnNv
bHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9
IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAg
ICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjItPmFic29s
dXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0
aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3Rp
bmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCwgc291cmNlMlJlY3QpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqaW1hZ2VCdWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBD
b21wb3NpdGVTb3VyY2VJbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09N
UE9TSVRFX09QRVJBVE9SX09VVDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5h
dGlvbk91dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlRGVz
dGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJB
VE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4y
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAgICAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkp
KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0
ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNp
emUoKSksIENvbXBvc2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0
ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBD
b21wb3NpdGVYT1IpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEcm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEcm9wU2hhZG93LmNwcAppbmRleCBkY2U1YWFlMjVmMjk3YWE4OGI2ZjhhODNjYmMyZGE4
NGIwMGNlOTZlLi5jMGU4OTQyNDE1OTFmNzM0M2ZjNzZlNGVlOTQ2NWQzNDNiODJhYWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRkVEcm9wU2hhZG93LmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5j
bHVkZSAiRkVHYXVzc2lhbkJsdXIuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKQEAgLTkzLDEwICs5MiwxMCBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgcmVzdWx0Q29u
dGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRBbHBo
YShtX3NoYWRvd09wYWNpdHkpOwotICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpz
b3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQp
OworICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgZHJhd2lu
Z1JlZ2lvbldpdGhPZmZzZXQpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEoMSk7CiAKLSAg
ICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0Nv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3co
Ymx1clJhZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yKTsKIAogICAgIC8vIFRPRE86IERpcmVj
dCBwaXhlbCBhY2Nlc3MgdG8gSW1hZ2VCdWZmZXIgd291bGQgYXZvaWQgY29weWluZyB0aGUgSW1h
Z2VEYXRhLgogICAgIEludFJlY3Qgc2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+
aW50ZXJuYWxTaXplKCkpOwpAQCAtMTA3LDEwICsxMDYsMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShQ
cmVtdWx0aXBsaWVkLCBzcmNQaXhlbEFycmF5LmdldCgpLCBzaGFkb3dBcmVhLnNpemUoKSwgc2hh
ZG93QXJlYSwgSW50UG9pbnQoKSwgSW1hZ2VCdWZmZXI6OkJhY2tpbmdTdG9yZUNvb3JkaW5hdGVT
eXN0ZW0pOwogCiAgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlU291cmNlSW4pOwotICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvcik7
CiAgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGlu
YXRpb25PdmVyKTsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVy
KCpzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3
aW5nUmVnaW9uKTsKIH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKaW5kZXgg
N2VkNDI5ZjAzMzk2ZTgyYzg5NmI1MzY3MDIyNmQwMThhYjIzNzJhNC4uZThkYThkMzFmNDU1YmQ5
ZWRkOGNiMDlhM2NiZmUxOWM3YTQxMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZv
aWQgRkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQ29sb3IgY29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29sb3IoKS5yZ2Io
KSwgZmxvb2RPcGFjaXR5KCkpOwotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZmlsbFJlY3Qo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBjb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxs
UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSks
IGNvbG9yKTsKIH0KIAogdm9pZCBGRUZsb29kOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4IGEwMmQ5ZmRh
ZTI0NWE1ZmVkYzUxOWM4MzAwYzAzMzFkMGQ3MjFiZTcuLjMyY2YyNTRkNWVjYWQzMTQ2M2JhNTNk
ZGE0Mjg2NTk5NDZjNDU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZFTWVy
Z2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoaSk7
CiAgICAgICAgIGlmIChJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
KQotICAgICAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0
ZVBhaW50UmVjdCgpKSk7CisgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKaW5kZXggMThhMmU3OTFkNTgzYmFjZGNkMWM3
YmU2ZDA1N2Y1MGI5YjUxOTFjYS4uZGRlZjU4NzkxY2ZhMjQ4NThjYWZhNmI0MjAzYzBjZDI0NWNl
MWQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU9mZnNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU9mZnNldC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBGRU9mZnNldDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdS
ZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZpbHRlciYg
ZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5h
cHBseUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGljYWxTY2FsZShtX2R5
KSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb24pOwogfQog
CiB2b2lkIEZFT2Zmc2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCBhMTg3Yjc0ZmZmZmRkNWE5NzQ0ZGM2
OTdjY2M1ZWVhYzIwZWRmMzAyLi5jNzA0NGEwMjcxYTRiZTJlNmQ5YmNhYTJlMDBlZTYyNWU3MmRj
OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQogCiAgICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGls
ZUltYWdlLT5jb250ZXh0KCk7CiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4
RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwotICAgIHRpbGVJ
bWFnZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CisgICAgdGlsZUltYWdlQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5s
b2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRpbGVJbWFnZS0+Y29weUlt
YWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAKaW5kZXggMWUzYjkxYTIyNDQ4ZjE4Y2FhNDE2ZmIxMDZhMjg0MGEwMDJhMzFiYi4uNzI0
ODkzYmFhMDU4MjFmMWJlNTlhZTc2ZjVlNmQxZWNmZDUwOGFlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAK
QEAgLTU4LDggKzU4LDggQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChGbG9hdFBvaW50
KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0ZXJDb250ZXh0LmZpbGxS
ZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEludFBvaW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgIGZpbHRlckNv
bnRleHQuZmlsbFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2spOworICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKaW5kZXggZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2NTlkNmNkMzMwMGViYi4uNjFi
YjFiOGJjOTI1Mzc2Njc1MWY2NjNhNDQ3Yzk1NWMxZmZlMTlmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNv
dXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIEludFBvaW50KCkp
OwogfQogCiB2b2lkIFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDBlMDU1ZTRiZmYyYjQz
MmU5YTBiZmRmMDFjMDJkY2NhNDIzODg1Y2QuLjBlY2Q2YzI2YmZmNzc4YzFkNzI3NTA4ZDczMWM3
MzNmZGZiOWI2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gcmVpbnRlcnBy
ZXRfY2FzdDxJbWFnZSo+KGdzdEltYWdlLT5pbWFnZSgpLmdldCgpKSkKLSAgICAgICAgY29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlU1JHQiwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3Qo
KSwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVj
dCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKICNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IGJlMzUwNzYwOTMw
Y2FhYmNjMWNmZWYzYmEyNGMyMTQyOTA3MTA2OWUuLjIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2
ZDIyNDliODFkOWQ3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9JY29uSU9TLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0
UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkhpZ2gpOwotICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFn
ZS5nZXQoKSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCA2OTgy
ODU0ODY5MWEwNTg4MTllZWM3NmY0Mjk3ZWY1NmMyNjhkYzY3Li4wNjQyNDNiNGI5YmYxY2Y3YTQ4
YzAwOTliMjBkYWM3OThiNWIxYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX2lt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtX3JlY3QsIG1fcmVjdCk7CisgICAgICAgIGNvbnRl
eHQuZHJhd0ltYWdlKG1faW1hZ2UsIG1fcmVjdCwgbV9yZWN0KTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCBmZTI4MTUxMjFhNTcw
NDQ2NzYxMGE0NTA2NjRkMTk0OGQ4MTNmOGZkLi5kYjg2Zjk1MTgyYTAwMjA1ZWMxYWNhZmI0ODAy
ZWQyMTRlNjcwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKG1fc3VwcG9ydHNBbHBo
YSkgewogICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
Q29weSk7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgbV9zaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBt
X3NpemUpLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRl
eCBhMjdhMmVmNmZlY2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1MjU2MWFmY2E2Li45MmNmNzJlMDIzOTNj
YTU4YmQ3YTA3MmJjYmMyZWQxY2FhYjcwMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTgzLDE1ICsxODMsMTMgQEAg
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRm9udCYgZm9udCwKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAg
IGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFj
ZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKTsKIAogICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRl
eHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkg
JiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25P
ckZsaXBwZWQoKSk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWlu
dCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRv
d3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFw
aGljc0NvbnRleHQuZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3Bh
Y2UgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKICAgICAgICAgQ29sb3Igc2hh
ZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFk
b3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAv
IDI1NSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENv
bG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKICAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2lu
dC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CkBAIC0y
MDMsNyArMjAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9udCwKICAgICAgICAgICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndp
ZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgp
LCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQo
KSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4
dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihn
bHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAgIH0KLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNl
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwogICAg
IH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSAr
IHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCmluZGV4IDI3NDIyN2I5NmFlZGYwOGEzNDFiNGMyMzA4
MWNjMDNiOGI2ZTQxNzguLjA0OGQ2ZTI1NWQ2MDBmM2ZhYWQ0ZDhmNzdjODBkNWE5NTc2MWMxY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMs
IGludCB3aWR0aCwgaW50CiAKICAgICBmbG9hdCByYWRpdXMgPSAod2lkdGggLSAxKSAvIDIuMGY7
CiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKLSAgICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3Iu
aXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQikgOiAw
OworICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0Nv
bG9yKGNvbG9yKSA6IG51bGxwdHI7CiAKICAgICBDR011dGFibGVQYXRoUmVmIGZvY3VzUmluZ1Bh
dGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7CiAgICAgdW5zaWduZWQgcmVjdENvdW50ID0gcmVj
dHMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCmluZGV4IDA4MzQ3MDdkYTliYWY3MTFjYmY3MjgxNzM2ZjI1MjJmN2Yx
MWE3NjUuLjYyZDQ5ODAyMmMxZjY4MmUyZDRiM2Y2OGYxZGVkOWRkODQzODM1NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAK
QEAgLTc2LDkgKzc2LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklU
TUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKIAogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUg
PSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQotICAgICAgICBkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lk
dGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9z
aXRlQ29weSk7CisgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXpl
LCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVD
b3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAog
ICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7CkBAIC04
Niw3ICs4Niw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBi
bXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsKICAgICBzaXplX3QgZnJhbWVz
ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNhaXJvV2luLmNwcAppbmRleCBjNDM0ODBiM2IyZDVhYmY0MmJmYzkyNmFhN2JmODg1MjY2NTg2
MmI2Li4yOWEyMDIzZGI2M2E5MTQzNGMzOTQ4ZWFhNTUyM2JiNjFmZTgxMDc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUo
SEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAKICAgICBGbG9hdFNpemUgaW1hZ2VT
aXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKLSAgICAgICAgZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5i
bVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bXBvc2l0ZUNvcHkpOworICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAq
c2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9z
aXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7
CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgY2Fpcm9fZGVzdHJveSh0YXJnZXRSZWYpOwpAQCAt
ODksNyArODksNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAg
Ym1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEJp
dG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkK
K3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3Jj
U2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCiB7CiAgICAgc2l6ZV90IGZyYW1l
cyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytp
KSB7CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hp
bmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKICAgICAgICAg
aWYgKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53
aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZy
YW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhj
dHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNT
aXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJh
dyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBz
cmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJy
ZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwOCw3ICsxMDgs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNv
cnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJh
bWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBk
cmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29tcG9zaXRlT3As
IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4
IGE3MWI4Mjk5NDY4NThiOTdmNmNlOTdiNGNiMzcwMWNjMGJhYmM2ODMuLmQ4ZDEwNTU4YjJmZDM1
MWI2ZDQxYjYyODgzZmMwOTM2NzlhZTI4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjpkcmF3TGF5ZXIoTGVnYWN5VGlsZUxheWVyKiBsYXllciwgQ0dDb250ZXh0UmVm
IGNvbnRleHQpCiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKICAgICAg
ICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGZyYW1lLm9yaWdpbi54LCBmcmFtZS5v
cmlnaW4ueSk7Ci0gICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0
LCBjYWNoZWRDR0NvbG9yKGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoW2xheWVyIHRpbGVHcmlkXSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0
aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3JGb3JHcmlkVGlsZUJvcmRlcihbbGF5
ZXIgdGlsZUdyaWRdKSkpOwogICAgICAgICAKICAgICAgICAgQ0dSZWN0IGxhYmVsQm91bmRzID0g
W2xheWVyIGJvdW5kc107CiAgICAgICAgIGxhYmVsQm91bmRzLnNpemUud2lkdGggPSAxMCArIDEy
ICogc3RybGVuKHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVHcmlkVGlsZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlR3JpZFRpbGUubW0KaW5kZXggMmE5YTVmY2FkYmRiNjFkOWJhZjA1YzdkNTEwN2M5Y2Zi
YmE5YmJiYy4uMzBhN2RiY2I5NmNkNjQ2ZTFjNWE5NjM3ODhkZmVlMDAzZTU5NWRiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBMZWdhY3lUaWxlR3JpZFRpbGU6OnNob3dCb3JkZXIoYm9v
bCBmbGFnKQogewogICAgIExlZ2FjeVRpbGVMYXllciogbGF5ZXIgPSBtX3RpbGVMYXllci5nZXQo
KTsKICAgICBpZiAoZmxhZykgewotICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2FjaGVk
Q0dDb2xvcihtX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5jb2xvckZvckdyaWRUaWxlQm9yZGVyKG1f
dGlsZUdyaWQpLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgICAgIFtsYXllciBzZXRCb3Jk
ZXJDb2xvcjpjYWNoZWRDR0NvbG9yKG1fdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmNvbG9yRm9yR3Jp
ZFRpbGVCb3JkZXIobV90aWxlR3JpZCkpXTsKICAgICAgICAgW2xheWVyIHNldEJvcmRlcldpZHRo
OjAuNWZdOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpuaWxd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggZjZlYzkwOWU4YjIyY2RlYTcw
ZWFlNDgxZTdjNjg0ZDIyZDI2YmQwMS4uM2UyYThkNjIyYTljNTU3MDdkMjkyMjJkOTYyZjUzYzhj
MzY1M2U4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0xNjUsNyArMTY1
LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBG
dWxsc2NyZWVuKCkKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNj
cmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CiAgICAgV2ViVGhyZWFk
UnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewotICAgICAgICBb
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2Vi
Q29yZTo6Q29sb3I6OnRyYW5zcGFyZW50LCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07
CisgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVk
Q0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsKICAgICAgICAgbV9tb2RlbC0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOwogICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgdGhpc10gewogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggNWZiMDUy
ZDQ1NjdkYTAwYmQ4MmRlMjFjOWFkNjkwMTA1NWQ1ZDkxOS4uNDE2ZDVkZDk1NTY3OWJiODM2ZTQy
OTIxMTg4MGMyYWI3MTEwOTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0ltYWdlTWFjLm1tCkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIHZvaWQgZHJhd0F0UG9pbnQo
TlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNGb250ICpmb250LCBOU0NvbG9yICoK
ICAgICAgICAgQ0dGbG9hdCBibHVlOwogICAgICAgICBDR0Zsb2F0IGFscGhhOwogICAgICAgICBb
W3RleHRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNl
XSBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBhbHBoYTomYWxwaGFdOwotICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwgZ3Jl
ZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1
LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpKTsKICAgICAgICAgCiAgICAg
ICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50
KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bQppbmRleCBlOTNkODcyZTM2NmEzNzUyMzI2ZDAyY2NmYjgyZjAxNjQzOGFkNTA2Li45Y2ZkMDQ4
OTkzMmNmZTU2ODFmYzFhYjAwYjcwMzQxYTEzNzViZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC01NDYsNyArNTQ2LDcgQEAg
dm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0VXBPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5
ZXIgKmxheWVyLCBjb25zdCBDb2xvciYKICAgICBzdGF0aWMgQ0dDb2xvclJlZiBjYWNoZWRMaW5l
bkJhY2tncm91bmRDb2xvciA9IGxpbmVuQmFja2dyb3VuZENvbG9yKCkubGVha1JlZigpOwogICAg
IC8vIFdlIG9wZXJhdGUgb24gdGhlIENBTGF5ZXIgZGlyZWN0bHkgaGVyZSwgc2luY2UgR3JhcGhp
Y3NMYXllciBkb2Vzbid0IGhhdmUgdGhlIGNvbmNlcHQKICAgICAvLyBvZiBwYXR0ZXJuIGltYWdl
cywgYW5kIHdlIGtub3cgdGhhdCBXZWJDb3JlIHdvbid0IHRvdWNoIHRoaXMgbGF5ZXIuCi0gICAg
bGF5ZXIuYmFja2dyb3VuZENvbG9yID0gY3VzdG9tQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSA/
IGNhY2hlZENHQ29sb3IoY3VzdG9tQmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KSA6IGNhY2hlZExpbmVuQmFja2dyb3VuZENvbG9yOworICAgIGxheWVyLmJhY2tncm91bmRDb2xv
ciA9IGN1c3RvbUJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGN1c3Rv
bUJhY2tncm91bmRDb2xvcikgOiBjYWNoZWRMaW5lbkJhY2tncm91bmRDb2xvcjsKIH0KIAogdm9p
ZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVtb3ZlT3ZlcmhhbmdBcmVhQmFja2dyb3VuZChDQUxheWVy
ICpsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBlNzU5
MWJlZGJmNGQ1ZTBkNjllNzBkNzNlNzA0MjllZGY4MWJhMTViLi5mMWUyMTEzY2Y3YWE1MTExMWUw
YzRmZTc3MDFjNzE0NTE5MWExYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCkBAIC02OTIsNyArNjkyLDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3Vz
UmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlNDZWxsICpjZWxsLCBHcmFwaGljc0NvbnQKICAgICAg
ICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKSk7CiAgICAgICAgICAgICBuZWVkc1JlcGFpbnQgPSBkcmF3Q2VsbE9yRm9j
dXNSaW5nSW50b1JlY3RXaXRoVmlldyhjZWxsLCBpbWFnZUJ1ZmZlckRyYXdSZWN0LCB2aWV3LCBk
cmF3QnV0dG9uQ2VsbCwgZHJhd0ZvY3VzUmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlU1JHQiwgcmVjdC5sb2Nh
dGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bWFnZUJ1ZmZlciwgcmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91
dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CiAgICAgICAgIHJldHVy
biBuZWVkc1JlcGFpbnQ7CiAgICAgfQogICAgIGlmIChkcmF3QnV0dG9uQ2VsbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuY3BwCmluZGV4IGIwNTNjNDJiYWE5ZmExZDQ2YmZiYzkyZDg3OTMwYmYyMGY5ZDM5ODYu
LjZiNjU2Njg4ZWU5MDBkN2NiYWE3OTFjNmE3OTI3MzQyM2IzNGRjY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2
YXRlLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAgICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkp
OwogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgICAgICBJbnRS
ZWN0IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChwYWludFJlY3QsIENvbG9yOjpi
bGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGFp
bnRSZWN0LCBDb2xvcjo6YmxhY2spOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCmluZGV4IDk5NTQ0N2I1Njgw
MTAzOGNmZmUzMzE1ODljNzc2NDBiY2ZmYzgxNGEuLjlhZDc1N2YzZWJhNTcyNmIxZDIxYzVhZDRl
ZGNkYzE5OWI2OGQxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCBpbnQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJv
bFNpemUpCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9s
bGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogQ29sb3IoMHhGRkUwRTBFMCksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3Jv
bGxiYXIuZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApKTsK
IH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0
KQogewogICAgIGlmIChzY3JvbGxiYXIuZW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgY29udGV4dC5maWxsUmVjdCh0aHVtYlJlY3QsIENvbG9yOjpkYXJrR3JheSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXgg
N2YzZmUzNDYxZjM2ZjIxNGMxNjg1ZmE0NmM4MzVlMTdkNTIwNDE0NS4uOGU0Y2Q4OWQ2ZDliZWJj
MjI4ZjhjMzI3MWEyOWY3YjhlNDdkMjI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGb250
UmVuZGVyaQogICAgIHN0YXRpYyBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoMTQwLCAxNDAs
IDE0MCk7CiAgICAgc3RhdGljIGNvbnN0IEludFNpemUgcmFkaWkoRHJhZ0xhYmVsUmFkaXVzLCBE
cmFnTGFiZWxSYWRpdXMpOwogICAgIEludFJlY3QgcmVjdCgwLCAwLCBpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpKSwgYmFja2dyb3Vu
ZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpKSwgYmFj
a2dyb3VuZENvbG9yKTsKICAKICAgICAvLyBEcmF3IHRoZSB0ZXh0CiAgICAgc3RhdGljIGNvbnN0
IENvbG9yIHRvcENvbG9yKDAsIDAsIDAsIDI1NSk7IC8vIG9yaWdpbmFsIGFscGhhID0gMC43NQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAppbmRleCBlZWRm
NmZjNmYzNWZlZDRmNGI0MjhkODk4ZDlkZjIyOGMxZDNiODQwLi41MzQ5MWNiN2VhMDc3ZTIwNGUw
MDhmZDVmNGFmNTFiYWZiZjdjOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UG9wdXBNZW51V2luLmNwcApAQCAtNjMyLDE4ICs2MzIsMTggQEAgdm9pZCBQb3B1cE1lbnVXaW46
OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAKICAgICAgICAgLy8g
RHJhdyB0aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBtZW51IGl0ZW0KICAgICAgICAgaWYgKGl0ZW1T
dHlsZS5pc1Zpc2libGUoKSkKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaXRlbVJlY3Qs
IG9wdGlvbkJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGl0ZW1SZWN0LCBvcHRpb25CYWNrZ3JvdW5kQ29sb3IpOwogCiAg
ICAgICAgIGlmIChjbGllbnQoKS0+aXRlbUlzU2VwYXJhdG9yKGluZGV4KSkgewogICAgICAgICAg
ICAgSW50UmVjdCBzZXBhcmF0b3JSZWN0KGl0ZW1SZWN0LngoKSArIHNlcGFyYXRvclBhZGRpbmcs
IGl0ZW1SZWN0LnkoKSArIChpdGVtUmVjdC5oZWlnaHQoKSAtIHNlcGFyYXRvckhlaWdodCkgLyAy
LCBpdGVtUmVjdC53aWR0aCgpIC0gMiAqIHNlcGFyYXRvclBhZGRpbmcsIHNlcGFyYXRvckhlaWdo
dCk7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNlcGFyYXRvclJlY3QsIG9wdGlvblRl
eHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KHNlcGFyYXRvclJlY3QsIG9wdGlvblRleHRDb2xvcik7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZyBpdGVtVGV4dCA9IGNsaWVudCgpLT5pdGVt
VGV4dChpbmRleCk7CiAKICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5
bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihvcHRpb25UZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihvcHRpb25UZXh0Q29sb3IpOwogICAgICAgICAKICAgICAgICAgRm9u
dENhc2NhZGUgaXRlbUZvbnQgPSBjbGllbnQoKS0+bWVudVN0eWxlKCkuZm9udCgpOwogICAgICAg
ICBpZiAoY2xpZW50KCktPml0ZW1Jc0xhYmVsKGluZGV4KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCmluZGV4IGRmNTdlNWEz
ZTZkOTI3MmEwYTljMmVmOTg3MTI5OTNlZThhZjM5ZjIuLmYxY2VmMDlmNWM3ODE4ODE2ODZlOTQz
ZjU2N2E1MWYwYTU5NGM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQg
ZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnMKIHsKICAgICBUZXh0UnVuIHJ1bih0ZXh0KTsKIAotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihjb2xvcik7CiAgICAgaWYgKGlzT25lTGVmdFRvUmlnaHRSdW4ocnVuKSkKICAgICAg
ICAgZm9udC5kcmF3VGV4dChjb250ZXh0LCBydW4sIHBvaW50KTsKICAgICBlbHNlCkBAIC03MSw3
ICs3MSw3IEBAIHN0YXRpYyB2b2lkIGRvRHJhd1RleHRBdFBvaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zCiAgICAgICAgIEludFBvaW50IHVuZGVy
bGluZVBvaW50KHBvaW50KTsKICAgICAgICAgdW5kZXJsaW5lUG9pbnQubW92ZShiZWZvcmVXaWR0
aCwgMSk7CiAKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogICAg
ICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dCh1bmRlcmxpbmVQb2ludCwgdW5kZXJsaW5lZFdp
ZHRoLCBmYWxzZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHAKaW5kZXggMmU4ZmQwYmIwYTJlMGJhNDNiNmVjNTU2MGE0MzRkNmJmZmZkYjViZi4uMzY4
NWNiZTEyYmJmMTI5ZTUwMjczZmViNWYxYjE5MDM5MTAzNTVhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC00NiwxMSArNDYsMTEgQEAgdm9pZCBFbGxpcHNp
c0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwgTGEKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0gdGhpcy0+bGlu
ZVN0eWxlKCk7CiAgICAgQ29sb3IgdGV4dENvbG9yID0gbGluZVN0eWxlLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOwogICAgIGlmICh0ZXh0Q29s
b3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
dGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IodGV4dENvbG9yKTsKICAgICBib29sIHNldFNoYWRvdyA9IGZhbHNlOwogICAgIGlm
IChsaW5lU3R5bGUudGV4dFNoYWRvdygpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KExh
eW91dFNpemUobGluZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRv
dygpLT55KCkpLAotICAgICAgICAgICAgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+cmFkaXVzKCks
IGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPmNvbG9yKCksIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+cmFkaXVzKCksIGxpbmVTdHls
ZS50ZXh0U2hhZG93KCktPmNvbG9yKCkpOwogICAgICAgICBzZXRTaGFkb3cgPSB0cnVlOwogICAg
IH0KIApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYQogICAgICAgICAv
LyBTZWxlY3QgdGhlIGNvcnJlY3QgY29sb3IgZm9yIHBhaW50aW5nIHRoZSB0ZXh0LgogICAgICAg
ICBDb2xvciBmb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZvcmNlVGV4dENvbG9yKCkgPyBwYWludElu
Zm8uZm9yY2VkVGV4dENvbG9yKCkgOiBibG9ja0Zsb3coKS5zZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoKTsKICAgICAgICAgaWYgKGZvcmVncm91bmQuaXNWYWxpZCgpICYmIGZvcmVncm91bmQgIT0g
dGV4dENvbG9yKQotICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZm9yZWdyb3VuZCwg
bGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihmb3JlZ3JvdW5kKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlz
IExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KQEAgLTY5
LDcgKzY5LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKIAogICAgIC8vIFJlc3RvcmUgdGhl
IHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENvbG9yICE9IGNvbnRleHQuZmlsbENv
bG9yKCkpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxl
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7
CiAKICAgICBpZiAoc2V0U2hhZG93KQogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CkBA
IC0xMzcsNyArMTM3LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGEKICAgICBMYXlvdXRSZWN0
IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsg
cGFpbnRPZmZzZXQueSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3AoKSwgMCwgcm9vdEJveC5zZWxl
Y3Rpb25IZWlnaHQoKSk7CiAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bigmYmxvY2tGbG93KCksIGZvbnQsIG1fc3RyLCBzdHlsZSwgQWxsb3dUcmFpbGluZ0V4
cGFuc2lvbik7CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHNlbGVj
dGlvblJlY3QsIDAsIC0xKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3Jp
dGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYyk7CiB9CiAKIGJvb2wgRWxsaXBzaXNCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91
dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggZmQ1
MDllOGVhZDU5Njk3ZDQ2MGQzOGQzMTNlM2UwNDE2ZmE2NTg3Ny4uNjUwMjk5YzQ4MGZmZTU0YWQ4
MzJlODE1OTNiMWU5MGEyZDcxMDVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC00MjksMTAgKzQyOSw4IEBAIHZvaWQgRmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4
dCYgZGVzdGluYXRpb25DCiAgICAgTGF5b3V0UmVjdCBkZXN0UmVjdCA9IGZpbHRlci0+b3V0cHV0
UmVjdCgpOwogICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZz
ZXQueSgpKTsKIAotICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0cHV0QnVmZmVyID0gZmlsdGVyLT5v
dXRwdXQoKSkgewotICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpv
dXRwdXRCdWZmZXIsIG1fcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNl
KCksCi0gICAgICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRl
ckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwotICAg
IH0KKyAgICBpZiAoSW1hZ2VCdWZmZXIqIG91dHB1dEJ1ZmZlciA9IGZpbHRlci0+b3V0cHV0KCkp
CisgICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm91dHB1dEJ1ZmZl
ciwgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVy
ZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAogICAgIGZpbHRlci0+Y2xl
YXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAKaW5kZXggMDIxYTFhYjY2OTFkYmIxMTdhZTIwM2UzNjIxMjQ4MzhmZTdl
MzliYi4uYzc4YjJjYWU2MDM4MTg0NmVlNjkwMDNjZTIzMGVlMjAyMTg3OTg1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNjk3LDcgKzY5Nyw3IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAgICAgIGMgPSBDb2xvcigweGZmIC0gYy5yZWQo
KSwgMHhmZiAtIGMuZ3JlZW4oKSwgMHhmZiAtIGMuYmx1ZSgpKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICB1cGRhdGVHcmFwaGljc0Nv
bnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoYywgc3R5bGUuY29sb3JTcGFjZSgpKSk7IC8v
IERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCisgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRl
eHQsIFRleHRQYWludFN0eWxlKGMpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKICAgICAK
ICAgICAvLyBJZiB0aGUgdGV4dCBpcyB0cnVuY2F0ZWQsIGxldCB0aGUgdGhpbmcgYmVpbmcgcGFp
bnRlZCBpbiB0aGUgdHJ1bmNhdGlvbgogICAgIC8vIGRyYXcgaXRzIG93biBoaWdobGlnaHQuCkBA
IC03MjQsNyArNzI0LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKIAogICAgIExheW91dFJl
Y3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnko
KSAtIGRlbHRhWSwgbV9sb2dpY2FsV2lkdGgsIHNlbGVjdGlvbkhlaWdodCk7CiAgICAgZm9udC5h
ZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBzUG9zLCBl
UG9zKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3Jp
dGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJl
Y3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCksIHRleHRSdW4ubHRyKCkpLCBjKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwogICAgIFVOVVNFRF9QQVJBTShib3hPcmlnaW4pOwpAQCAtNzQ1LDEzICs3NDUsMTMgQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEYKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBDb2xvciBjb21wb3NpdGlvbkNvbG9yID0gQ29sb3I6
OmNvbXBvc2l0aW9uRmlsbDsKLSAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgVGV4
dFBhaW50U3R5bGUoY29tcG9zaXRpb25Db2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKSk7IC8vIERv
bid0IGRyYXcgdGV4dCBhdCBhbGwhCisgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRleHQs
IFRleHRQYWludFN0eWxlKGNvbXBvc2l0aW9uQ29sb3IpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0
IGFsbCEKIAogICAgIExheW91dFVuaXQgZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxp
cHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRv
bSgpIDogbG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CiAgICAgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0ID0gTGF5b3V0UmVjdChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgpIC0gZGVs
dGFZLCAwLCBzZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3Ry
dWN0VGV4dFJ1bihzdHlsZSwgZm9udCk7CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBzUG9zLCBlUG9zKTsKLSAgICBjb250ZXh0LmZp
bGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rp
b25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgdGV4dFJ1
bi5sdHIoKSksIGNvbXBvc2l0aW9uQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgY29u
dGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24o
c2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCks
IHRleHRSdW4ubHRyKCkpLCBjb21wb3NpdGlvbkNvbG9yKTsKIH0KIAogc3RhdGljIFN0cm9rZVN0
eWxlIHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUg
ZGVjb3JhdGlvblN0eWxlKQpAQCAtOTQ5LDcgKzk0OSw2IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2lu
dCYKICAgICAgICAgc2V0Q2xpcCA9IHRydWU7CiAgICAgfQogCi0gICAgQ29sb3JTcGFjZSBjb2xv
clNwYWNlID0gcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKICAgICBib29sIHNldFNo
YWRvdyA9IGZhbHNlOwogCiAgICAgZG8gewpAQCAtOTYxLDcgKzk2MCw3IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGludCBzaGFkb3dYID0gaXNI
b3Jpem9udGFsKCkgPyBzaGFkb3ctPngoKSA6IHNoYWRvdy0+eSgpOwogICAgICAgICAgICAgaW50
IHNoYWRvd1kgPSBpc0hvcml6b250YWwoKSA/IHNoYWRvdy0+eSgpIDogLXNoYWRvdy0+eCgpOwot
ICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKHNoYWRvd1gsIHNoYWRvd1kg
LSBleHRyYU9mZnNldCksIHNoYWRvdy0+cmFkaXVzKCksIHNoYWRvdy0+Y29sb3IoKSwgY29sb3JT
cGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93WCwg
c2hhZG93WSAtIGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigp
KTsKICAgICAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7CiAgICAgICAgICAgICBzaGFkb3cgPSBz
aGFkb3ctPm5leHQoKTsKICAgICAgICAgfQpAQCAtOTcwLDcgKzk2OSw3IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRQb2ludCYKIAogICAgICAgICAvLyBUaGVzZSBkZWNvcmF0aW9ucyBzaG91bGQgbWF0Y2gg
dGhlIHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0
aW9ucygpCiAgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUp
IHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lQ29sb3IsIGNv
bG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmVD
b2xvcik7CiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRleHREZWNvcmF0aW9u
U3R5bGVUb1N0cm9rZVN0eWxlKHVuZGVybGluZVN0eWxlKSk7CiAgICAgICAgICAgICBjb25zdCBp
bnQgdW5kZXJsaW5lT2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldChsaW5lU3R5bGUudGV4
dFVuZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpLCB0aGlzLCB0ZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyk7CiAKQEAgLTk5NCw3ICs5OTMsNyBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UG9pbnQmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7Ci0gICAgICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKG92ZXJsaW5lQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihvdmVybGluZUNvbG9yKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUob3ZlcmxpbmVTdHls
ZSkpOwogICAgICAgICAgICAgc3dpdGNoIChvdmVybGluZVN0eWxlKSB7CiAgICAgICAgICAgICBj
YXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5OiB7CkBAIC0xMDE1LDcgKzEwMTQsNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoQ29sb3IsIGNvbG9yU3BhY2UpOworICAg
ICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihsaW5ldGhyb3VnaENvbG9yKTsKICAgICAg
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tl
U3R5bGUobGluZXRocm91Z2hTdHlsZSkpOwogICAgICAgICAgICAgc3dpdGNoIChsaW5ldGhyb3Vn
aFN0eWxlKSB7CiAgICAgICAgICAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5OiB7CkBA
IC0xMTI3LDcgKzExMjYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFy
a2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQbwogCiAgICAgQ29sb3Ig
Y29sb3IgPSBtYXJrZXIuYWN0aXZlTWF0Y2goKSA/IHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0Zm9y
bUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDogcmVuZGVyZXIoKS50aGVtZSgpLnBs
YXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgdXBkYXRlR3JhcGhpY3ND
b250ZXh0KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkp
KTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQo
Y29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFs
bCEKIAogICAgIC8vIFVzZSBzYW1lIHkgcG9zaXRpb25pbmcgYW5kIGhlaWdodCBhcyBmb3Igc2Vs
ZWN0aW9uLCBzbyB0aGF0IHdoZW4gdGhlIHNlbGVjdGlvbiBhbmQgdGhpcyBoaWdobGlnaHQgYXJl
IG9uCiAgICAgLy8gdGhlIHNhbWUgd29yZCB0aGVyZSBhcmUgbm8gcGllY2VzIHN0aWNraW5nIG91
dC4KQEAgLTExNDIsNyArMTE0MSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0
Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAgICAgaWYg
KHNlbGVjdGlvblJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZXh0
LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxl
Y3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVu
Lmx0cigpKSwgY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5maWxsUmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVj
dCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSks
IGNvbG9yKTsKIH0KICAgICAKIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtl
cnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4s
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGJvb2wg
YmFja2dyb3VuZCkKQEAgLTEyNjEsNyArMTI2MCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFp
bnRDb21wb3NpdGlvblVuZGVybGluZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
CiAgICAgc3RhcnQgKz0gMTsKICAgICB3aWR0aCAtPSAyOwogCi0gICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcih1bmRlcmxpbmUuY29sb3IsIHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCkp
OworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lLmNvbG9yKTsKICAgICBjb250
ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lVGhpY2tuZXNzKTsKICAgICBjb250ZXh0LmRyYXdM
aW5lRm9yVGV4dChGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBzdGFydCwgYm94T3JpZ2luLnko
KSArIGxvZ2ljYWxIZWlnaHQoKSAtIGxpbmVUaGlja25lc3MpLCB3aWR0aCwgcmVuZGVyZXIoKS5k
b2N1bWVudCgpLnByaW50aW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggNzMxYTBhMTU2NzY1ZTBhNjYzZDg4MTk2NmQ3YTljMWFlODZiMTdhYS4u
OTNjNzA2YzA3MDQ1YmI2YmI5ZTU0Yzg5NWM2NWQwMzY5NjFmNWRkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xOTczLDcgKzE5NzMsNyBAQCBMYXlvdXRS
ZWN0IFJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2Nr
LCBjb25zdCBMYXlvdXRQbwogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxv
Z2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0
UmVjdChsb2dpY2FsTGVmdCwgbG9naWNhbFRvcCwgbG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0
KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmls
bFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICByZXR1cm4gZ2FwUmVjdDsKIH0KIApAQCAt
MTk5MCw3ICsxOTkwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxl
Y3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGEKIAogICAgIExheW91dFJl
Y3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9j
a1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qocm9vdEJsb2NrTG9naWNhbExlZnQsIHJvb3RC
bG9ja0xvZ2ljYWxUb3AsIHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwog
ICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgcmV0dXJu
IGdhcFJlY3Q7CiB9CiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxv
Y2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25z
dCBMCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1Bo
eXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KHJvb3RCbG9j
a0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9wLCByb290QmxvY2tMb2dpY2FsV2lkdGgs
IGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8t
PmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8t
PmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCmluZGV4IDJlMGM3NjI2NDQyYzIwYmU0N2RiNzhiYzdlZjFiMTA3OWZkYjM1
NmUuLjM1NzNjMTNjOGEzMWQxZDQ4YTY0N2M5OTY1ZmI3MzM5ZjdjYzVlZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJl
bmRlckJveDo6cGFpbnRDbGlwcGluZ01hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludAogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50
UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBDb2xvcjo6YmxhY2ss
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0
KHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIENvbG9yOjpibGFjayk7CiB9CiAKIHZvaWQgUmVu
ZGVyQm94OjpwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFJlY3QmIHBhaW50UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGQ2OWMyN2I0MjQ3MmM4NDlkMThiNWZiZjQw
OWI5Mjc1ZjFkYjZmZjAuLjgzOGRhODU0Nzg3ZmJhMjYyMDc3YjM1NDc1NjJjZTY1MTdmYjAyNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcApAQCAtNTg5LDkgKzU4OSw5IEBAIHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAKICAgICBG
bG9hdFNpemUgc2hhZG93T2Zmc2V0KGJveFNoYWRvdy0+eCgpLCBib3hTaGFkb3ctPnkoKSk7CiAg
ICAgaWYgKCFib3hTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgIGNvbnRleHQu
c2V0U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5j
b2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCkpOwog
ICAgIGVsc2UKLSAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBi
b3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNl
KCkpOworICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJveFNo
YWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1h
Z2UsIGNvbnN0IEludFJlY3QmIG1hc2tSZWN0LCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExh
eW91dFJlY3QmIHNjcm9sbGVkUGFpbnRSZWN0KQpAQCAtNjgwLDE1ICs2ODAsMTUgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFw
cGVkQm9yZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5j
ZShjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLAogICAgICAgICAg
ICAgICAgIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkucGl4ZWxTbmFwcGVkUm91
bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBpZiAo
cGl4ZWxTbmFwcGVkQm9yZGVyLmlzUmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlciwgYmdDb2xvciwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBp
eGVsU25hcHBlZEJvcmRlciwgYmdDb2xvcik7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVy
UmVjdChjb250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXIpOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLnJlY3QoKSwg
YmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLnJlY3QoKSwgYmdDb2xvcik7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0LCBiZ0NvbG9yLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVs
U25hcHBlZFJlY3QsIGJnQ29sb3IpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MTcs
MTAgKzgxNywxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgICAgIGlm
ICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29sb3IuYWxwaGEoKSkKICAgICAgICAgICAgICAgICAg
ICAgYmFzZUNvbG9yID0gYmFzZUNvbG9yLmJsZW5kKGJnQ29sb3IpOwogCi0gICAgICAgICAgICAg
ICAgY29udGV4dC5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29sb3Is
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwgQ29t
cG9zaXRlQ29weSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYg
YmdDb2xvci5hbHBoYSgpKSB7CiAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3Bl
cmF0aW9uID0gc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID8gQ29tcG9zaXRlQ29weSA6IGNvbnRleHQu
Y29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChi
YWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwg
b3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRS
ZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIG9wZXJhdGlvbik7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZENsZWFyQmFja2dyb3VuZCkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFy
UmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nKTsKICAgICAgICAgfQpAQCAtODM1LDEyICs4
MzUsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IGJnTGF5ZXIt
PmNvbXBvc2l0ZSgpIDogb3A7CiAgICAgICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VN
YXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7CiAgICAgICAg
ICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHko
Y29udGV4dCwgKmltYWdlLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKLSAgICAgICAg
ICAgIGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwg
Z2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNl
KCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xh
eW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCks
IGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwg
YmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VM
b3dRdWFsaXR5U2NhbGluZykpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1hc2tJbWFn
ZSAmJiBiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKLSAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKm1hc2tJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1JlY3Qs
IENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqbWFza0ltYWdlLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CiAgICAgICAg
IGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICB9CiB9CkBAIC0xNjkxLDcgKzE2
OTEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICAgICAgcGF0aC5hZGRS
ZWN0KHBpeGVsU25hcHBlZElubmVyQm9yZGVyLnJlY3QoKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVFZGdl
XS5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigpKTsKICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfSAKQEAgLTE3MDgsNyArMTcwOCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVj
dCYKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxS
dWxlKFJVTEVfTk9OWkVSTyk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0Vmlz
aWJsZUVkZ2VdLmNvbG9yKCkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRo
KHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNzUyLDcgKzE3NTIs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBE
T1RURUQ6CiAgICAgY2FzZSBEQVNIRUQ6IHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0
cm9rZUNvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogCiAgICAgICAgIC8vIFRoZSBzdHJva2UgaXMg
ZG91YmxlZCBoZXJlIGJlY2F1c2UgdGhlIHByb3ZpZGVkIHBhdGggaXMgdGhlIAogICAgICAgICAv
LyBvdXRzaWRlIGVkZ2Ugb2YgdGhlIGJvcmRlciBzbyBoYWxmIHRoZSBzdHJva2UgaXMgY2xpcHBl
ZCBvZmYuIApAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwKICAg
ICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7CiAgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiB9CiAKQEAgLTIyNjUsOSArMjI2NSw5IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICBmaWxsUmVjdC5tb3ZlKGV4dHJhT2Zm
c2V0KTsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNo
YWRvd0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAgICAgICAgICAgRmxvYXRSb3Vu
ZGVkUmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9y
UGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVj
dCBwaXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0
Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMjI4NSwxMiArMjI4NSwxMiBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgIGluZmx1ZW5jZVJlY3QuZXhw
YW5kUmFkaWkoMiAqIHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsKIAogICAg
ICAgICAgICAgICAgIGlmIChhbGxDb3JuZXJzQ2xpcHBlZE91dChpbmZsdWVuY2VSZWN0LCBpbmZv
LnJlY3QpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBl
ZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJl
Y3QoKSwgQ29sb3I6OmJsYWNrKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuZXhwYW5kUmFkaWkoc2hhZG93U3ByZWFkKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFwaXhlbFNuYXBwZWRGaWxsUmVjdC5pc1JlbmRlcmFi
bGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZpbGxSZWN0LmFkanVz
dFJhZGlpKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBp
eGVsU25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZp
bGxSZWN0LCBDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJveCBpcyBvcGFxdWUsIGl0IGlzIHVu
bmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVyLCBkb2luZyBzbyBzYXZlcyB0aW1lCkBA
IC0yMzA3LDcgKzIzMDcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNo
YWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAgICAgICAg
ICAgICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5jbGlwT3V0KHJlY3RUb0NsaXBPdXQucmVjdCgpKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNr
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
cGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSW5zZXQgc2hhZG93LgpAQCAtMjMx
Nyw5ICsyMzE3LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3co
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAgICAgICAgaWYg
KHBpeGVsU25hcHBlZEhvbGVSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmICho
YXNCb3JkZXJSYWRpdXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRS
ZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRCb3JkZXJSZWN0LCBzaGFkb3dDb2xvcik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3Qu
cmVjdCgpLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSwgc2hh
ZG93Q29sb3IpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBA
IC0yMzU2LDExICsyMzU2LDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94
U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAg
ICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAKICAgICAgICAgICAgIGlmIChzaGFkb3ct
PmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lT
aGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRp
dXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7
CiAKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFw
cGVkT3V0ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShwaXhlbFNuYXBwZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBmaWxsQ29s
b3IpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IGI1M2YyYWY0ZmVlNWRiZjFmMzkwOGQ4NDIz
YjQzZWE5NTQxNTI0ODEuLjVjNjZiNzc2YzY5YjlkMzM2NjM4NmFhNWI3NTU4NjkyNjE3MWE5NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHAKQEAgLTEzMCwxMCArMTMwLDEwIEBAIHZvaWQgUmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAg
IHJldHVybjsKIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29s
b3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LnNldEZpbGxDb2xvcihjb2xvcik7CiAKICAgICBib3hPcmlnaW4ubW92ZShib3JkZXJMZWZ0KCkg
KyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGU3MDAzOGU5MmY2YzdiNDYxZmMw
NDlhZDNhMzNhYWRmMWM3ZTExZWEuLjhjMmVhMDhmNzFkZTY5ZjJkNDhlNTFhZmNjMzRmY2M0NDAy
OWU2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAg
LTE4MjAsNyArMTgyMCw2IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hTaWRl
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGCiAgICAgaWYgKGJvcmRl
clN0eWxlID09IERPVUJMRSAmJiAodGhpY2tuZXNzICogZGV2aWNlU2NhbGVGYWN0b3IpIDwgMykK
ICAgICAgICAgYm9yZGVyU3R5bGUgPSBTT0xJRDsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHRoaXMtPnN0eWxlKCk7CiAgICAgc3dpdGNoIChib3JkZXJTdHlsZSkgewogICAgIGNh
c2UgQk5PTkU6CiAgICAgY2FzZSBCSElEREVOOgpAQCAtMTgzMCw3ICsxODI5LDcgQEAgdm9pZCBS
ZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNz
Q29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKICAgICAgICAgU3Ryb2tlU3R5bGUgb2xkU3Ryb2tl
U3R5bGUgPSBncmFwaGljc0NvbnRleHQuc3Ryb2tlU3R5bGUoKTsKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhhbnRpYWxpYXMpOwotICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTdHJva2VUaGlja25lc3ModGhpY2tuZXNzKTsKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldFN0cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9r
ZSA6IERvdHRlZFN0cm9rZSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3TGluZShyb3Vu
ZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5b3V0UG9pbnQoeDEsIHkxKSwgZGV2aWNlU2NhbGVGYWN0
b3IpLCByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5b3V0UG9pbnQoeDIsIHkyKSwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKQEAgLTE4NDUsNyArMTg0NCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGCiAgICAgICAgIGlmICghYWRqYWNlbnRXaWR0aDEgJiYgIWFkamFjZW50V2lkdGgyKSB7CiAg
ICAgICAgICAgICBTdHJva2VTdHlsZSBvbGRTdHJva2VTdHlsZSA9IGdyYXBoaWNzQ29udGV4dC5z
dHJva2VTdHlsZSgpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxl
KE5vU3Ryb2tlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
RmlsbENvbG9yKGNvbG9yKTsKIAogICAgICAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdy
YXBoaWNzQ29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoYW50aWFsaWFzKTsKQEAgLTE5OTYsNyArMTk5NSw3IEBA
IHZvaWQgUmVuZGVyRWxlbWVudDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGCiAgICAgICAgICAgICAvLyBUdXJuIG9mZiBhbnRpYWxp
YXNpbmcgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGRyYXdDb252ZXhQb2x5Z29uKCk7CiAgICAg
ICAgICAgICAvLyB0aGlzIG1hdHRlcnMgZm9yIHJlY3RzIGluIHRyYW5zZm9ybWVkIGNvbnRleHRz
LgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsK
LSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNv
bG9yKTsKICAgICAgICAgICAgIGJvb2wgd2FzQW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRleHQu
c2hvdWxkQW50aWFsaWFzKCk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxk
QW50aWFsaWFzKGFudGlhbGlhcyk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd1Jl
Y3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEsIGRldmlj
ZVNjYWxlRmFjdG9yKSk7CkBAIC0yMDQwLDcgKzIwMzksNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRgogICAgICAgICB9CiAKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxl
KE5vU3Ryb2tlKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xv
cihjb2xvcik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3Q29udmV4UG9seWdvbig0LCBx
dWFkLCBhbnRpYWxpYXMpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
b2xkU3Ryb2tlU3R5bGUpOwogICAgICAgICBicmVhazsKQEAgLTIxMDgsNyArMjEwNyw3IEBAIHZv
aWQgUmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRSZWN0JiBwYWludFJlCiAgICAgICAgICAgICBwYXRoLmFkZFJlY3Qob3V0ZXIpOwog
ICAgICAgICAgICAgcGF0aC5hZGRSZWN0KGlubmVyKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihvdXRsaW5lQ29sb3IsIHN0eWxlVG9Vc2UuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Iob3V0bGluZUNvbG9yKTsK
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggYTNmODg5MWZkOTk3ZThjMmNhODZmNTBjYjVmZmY2
YzFiMDA1N2VkOS4uMTM2ZTEwYjRhMjliMWRlZTdkZWEzMjczNTY2MjQ5NTNjMTBhMGQyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFw
c2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXQKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1h
Z2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0g
ICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVk
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93
UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1
YWxpdHlTY2FsaW5nKSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29u
dGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJl
cGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQu
Y2xpcChjb250ZW50UmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV91bmF2YWlsYWJs
ZVBsdWdpbkluZGljYXRvcklzUHJlc3NlZCA/IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJl
c3NlZENvbG9yKCkgOiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKCksIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxlUGx1
Z2luSW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2Vk
Q29sb3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSk7CiAgICAgY29udGV4
dC5maWxsUGF0aChiYWNrZ3JvdW5kKTsKIAogICAgIFBhdGggc3Ryb2tlUGF0aDsKQEAgLTMyMCwy
MSArMzIwLDIxIEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgc3Ryb2tlUmVjdC5pbmZs
YXRlKDEpOwogICAgIHN0cm9rZVBhdGguYWRkUm91bmRlZFJlY3Qoc3Ryb2tlUmVjdCwgRmxvYXRT
aXplKHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzICsgMSwgcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RSYWRpdXMgKyAxKSk7CiAKLSAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVu
YXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAg
IGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpKTsK
ICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAgICBjb250ZXh0LnN0cm9rZVBh
dGgoc3Ryb2tlUGF0aCk7CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBm
b250LmZvbnRNZXRyaWNzKCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50
VGV4dFJlY3QubG9jYXRpb24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRU
ZXh0TWFyZ2luKTsKICAgICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVj
dC5sb2NhdGlvbigpLnkoKSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAt
IGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxh
Y2VtZW50VGV4dFJvdW5kZWRSZWN0VG9wVGV4dE1hcmdpbik7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCkpOwogICAgIGNvbnRl
eHQuZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgRmxvYXRQb2ludChsYWJlbFgsIGxhYmVsWSkpOwog
CiAgICAgaWYgKHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKGRvY3VtZW50
KCksIG1fcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pKSB7CiAgICAgICAgIGFycm93UmVjdC5p
bmZsYXRlKC1yZXBsYWNlbWVudEFycm93Q2lyY2xlUGFkZGluZyk7CiAKICAgICAgICAgY29udGV4
dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMCk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSk7CiAgICAgICAg
IGNvbnRleHQuZmlsbEVsbGlwc2UoYXJyb3dSZWN0KTsKIAogICAgICAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCA2NGVjYWNiMDZl
Y2VlOTMwZjI1YzY2NmIxNDllZDg3ZWU1NmQzYTYxLi5mZDExM2M0ZjhlMjIwOTNhMTBjYTY1YWZk
MjRiOGUyN2E3ZjM4YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0WSA9IGJhc2VsaW5l
UG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7
CiAgICAgICAgIAogICAgICAgICAvLyBEcmF3IHRoZSBmaWxlbmFtZQogICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBJbnRQb2ludChyb3VuZFRv
SW50KHRleHRYKSwgcm91bmRUb0ludCh0ZXh0WSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDJmODJkY2IxNGIzOTQ3YzgzYzY4NDk5Nzc0ZTZk
OGQyMmZhODBhNmEuLjYzY2E2ZGFkZjc4ZjE4MWFmYzQ2Njk5ODI0YmE3MDJlMzBjNzM1NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApAQCAtOTEsMTQg
KzkxLDEzIEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50Q29sdW1uQm9yZGVyKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0CiAgICAgCiAgICAgLy8gRmlsbCBmaXJz
dC4KICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwot
ICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNv
bnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29s
b3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVm
dENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZp
bGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBz
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikg
OiBib3JkZXJGaWxsQ29sb3IoKSk7CiAgICAgCiAgICAgLy8gTm93IHN0cm9rZSB0aGUgZWRnZXMg
YnV0IG9ubHkgaWYgd2UgaGF2ZSBlbm91Z2ggcm9vbSB0byBwYWludCBib3RoIGVkZ2VzIHdpdGgg
YSBsaXR0bGUKICAgICAvLyBiaXQgb2YgdGhlIGZpbGwgY29sb3Igc2hvd2luZyB0aHJvdWdoLgog
ICAgIGlmIChib3JkZXJSZWN0LndpZHRoKCkgPj0gMykgewotICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSks
IGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KEludFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC5tYXhYKCkgLSAxLCBib3JkZXJSZWN0
LnkoKSksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9y
U3BhY2UpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2Nh
dGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCkpOwor
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC5tYXhY
KCkgLSAxLCBib3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyRW5k
RWRnZUNvbG9yKCkpOwogICAgIH0KIH0KIApAQCAtMTExLDE0ICsxMTAsMTMgQEAgdm9pZCBSZW5k
ZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIGIKICAgICAKICAgICAvLyBGaWxsIGZpcnN0LgogICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgQ29sb3JTcGFjZSBjb2xv
clNwYWNlID0gc3R5bGUoKS5jb2xvclNwYWNlKCk7Ci0gICAgY29udGV4dC5maWxsUmVjdChib3Jk
ZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmls
bENvbG9yKCksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwg
ZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigp
KTsKIAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBvbmx5IGlmIHdlIGhhdmUgZW5v
dWdoIHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0dGxlCiAgICAgLy8gYml0IG9m
IHRoZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBpZiAoYm9yZGVyUmVjdC5oZWln
aHQoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0
LmxvY2F0aW9uKCksIEludFNpemUod2lkdGgoKSwgMSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigp
LCBjb2xvclNwYWNlKTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50
KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCks
IDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKHdpZHRoKCks
IDEpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
SW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0LngoKSwgYm9yZGVyUmVjdC5tYXhZKCkgLSAxKSwg
SW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDFkNDc4YmY2ZmZj
ODdmZWZmNDc1NTc0MTUyNTI0ZmIxZGM4NzJkYjcuLjE0YzdhMDIzMDJjMTM2YmY2MDc3NWQ1OTU1
ZWZhZjU3Mzg1NTFhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cApAQCAtMzkyLDggKzM5Miw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAKICAgICAgICAg
ICAgIC8vIERyYXcgYW4gb3V0bGluZSByZWN0IHdoZXJlIHRoZSBpbWFnZSBzaG91bGQgYmUuCiAg
ICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICAgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5z
cGFyZW50LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXkpOworICAgICAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxlZnRC
b3JkZXIgKyBsZWZ0UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQsIGNX
aWR0aCwgY0hlaWdodCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgpOwogCiAgICAg
ICAgICAgICBib29sIGVycm9yUGljdHVyZURyYXduID0gZmFsc2U7CkBAIC00MjQsMTMgKzQyNCwx
MyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5U
QVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9y
aWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgp
LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9m
ZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFn
ZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAg
ICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIHRleHQgPSBkb2N1bWVudCgpLmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
bV9hbHRUZXh0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICAgICAgICAgICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKICAgICAgICAg
ICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNz
KCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBmb250TWV0cmljcy5hc2Nl
bnQoKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogI2lmIEVO
QUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5z
ZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5k
aWYKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgcmVj
dCwKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1nLCByZWN0LAogICAgICAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZmUxNmI3Mjc2YTViYzc0MDljMDI5MWE5
NmFiYzA2OWM4ZjdhNGVhLi42ZTIxN2E3MWJmZjQ5M2Y4N2MzOTMzMzQ5NjAwMGFkMGVjNTRhMjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE4MjEsNyAr
MTgyMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQCiAjZW5kaWYKIAogI2lmZGVmIFJFVkVB
TF9UUkFOU1BBUkVOQ1lfTEFZRVJTCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xv
cigwLjBmLCAwLjBmLCAwLjVmLCAwLjJmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjVmLCAwLjJmKSk7CiAg
ICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZENsaXBSZWN0KTsKICNlbmRpZgog
ICAgIH0KQEAgLTM2MDgsOSArMzYwOCw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZs
b3dDb250cm9scyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50CiAKIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KQogewotICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7Ci0gICAgQVNTRVJUKGJveCk7
Ci0KICAgICBJbnRSZWN0IGFic1JlY3QgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgYWJzUmVj
dC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIGlmICghYWJzUmVjdC5pbnRlcnNlY3RzKGRhbWFn
ZVJlY3QpKQpAQCAtMzYyOSw3ICszNjI2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGEKICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHBhaW50IHdoaXRlIGlmIHdlIGhhdmUgb3ZlcmxheSBzY3Jv
bGxiYXJzLCBzaW5jZSB3ZSBuZWVkCiAgICAgLy8gdG8gc2VlIHdoYXQgaXMgYmVoaW5kIGl0Lgog
ICAgIGlmICghaGFzT3ZlcmxheVNjcm9sbGJhcnMoKSkKLSAgICAgICAgY29udGV4dC5maWxsUmVj
dChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJveC0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGFic1JlY3QsIENvbG9yOjp3aGl0ZSk7CiB9CiAKIHZvaWQg
UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KQpAQCAtMzY1Miw3ICsz
NjQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXplclNpemUud2lkdGgoKSwgcmVz
aXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3QuaGVpZ2h0KCkgLSBjb3JuZXJS
ZXNpemVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKC0x
LjAsIDEuMCkpOwogICAgICAgICBpZiAocmVzaXplQ29ybmVySW1hZ2UpCi0gICAgICAgICAgICBj
b250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIHJlbmRlcmVyKCkuc3R5bGUoKS5j
b2xvclNwYWNlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6ZXJTaXplKSk7
CisgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGNvcm5lclJlc2l6ZXJTaXplKSk7CiAgICAgICAgIGNvbnRleHQu
cmVzdG9yZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzY2MCw3ICszNjU3LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5b3UKICAgICBpZiAoIXJlc2l6ZUNvcm5lckltYWdlKQogICAg
ICAgICByZXR1cm47CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhYTWF4WUNvcm5lcigpIC0gY29y
bmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3Ju
ZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqcmVzaXplQ29ybmVySW1hZ2UsIGltYWdlUmVjdCk7CiB9CiAK
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdl
UmVjdCkKQEAgLTM2OTUsOSArMzY5Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXpl
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAg
ICAgIGNvbnRleHQuY2xpcChhYnNSZWN0KTsKICAgICAgICAgTGF5b3V0UmVjdCBsYXJnZXJDb3Ju
ZXIgPSBhYnNSZWN0OwogICAgICAgICBsYXJnZXJDb3JuZXIuc2V0U2l6ZShMYXlvdXRTaXplKGxh
cmdlckNvcm5lci53aWR0aCgpICsgTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpLCBsYXJnZXJDb3Ju
ZXIuaGVpZ2h0KCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSkpKTsKLSAgICAgICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJH
QigyMTcsIDIxNywgMjE3KSkpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygx
LjBmKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6
OnRyYW5zcGFyZW50KTsKICAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwcGVkSW50UmVjdChs
YXJnZXJDb3JuZXIpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKaW5kZXggZTU3M2Q1MDA0ZmI1YjU5MTA5MjAzMTY5MDQyNzQwMDAwYjYxM2Rh
NS4uNTUzMTcwYWRjNDQxZmQ5OTUzYjg4OTRhYTRjZjNmODdiYjI3ODI4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzk2LDggKzM5Niw3IEBAIHZv
aWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmlu
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgIH0KIAotICAgIENv
bG9yU3BhY2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS5jb2xvclNwYWNlKCk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwogCiAgICAgVGV4dFJ1
biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtU3R5
bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVuaWNvZGVCaWRpKCkpLCB0cnVl
LCBUZXh0UnVuOjpOb1JvdW5kaW5nKTsKICAgICBGb250Q2FzY2FkZSBpdGVtRm9udCA9IHN0eWxl
KCkuZm9udENhc2NhZGUoKTsKQEAgLTQzMiwxMCArNDMxLDkgQEAgdm9pZCBSZW5kZXJMaXN0Qm94
OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYKIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgZm9yIHRoaXMgbGlzdCBib3ggaXRl
bQogICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0eSgpICE9IEhJRERFTikgewotICAgICAgICBD
b2xvclNwYWNlIGNvbG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwogICAgICAgICBM
YXlvdXRSZWN0IGl0ZW1SZWN0ID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlz
dEluZGV4KTsKICAgICAgICAgaXRlbVJlY3QuaW50ZXJzZWN0KGNvbnRyb2xDbGlwUmVjdChwYWlu
dE9mZnNldCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJ
bnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChpdGVtUmVjdCksIGJhY2tDb2xv
cik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKaW5kZXggZjZlMzQ2ZDM3YjA1YmE0NmE5ZjY2MDgwNjIwNWI0MjUxYzdiMzUxOS4u
NDc2ZTljNDcyYjExNDkwZmQ2MjZkZGNjOTg3OTI3OWY4MWUzMDNiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTE5OCwxMSArMTE5OCwx
MSBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgaWYgKGlzSW1hZ2UoKSkgewogICAg
ICAgICBpZiAoUmVmUHRyPEltYWdlPiBtYXJrZXJJbWFnZSA9IG1faW1hZ2UtPmltYWdlKHRoaXMs
IG1hcmtlci5zaXplKCkpKQotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1hcmtlcklt
YWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCptYXJrZXJJbWFnZSwgbWFya2VyKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0
YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0
ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxS
ZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChzbmFwcGVkSW50UmVjdChz
ZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMTAsMTQgKzEyMTAsMTQgQEAgdm9pZCBS
ZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2UKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25O
b25lKSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgp
OwogICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuZmls
bFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkpOwogICAgIH0KIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihjb2xvcik7CiAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9r
ZSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihjb2xvcik7CiAKICAgICBFTGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5s
aXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMjI1LDcgKzEyMjUsNyBA
QCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBz
ZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIENpcmNsZToKLSAg
ICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNxdWFyZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDM0YjU1ZjI5MjNkOTFhY2NkYjQx
MjJlMTUwZGZkYWUyZDA3ZGFmMTIuLjg0ZDQ0YjEyNTI0ZDQ0MmViMDUwN2Q2ODEzY2NmZjgyOTQ5
MjcyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgaWYgKGRyYXdT
ZWxlY3Rpb25UaW50KSB7CiAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUGFpbnRpbmdSZWN0
ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbGVjdGlvblBhaW50aW5nUmVjdC5t
b3ZlQnkoYWRqdXN0ZWRQYWludE9mZnNldCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUGFpbnRpbmdSZWN0KSwgc2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rpb25QYWludGluZ1Jl
Y3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCBhZjk2
MTE4MGFkZWUxNWVkYWQyYmE3YjZmOWZmMmRjMzhhOGM2ODg2Li41NGZlYTBjMTZlZThjMjk1MDkz
NTY0NDY2YjkwNmJiN2Y0MDAxZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFNjcm9sbGJhcgogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxDb3Ju
ZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYg
Y29ybmVyUmVjdCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIGNvbnRleHQuZmls
bFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSk7CiB9CiAKIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggZWM0MmM2
MmM4MTI3Y2VkMzhlNTYxNjg0ZDg3ZThiNTA5ZjE5YjNjNS4uZThiOGYwZmI0YmYzNWY3ODA2YTU1
NTU5ZmYxZjViZjFjYjdjNDdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG8KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAg
IG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5p
bWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdl
LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgY29u
dGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
b3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogQ3Vy
c29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMWFhZjM2OTBlZTliN2RmMTc3YzEw
NzE3YmY5MThmZTIzMTU5ODA5YS4uZTVhODVjZjE0YWMyY2YwZjZkMTkxMTYzYzE0YjQ2ZGJmMGM3
MGJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xMDM2
LDcgKzEwMzYsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgIH0KICAgICBSZWY8SFRN
TENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKLSAgICBw
YWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBOb2RlKiBu
b2RlID0gb3B0aW9ucy0+aXRlbShpKTsgaSsrKSB7CiAgICAgICAgIEFTU0VSVChpczxIVE1MT3B0
aW9uRWxlbWVudD4oKm5vZGUpKTsKICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbkVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDFiZjIwNTI1ZWUwY2MzNDAzOTgz
ODI1MDdlODkzNmFkNTU0NDE0OGMuLjBkNWI1ZWY2ODhlMjRlMzEzZGU2MDk4ZGMzYWRiNzYxOTAw
ZjE0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAg
LTE2MCwxMyArMTYwLDEzIEBAIHN0YXRpYyBDR0Z1bmN0aW9uUmVmIGdldFNoYXJlZEZ1bmN0aW9u
UmVmKElPU0dyYWRpZW50UmVmIGdyYWRpZW50LCBJbnRlcnBvbGF0aW9uCiAKIHN0YXRpYyB2b2lk
IGRyYXdBeGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBJT1NHcmFkaWVudFJlZiBn
cmFkaWVudCwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgY29uc3QgRmxvYXRQb2ludCYg
c3RvcFBvaW50LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCiB7Ci0gICAgUmV0YWluUHRy
PENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoZGV2
aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdG9wUG9pbnQsIGdldFNoYXJlZEZ1
bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZhbHNlKSk7CisgICAg
UmV0YWluUHRyPENHU2hhZGluZ1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRl
QXhpYWwoc1JHQkNvbG9yU3BhY2VSZWYoKSwgc3RhcnRQb2ludCwgc3RvcFBvaW50LCBnZXRTaGFy
ZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiksIGZhbHNlLCBmYWxzZSkpOwog
ICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHNoYWRpbmcuZ2V0KCkpOwogfQogCiBz
dGF0aWMgdm9pZCBkcmF3UmFkaWFsR3JhZGllbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElPU0dy
YWRpZW50UmVmIGdyYWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBmbG9hdCBz
dGFydFJhZGl1cywgY29uc3QgRmxvYXRQb2ludCYgc3RvcFBvaW50LCBmbG9hdCBzdG9wUmFkaXVz
LCBJbnRlcnBvbGF0aW9uIGludGVycG9sYXRpb24pCiB7Ci0gICAgUmV0YWluUHRyPENHU2hhZGlu
Z1JlZj4gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlUmFkaWFsKGRldmljZVJHQkNv
bG9yU3BhY2VSZWYoKSwgc3RhcnRQb2ludCwgc3RhcnRSYWRpdXMsIHN0b3BQb2ludCwgc3RvcFJh
ZGl1cywgZ2V0U2hhcmVkRnVuY3Rpb25SZWYoZ3JhZGllbnQsIGludGVycG9sYXRpb24pLCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpIC8qIEZJWE1F
ICovLCBzdGFydFBvaW50LCBzdGFydFJhZGl1cywgc3RvcFBvaW50LCBzdG9wUmFkaXVzLCBnZXRT
aGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiksIGZhbHNlLCBmYWxzZSkp
OwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHNoYWRpbmcuZ2V0KCkpOwogfQog
CkBAIC0zOTIsMTIgKzM5MiwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94
RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaQogICAgICAgICB9
OwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVX
aWR0aCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuN2YpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdKb2luZWRMaW5lcyhz
aGFkb3csIDMsIHRydWUsIGtDR0xpbmVDYXBTcXVhcmUpOwogCiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6bWluKGNsaXAud2lkdGgoKSwgY2xpcC5o
ZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8gMjU1LjBmKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8gMjU1LjBmKSk7CiAKICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMobGluZSwgMywgdHJ1ZSk7CiAgICAg
fSBlbHNlIHsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFJh
ZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SQogICAg
ICAgICBjbGlwLmluZmxhdGVYKC1jbGlwLndpZHRoKCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAg
ICAgICAgIGNsaXAuaW5mbGF0ZVkoLWNsaXAuaGVpZ2h0KCkgKiBJbm5lckludmVyc2VSYXRpbyk7
CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShjbGlwLCBD
b2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxp
cHNlKGNsaXAsIENvbG9yOjp3aGl0ZSwgc2hhZG93Q29sb3IoKSk7CiAKICAgICAgICAgRmxvYXRT
aXplIHJhZGl1cyhjbGlwLndpZHRoKCkgLyAyLjBmLCBjbGlwLmhlaWdodCgpIC8gMi4wZik7CiAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CkBAIC02NDgsNyArNjQ4
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICAgICAgRmxvYXRTaXplKDAsIDAp
LCBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53
aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2YWx1ZUZv
ckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLmhlaWdodCgpLCByZWN0LmhlaWdo
dCgpKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpLAogICAgICAgICAgICAgRmxvYXRTaXplKDAs
IDApLCBGbG9hdFNpemUodmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRp
dXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCB2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCBy
ZWN0LmhlaWdodCgpKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpKSk7CiAKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChidXR0b25DbGlwLCBzdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QoYnV0dG9uQ2xpcCwgc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpKTsKIAog
ICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoaXNG
b2N1c2VkKGJveCkgJiYgIWlzUmVhZE9ubHlDb250cm9sKGJveCkgPyBDb25jYXZlR3JhZGllbnQg
OiBDb252ZXhHcmFkaWVudCksIGJ1dHRvbkNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChidXR0
b25DbGlwLngoKSwgYnV0dG9uQ2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAg
ICB9CkBAIC02NjMsNyArNjYzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBG
bG9hdFJlY3QgZWxsaXBzZShidXR0b25DbGlwLngoKSArIChidXR0b25DbGlwLndpZHRoKCkgLSBj
b3VudCAqIChzaXplICsgcGFkZGluZykgKyBwYWRkaW5nKSAvIDIuMCwgYnV0dG9uQ2xpcC5tYXhZ
KCkgLSAxMC4wLCBzaXplLCBzaXplKTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVs
bGlwc2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCAwLjVmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNlKGVsbGlwc2UsIENvbG9yOjp3
aGl0ZSwgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41ZikpOwogICAgICAgICAgICAgZWxsaXBz
ZS5tb3ZlKHNpemUgKyBwYWRkaW5nLCAwKTsKICAgICAgICAgfQogICAgIH0gIGVsc2UgewpAQCAt
NjgyLDEyICs2ODIsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBzaGFkb3db
Ml0gPSBGbG9hdFBvaW50KGFycm93WzJdLngoKSwgYXJyb3dbMl0ueSgpICsgMS4wZik7CiAKICAg
ICAgICAgZmxvYXQgb3BhY2l0eSA9IGlzUmVhZE9ubHlDb250cm9sKGJveCkgPyAwLjIgOiAwLjU7
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwg
MC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFj
aXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBm
LCBvcGFjaXR5KSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHln
b24oMywgc2hhZG93LCB0cnVlKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29s
b3I6OndoaXRlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Q29udmV4UG9seWdv
bigzLCBhcnJvdywgdHJ1ZSk7CiAgICAgfQogCkBAIC03NzIsOSArNzcyLDkgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29u
c3QgUGFpbnRJbmZvJgogCiAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICBpZiAocmVhZG9ubHkpCi0g
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDE3OCwg
MTc4LCAxNzgpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3OCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9y
KDc2LCA3NiwgNzYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoNzYsIDc2LCA3NikpOwogCiAgICAgICAg
IFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiByb3VuZGVkUmVjdFBhdGggPSBhZG9wdENGKENH
UGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgICAgIENHUGF0aEFkZFJvdW5kZWRSZWN0KHJvdW5k
ZWRSZWN0UGF0aC5nZXQoKSwgMCwgdHJhY2tDbGlwLCBjb3JuZXJXaWR0aCwgY29ybmVySGVpZ2h0
KTsKQEAgLTg1OSw4ICs4NTksNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNz
QmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7CiAg
ICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVs
bCgpKTsKIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHJlbmRlcmVyLnN0eWxlKCkuY29s
b3JTcGFjZSgpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUp
LCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwg
MjU1KSk7CiAKICAgICBQYXRoIHRyYWNrUGF0aDsKICAgICBGbG9hdFJlY3QgdHJhY2tSZWN0KHJl
Y3QueCgpICsgMC4yNSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuMjUsIHJlY3Qud2lk
dGgoKSAtIDAuNSwgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAwLjUpOwpAQCAtMTAyNCw4ICsxMDIzLDgg
QEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKIAogICAgICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1
cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGljb24gd2l0aCBhIGdyYWRpZW50IG1hdGNo
aW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJhY2tncm91bmRJbWFnZUNvbG9yID0gQ29s
b3IoYnV0dG9uUmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5m
aWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVy
ZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJT
aXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29s
b3IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHRodW1ibmFpbFJlY3Qs
IGJhY2tncm91bmRJbWFnZUNvbG9yKTsKICAgICAgICAgewogICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAg
ICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpOwpAQCAtMTA0NSw3ICsxMDQ0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFIKICAgICB9CiAKICAgICAvLyBGb3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIGljb24uCi0g
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0
aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJT
aXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yKTsKICAgICBpY29uLT5wYWlu
dChwYWludEluZm8uY29udGV4dCgpLCB0aHVtYm5haWxSZWN0KTsKIAogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA5MmFm
MGNmNWFjNWE4M2Y4MGI3NjEwN2U0NWZlZmY2NmVkY2FmM2JkLi43ZjhkYzI0MjE5MGY5ZTBkMDk2
MTUzMTNmOGIyMjY3YzliZWFlMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCkBAIC0xMTU2LDcgKzExNTYsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQ
YQogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgtMSwgMSkpOwog
ICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgaW5mbGF0
ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTMwMSw3ICsx
MzAxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRp
b25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGMKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwogCiAgICAgRmxvYXRQb2ludCBhcnJv
dzFbM107CkBAIC0xMzMwLDExICsxMzMwLDExIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAg
ICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKICAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsgLy8gRGVsaWJlcmF0ZWx5
IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBsb29rcyBuaWNlciBpZiBpdCBzdGF5cyB0aGluLgogICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9y
KGxlZnRTZXBhcmF0b3JDb2xvcik7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJ
bnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLm1h
eFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihyaWdodFNl
cGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IpOwogICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRv
clNwYWNlLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50
UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMubWF4WSgp
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkxNCw3ICsxOTE0LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFs
aWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0
ZVNvdXJjZU92ZXIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjE4NCw3ICsyMTg0LDcg
QEAgc3RhdGljIE5TQ29sb3IgKnRpdGxlVGV4dENvbG9yRm9yQXR0YWNobWVudChjb25zdCBSZW5k
ZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIGlmIChhdHRhY2htZW50LnNlbGVjdGlvblN0
YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgIGlmIChhdHRh
Y2htZW50LmZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yXTsg
ICAgCi0gICAgICAgIHJldHVybiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNobWVudFRp
dGxlSW5hY3RpdmVUZXh0Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHJl
dHVybiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNobWVudFRpdGxlSW5hY3RpdmVUZXh0
Q29sb3IoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFtOU0NvbG9yIGJsYWNrQ29sb3JdOwpAQCAt
MjI5NCw3ICsyMjk0LDcgQEAgdm9pZCBBdHRhY2htZW50TGF5b3V0OjpsYXlPdXRTdWJ0aXRsZShj
b25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIFJldGFpblB0cjxDVEZvbnRS
ZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJRm9udEZvckxhbmd1YWdlKGtDVEZvbnRV
SUZvbnRTeXN0ZW0sIGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnRTaXplLCBsYW5ndWFnZSkpOwogICAg
IE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAewogICAgICAgICAoaWQpa0NURm9udEF0
dHJpYnV0ZU5hbWU6IChpZClmb250LmdldCgpLAotICAgICAgICAoaWQpa0NURm9yZWdyb3VuZENv
bG9yQXR0cmlidXRlTmFtZTogKE5TQ29sb3IgKiljYWNoZWRDR0NvbG9yKGF0dGFjaG1lbnRTdWJ0
aXRsZVRleHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKQorICAgICAgICAoaWQpa0NURm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTogKE5TQ29sb3IgKiljYWNoZWRDR0NvbG9yKGF0dGFj
aG1lbnRTdWJ0aXRsZVRleHRDb2xvcigpKQogICAgIH07CiAgICAgUmV0YWluUHRyPE5TQXR0cmli
dXRlZFN0cmluZz4gYXR0cmlidXRlZFN1YnRpdGxlVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnN1YnRpdGxlVGV4dCBhdHRyaWJ1dGVzOnRl
eHRBdHRyaWJ1dGVzXSk7CiAgICAgc3VidGl0bGVMaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVX
aXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRTdWJ0
aXRsZVRleHQuZ2V0KCkpKTsKQEAgLTIzNTUsNyArMjM1NSw3IEBAIHN0YXRpYyB2b2lkIHBhaW50
QXR0YWNobWVudEljb25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmLCBHcmFwaGlj
c0NvbnRlCiAgICAgaWYgKHBhaW50Qm9yZGVyKQogICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbmZs
YXRlKC1hdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcmRlclRoaWNrbmVzcyk7CiAKLSAgICBjb250
ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0LCBGbG9h
dFJvdW5kZWRSZWN0OjpSYWRpaShhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRpdXMpKSwgYXR0
YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdCwg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkoYXR0YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVzKSks
IGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZENvbG9yKCkpOwogCiAgICAgaWYgKHBhaW50Qm9yZGVy
KSB7CiAgICAgICAgIEZsb2F0UmVjdCBib3JkZXJSZWN0ID0gbGF5b3V0Lmljb25CYWNrZ3JvdW5k
UmVjdDsKQEAgLTIzNjQsNyArMjM2NCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudElj
b25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmLCBHcmFwaGljc0NvbnRlCiAgICAg
ICAgIEZsb2F0U2l6ZSBpY29uQmFja2dyb3VuZFJhZGl1c1NpemUoYXR0YWNobWVudEljb25CYWNr
Z3JvdW5kUmFkaXVzLCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRpdXMpOwogICAgICAgICBQ
YXRoIGJvcmRlclBhdGg7CiAgICAgICAgIGJvcmRlclBhdGguYWRkUm91bmRlZFJlY3QoYm9yZGVy
UmVjdCwgaWNvbkJhY2tncm91bmRSYWRpdXNTaXplKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcihhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRJY29uQm9yZGVyQ29s
b3IoKSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGF0dGFjaG1lbnRJY29u
U2VsZWN0aW9uQm9yZGVyVGhpY2tuZXNzKTsKICAgICAgICAgY29udGV4dC5zdHJva2VQYXRoKGJv
cmRlclBhdGgpOwogICAgIH0KQEAgLTIzOTcsNyArMjM5Nyw3IEBAIHN0YXRpYyB2b2lkIHBhaW50
QXR0YWNobWVudFRpdGxlQmFja2dyb3VuZChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2ht
ZW50LCBHCiAgICAgZWxzZQogICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhdHRhY2htZW50VGl0
bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xvcigpOwogCi0gICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
YmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgUGF0aCBiYWNrZ3JvdW5kUGF0aCA9IFBh
dGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKGJhY2tncm91bmRSZWN0cywg
YXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFJhZGl1cyk7CiAgICAgY29udGV4dC5maWxsUGF0aChi
YWNrZ3JvdW5kUGF0aCk7CkBAIC0yNDQ3LDcgKzI0NDcsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0
dGFjaG1lbnRQcm9ncmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFw
aGljcwogICAgIGJhY2tncm91bmRSZWN0LmluZmxhdGUoLWF0dGFjaG1lbnRQcm9ncmVzc0JhckJv
cmRlcldpZHRoIC8gMik7CiAKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJhY2tncm91bmRSb3VuZGVk
UmVjdChiYWNrZ3JvdW5kUmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkoYmFja2dyb3VuZFJl
Y3QuaGVpZ2h0KCkgLyAyKSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoYmFja2dyb3Vu
ZFJvdW5kZWRSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IoKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoYmFja2dyb3Vu
ZFJvdW5kZWRSZWN0LCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IoKSk7CiAK
ICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgY2xpcFNhdmVyKGNvbnRl
eHQpOwpAQCAtMjQ1NywxMyArMjQ1NywxMyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQ
cm9ncmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljcwogICAg
ICAgICBwcm9ncmVzc1JlY3Quc2V0V2lkdGgocHJvZ3Jlc3NSZWN0LndpZHRoKCkgKiBwcm9ncmVz
cyk7CiAgICAgICAgIHByb2dyZXNzUmVjdCA9IGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHMocHJv
Z3Jlc3NSZWN0LCBhdHRhY2htZW50LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAK
LSAgICAgICAgY29udGV4dC5maWxsUmVjdChwcm9ncmVzc1JlY3QsIGF0dGFjaG1lbnRQcm9ncmVz
c0JhckZpbGxDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5m
aWxsUmVjdChwcm9ncmVzc1JlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0JhckZpbGxDb2xvcigpKTsK
ICAgICB9CiAKICAgICBQYXRoIGJvcmRlclBhdGg7CiAgICAgZmxvYXQgYm9yZGVyUmFkaXVzID0g
Ym9yZGVyUmVjdC5oZWlnaHQoKSAvIDI7CiAgICAgYm9yZGVyUGF0aC5hZGRSb3VuZGVkUmVjdChi
b3JkZXJSZWN0LCBGbG9hdFNpemUoYm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXMpKTsKLSAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYXR0YWNo
bWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IoKSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGgpOwogICAgIGNvbnRleHQuc3Ry
b2tlUGF0aChib3JkZXJQYXRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCA5MDI5NWNiMWFjOTVlNDA5YzQ0OWY5MDk1YjkzZmQ4NmU0ZDcxZDU3Li4yZDE1
NGRlMjE0MDc0ZTg5MjBjOTY2MjVhYzdhMmNhYzFkYmI0NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogCiAgICAgLy8gVGhpcyBhdm9pZHMgcGFpbnRpbmcgZ2FyYmFnZSBiZXR3ZWVuIGNvbHVt
bnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4gZ2FwLgogICAgIGlmIChmcmFtZVZpZXcoKS5wYWdpbmF0
aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCAmJiBwYWludEluZm8uc2hvdWxk
UGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxs
UmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVj
dChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpKTsKIAog
ICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQpAQCAtNjEwLDcgKzYx
MCw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9y
LmFscGhhKCkpIHsKICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0
b3IgPSBwYWludEluZm8uY29udGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlvbigpOwogICAgICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29w
eSk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHBhaW50SW5mby5y
ZWN0LCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJbmZvLnJlY3QsIGJhY2tncm91bmRD
b2xvcik7CiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJh
dGlvbihwcmV2aW91c09wZXJhdG9yKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLmNsZWFyUmVjdChwYWludEluZm8ucmVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDQ1NDFlOTBjOGYwNGM4ZGU3NzM4ZGYw
ZWJlMDVlYWM1N2ZkNWI3MTYuLmNjOWI4Y2U0MmM0OTcxNTEzMTc0YmI4ZTkwYjQ1NmJlMDRjZmVl
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0yOTAs
NyArMjkwLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFs
bHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2Vs
ZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmludGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBz
ZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4K
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxl
Y3Rpb25SZWN0KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRS
ZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICB9
CiAKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5jYW5SZXNpemUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCBjZmRhNWNmYmQ0ODQ4YzVk
NTRkZjE5ODc1NDVhMWI4MzhlYTFjMzY2Li5jOTE4YTZjMTg1ZGU4NTk4MmRiY2MxMmMyZTk0ZWEy
YTFjZjZkOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
CkBAIC00NzcsNyArNDc3LDcgQEAgR2FwUmVjdHMgUm9vdElubGluZUJveDo6bGluZVNlbGVjdGlv
bkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2kKICAgICAgICAgICAg
ICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2Fs
UmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBsb2dpY2FsUmVjdCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGlzUHJldmlvdXNCb3hTZWxlY3RlZCAmJiBnYXBSZWN0LndpZHRoKCkgPiAwICYm
IGdhcFJlY3QuaGVpZ2h0KCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYWludElu
Zm8gJiYgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
SVNJQkxFKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmls
bFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVj
dChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbiBtYXkgYmUg
bm9uLWNvbnRpZ3VvdXMsIHNlZSBjb21tZW50IGFib3ZlLgogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQudW5pdGVDZW50ZXIoZ2FwUmVjdCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
CmluZGV4IDY1NmM3ZDQyOWIxODg4YjIxNmE4M2VhN2Q1NTU5N2ZjOGI0YjdjN2MuLjMyMmMxYjJl
OTUyZDI2NTkzYWRlYzJmN2U3MzhmYzVhOGZlZjJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTU3LDgg
KzU3LDggQEAgc3RhdGljIHZvaWQgcGFpbnREZWJ1Z0JvcmRlcnMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBMYXlvdXRSZWN0IGJvcmRlclJlY3QsIGMKICAgICBpZiAoc25hcHBlZFJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwg
MjU1LCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwcGVkUmVjdCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCmluZGV4
IDIyMjZlY2RmNjllNTNiYmY2YmM4OWRlOWRiZWJjNzM2MDM5NTZhMzEuLmUxZGViYmI3ZGM0NWRk
OWNhMjNkNjM2Y2NlODU4ZTNjNDI0YmI3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmNwcApAQCAtMzksMjcgKzM5LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotVGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKLSAgICA6IGNvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAsIHN0cm9rZVdpZHRoKDAp
Ci0jaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgICwgdXNlTGV0dGVycHJlc3NFZmZlY3QoZmFs
c2UpCi0jZW5kaWYKLXsKLX0KLQotVGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKENvbG9y
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgOiBjb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpCi0gICAgLCBmaWxsQ29sb3IoY29sb3IpCitUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5
bGUoY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIDogZmlsbENvbG9yKGNvbG9yKQogICAgICwgc3Ry
b2tlQ29sb3IoY29sb3IpCi0gICAgLCBzdHJva2VXaWR0aCgwKQotI2lmIEVOQUJMRShMRVRURVJQ
UkVTUykKLSAgICAsIHVzZUxldHRlcnByZXNzRWZmZWN0KGZhbHNlKQotI2VuZGlmCiB7CiB9CiAK
LXN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlPbkJhY2tncm91bmQoQ29sb3Ig
dGV4dENvbG9yLCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IpCitzdGF0aWMgQ29sb3IgYWRqdXN0Q29s
b3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0
IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAgICAgaW50IGQgPSBkaWZmZXJlbmNlU3F1YXJl
ZCh0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvcik7CiAgICAgLy8gU2VtaS1hcmJpdHJhcmlseSBj
aG9zZSA2NTAyNSAoMjU1XjIpIHZhbHVlIGhlcmUgYWZ0ZXIgYSBmZXcgdGVzdHMuCkBAIC03Niw3
ICs2Miw3IEBAIHN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlPbkJhY2tncm91
bmQoQ29sb3IgdGV4dENvbG9yLCBDb2xvciBiYWNrZ3JvCiAKIFRleHRQYWludFN0eWxlIGNvbXB1
dGVUZXh0UGFpbnRTdHlsZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlbmRlclN0eWxlJiBs
aW5lU3R5bGUsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewotICAgIFRleHRQYWludFN0
eWxlIHBhaW50U3R5bGUobGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgVGV4dFBhaW50U3R5
bGUgcGFpbnRTdHlsZTsKIAogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKICAgICBwYWludFN0eWxl
LnVzZUxldHRlcnByZXNzRWZmZWN0ID0gbGluZVN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCkgJiBUZXh0RGVjb3JhdGlvbkxldHRlcnByZXNzOwpAQCAtMTk4LDEyICsxODQsMTIgQEAgdm9p
ZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UGFpbnRTdHlsZSYgcGFpbnQKICAgICB9CiAKICAgICBDb2xvciBmaWxsQ29sb3IgPSBmaWxs
Q29sb3JUeXBlID09IFVzZUVtcGhhc2lzTWFya0NvbG9yID8gcGFpbnRTdHlsZS5lbXBoYXNpc01h
cmtDb2xvciA6IHBhaW50U3R5bGUuZmlsbENvbG9yOwotICAgIGlmIChtb2RlICYgVGV4dE1vZGVG
aWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSB8fCBwYWludFN0eWxlLmNv
bG9yU3BhY2UgIT0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpKSkKLSAgICAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBwYWludFN0eWxlLmNvbG9yU3BhY2UpOworICAgIGlmICht
b2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkp
CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7CiAKICAgICBpZiAobW9k
ZSAmIFRleHRNb2RlU3Ryb2tlKSB7CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZUNvbG9y
ICE9IGNvbnRleHQuc3Ryb2tlQ29sb3IoKSkKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IocGFpbnRTdHlsZS5zdHJva2VDb2xvciwgcGFpbnRTdHlsZS5jb2xvclNwYWNlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRTdHlsZS5zdHJva2VDb2xvcik7
CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRoICE9IGNvbnRleHQuc3Ryb2tlVGhp
Y2tuZXNzKCkpCiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhwYWludFN0
eWxlLnN0cm9rZVdpZHRoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5oCmluZGV4IDk5NGU0NWRjZjRlOGE0ODk4ODRjZGNiYzIzYjFjMjA2YjcwYTk4MDYu
LmYwY2JlYmI5Zjg0N2M1YTU3ZTY4YTAxNTRmZDQ0NzBkNmFhYWQ2ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0zOSwxNiArMzksMTUgQEAgY2xhc3Mg
U2hhZG93RGF0YTsKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0UGFpbnRTdHlsZSB7
Ci0gICAgVGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSk7Ci0gICAgVGV4dFBhaW50U3R5bGUoQ29s
b3IsIENvbG9yU3BhY2UpOworICAgIFRleHRQYWludFN0eWxlKCkgeyB9CisgICAgVGV4dFBhaW50
U3R5bGUoY29uc3QgQ29sb3ImKTsKIAotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKICAgICBD
b2xvciBmaWxsQ29sb3I7CiAgICAgQ29sb3Igc3Ryb2tlQ29sb3I7CiAgICAgQ29sb3IgZW1waGFz
aXNNYXJrQ29sb3I7Ci0gICAgZmxvYXQgc3Ryb2tlV2lkdGg7CisgICAgZmxvYXQgc3Ryb2tlV2lk
dGggeyAwIH07CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgIGJvb2wgdXNlTGV0dGVycHJl
c3NFZmZlY3Q7CisgICAgYm9vbCB1c2VMZXR0ZXJwcmVzc0VmZmVjdCB7IGZhbHNlIH07CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IGU0
Mjg2YzA0MTAzY2NiNzliNGU2ZTY2YjdiYmI1NDI2ZmMyZDY4NzMuLmVjMjMwMmNjZWVlNjFiNjM0
M2UxNjQ5ZjdmMjY2YWRiZTU0ZTg3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFNoYWRvd0FwcGxpZXI6OlNoYWRvd0FwcGxp
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csCiAg
ICAgfQogCiAgICAgaWYgKCFtX2F2b2lkRHJhd2luZ1NoYWRvdykKLSAgICAgICAgY29udGV4dC5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBjb250ZXh0
LmZpbGxDb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogfQogCiBTaGFkb3dBcHBsaWVyOjp+U2hh
ZG93QXBwbGllcigpCkBAIC0xMTgsMTEgKzExOCwxMCBAQCBzdGF0aWMgdm9pZCBwYWludFRleHRX
aXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBm
bwogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgYm9vbCBzdHJva2VkLCBib29sIGhvcml6
b250YWwpCiB7CiAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKLSAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwog
ICAgIGJvb2wgb3BhcXVlID0gIWZpbGxDb2xvci5oYXNBbHBoYSgpOwogICAgIGJvb2wgbGFzdFNo
YWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0ID0gIXN0cm9rZWQgJiYgb3BhcXVlOwogICAgIGlm
ICghb3BhcXVlKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIGZp
bGxDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
KTsKIAogICAgIGRvIHsKICAgICAgICAgU2hhZG93QXBwbGllciBzaGFkb3dBcHBsaWVyKGNvbnRl
eHQsIHNoYWRvdywgYm94UmVjdCwgbGFzdFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0LCBv
cGFxdWUsIGhvcml6b250YWwgPyBIb3Jpem9udGFsIDogVmVydGljYWwpOwpAQCAtMTMzLDcgKzEz
Miw3IEBAIHN0YXRpYyB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvCiAKICAgICAgICAgSW50U2l6ZSBleHRyYU9m
ZnNldCA9IHJvdW5kZWRJbnRTaXplKHNoYWRvd0FwcGxpZXIuZXh0cmFPZmZzZXQoKSk7CiAgICAg
ICAgIGlmICghc2hhZG93ICYmICFvcGFxdWUpCi0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZpbGxDb2xvcik7CiAKICAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDw9IGVuZE9m
ZnNldCkKICAgICAgICAgICAgIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnRleHQsIGZvbnQs
IHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luICsg
ZXh0cmFPZmZzZXQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCBiNmRl
NzllOGIyNDY1OTlmZDJhNDU5MjRjNzY5NGEyMTdhODhiMTk3Li45MGM1OWNlOTU0MTAxMzNkYzVh
OTlkYWUxMTk4ZjE1YzY1Zjk5NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIAogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRo
aWNrbmVzcygxLjBmKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1
KSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENv
bG9yKDAsIDAsIDI1NSkpOwogICAgIAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVz
dGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKTsKICAgICBpbmZv
LmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBp
eGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSwgSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBh
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7CkBA
IC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAKICAgICBpbnQg
dG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29u
dGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCkpOwogICAgIAogICAgIGluZm8u
Y29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1
c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9m
ZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0
LnkoKSArIHRvcFN0YXJ0KSk7CiAgICAgCiAgICAgaW50IGJhc2VsaW5lID0gcm91bmRUb0ludChi
YXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUp
KTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAs
IDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Io
Q29sb3IoMjU1LCAwLCAwKSk7CiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsg
YmFzZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBl
ZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAKaW5kZXggNTE5YmIzODg4OTYzMjY1Mzg1Njk2ODI4ZWEwYzZiN2YwNjVk
MmQ3Yi4uOTJlMjE4MjUwNTE4OTdjMWRjYjhhYmNmODEzNmJhYzA5OGRkM2Q2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpw
YWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAg
IAogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhtX2xpbmVUaGlja25lc3Mp
OwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBp
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Q29sb3IpKTsKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0
LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBk
ZW5vbWluYXRvcldyYXBwZXItPm9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
KSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IGI4NmUzNjI5YTZiNzhlNDA0YTVmYmFkZTQ0
NzhkMmU0NzQ1NDc2OTEuLmU5ZTUzNGM0M2Q1NDdmZWJkM2JlYmI2MzM3OWIwMWNkZWY5NjJhN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxN
ZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8u
Y29udGV4dCgpKTsKICAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEp
OwogICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgICAgICAvLyBUT0RPIGFkZCBzdXBwb3J0IGZv
ciBub3RhdGlvbiB2YWx1ZSB1cGRpYWdvbmFsYXJyb3cgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNzQ2NgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5v
dGF0aW9uYWxWYWx1ZVNpemU7IGkrKykgewogICAgICAgICAgICAgaWYgKG5vdGF0aW9uVmFsdWVz
W2ldID09ICJ1cGRpYWdvbmFsc3RyaWtlIikKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldAogICAgICAgICAgICAgZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0g
Imhvcml6b250YWxzdHJpa2UiKQogICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsg
Ym94V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5v
dGF0aW9uVmFsdWVzW2ldID09ICJjaXJjbGUiKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5jb250
ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CiAgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0VsbGlwc2Uo
cmVjdCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJsb25n
ZGl2IikKICAgICAgICAgICAgICAgICBpc0RlZmF1bHRMb25nRGl2ID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHAKaW5kZXggM2NmZWIyMWNhOGQyNTdmM2VmZTUwYWExZTljZGMxN2U0OTIyYzFhYy4uNjYw
MjEwZjM0Y2Y2MGNjYmY3NzZmNTFiZDAwZjEzNjdkYmNiZWZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAK
QEAgLTE4ODksNyArMTg4OSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNv
bnRleHQoKSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgaW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKIAogICAgIGlmIChtX3N0cmV0Y2h5RGF0YS5tb2Rl
KCkgPT0gRHJhd1NpemVWYXJpYW50KSB7CiAgICAgICAgIEFTU0VSVChtX3N0cmV0Y2h5RGF0YS52
YXJpYW50KCkuZ2x5cGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCmluZGV4IDY5MjVh
NzlkNTU5ZDYxYmVkZDk0Y2M4NWQ3ZDA3ZTc0MjM0ZTliYjUuLjE4MDgyOWRmMDkxMDc0NDNiNzEx
ZTY1MGY0NDJiNGVkMjgyOWI5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6cGFpbnQo
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogCiAgICAgaW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsTGluZVRoaWNrbmVzc0VtcyAqIHN0eWxl
KCkuZm9udFNpemUoKSk7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRT
dHJva2UpOwotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0TGluZUpv
aW4oTWl0ZXJKb2luKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRNaXRlckxpbWl0KHN0eWxlKCku
Zm9udFNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IGFjNGExNWRkODRhNDkzNDQyZjM0NTljNWE0NTAy
MTMxNGEwMTc1ZTYuLmMyNDNkMjBlOGE3YjJhMDg3N2Q1MDkzMTMxZTRmOGJlMjgwOWFjNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b290LmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQo
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAKICAgICBp
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9ydWxlVGhpY2tuZXNzKTsKICAgICBp
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNl
dFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpKTsKIAogICAgIC8vIFRoZSBwcmVmZXJyZWQgd2lkdGggb2YgdGhlIHJhZGljYWwgaXMgc29t
ZXRpbWVzIGluY29ycmVjdCwgc28gd2UgZHJhdyBhIHNsaWdodGx5IGxvbmdlciBsaW5lIHRvIGVu
c3VyZSBpdCB0b3VjaGVzIHRoZSByYWRpY2FsIHN5bWJvbCAoaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMDMyNikuCiAgICAgTGF5b3V0VW5pdCBzaXplRXJyb3IgPSBy
YWRpY2FsLT50cmFpbGluZ1NwYWNlRXJyb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKaW5kZXggZTBjYWVhYzljZDgwMWExYjhiNzMwYjhmNGI5ZDdhNmQ3MTdl
YmFhZC4uZmNjOGI3YTg4OTM1NGMyMmE1NjBkZDlhMjlmYjgxZWE2M2I5NzI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1h
Z2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7
CiAgICAgICAgIGlmIChpbWFnZSkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdl
UmVjdC5zaXplKCkpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmlt
YWdlLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAogICAgICAgICBS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1ZmZlci0+Z2V0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkp
OwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3Ro
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdl
LmNwcAppbmRleCBjOTM5YWU3NWQxZGZiYjkzYzIwMGQ5NDBjYTZkNGEyOWE3NmE2YmQwLi41ZGVk
YjU1NjJiODM0MWE3YWU2NzU5OTM4NmQwYjkxMGY4ZWMzMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTIwOSwyMCArMjA5
LDE4IEBAIHZvaWQgTmluZVBpZWNlSW1hZ2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBSZW5kZXJFbGVtZW50KiByZW5kCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUuY29sb3JTcGFjZSgp
OwotCiAgICAgZm9yIChJbWFnZVBpZWNlIHBpZWNlID0gTWluUGllY2U7IHBpZWNlIDwgTWF4UGll
Y2U7ICsrcGllY2UpIHsKICAgICAgICAgaWYgKChwaWVjZSA9PSBNaWRkbGVQaWVjZSAmJiAhZmls
bCgpKSB8fCBpc0VtcHR5UGllY2VSZWN0KHBpZWNlLCBkZXN0aW5hdGlvblJlY3RzLCBzb3VyY2VS
ZWN0cykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoaXNDb3JuZXJQaWVj
ZShwaWVjZSkpIHsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdl
LCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2Vd
LCBvcCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVz
dGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3ApOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUg
PSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFnZTo6VGlsZVJ1bGU+
KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwogICAgICAgICBJbWFnZTo6
VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1h
Z2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGNvbG9yU3BhY2UsIGRl
c3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIHRpbGVTY2FsZXNbcGll
Y2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxl
ZEltYWdlKCppbWFnZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNl
XSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAyYjY0NTA3
NzY3MDg2ODgyMGNjZTk3ZjAwNGE1NDU1OTcyZjBlYjI3Li5iZjFjMjE5MDJkMmY0ZjA3NDBlNjdj
ZGUxZTE0Mzc2ZmIzNjAwOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaApAQCAtOTAyLDcgKzkwMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRl
eHRTaGFkb3dCbG9ja0RpcmVjdGlvbkV4dGVudChMYXlvdXRVbml0JiBsb2dpY2FsVG9wLCBMYXlv
dXRVbml0JiBsb2dpY2FsQm90dG9tKSBjb25zdCB7IGdldFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0
ZW50KHRleHRTaGFkb3coKSwgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7IH0KIAogICAgIGZs
b2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0U3Ryb2tlV2lkdGg7IH0KLSAgICBzdGF0aWMgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgeyBy
ZXR1cm4gQ29sb3JTcGFjZVNSR0I7IH0gLy8gRklYTUU6IFJlbW92ZSBhZnRlciBhZGRpbmcgY29s
b3Igc3BhY2UgaGFuZGxpbmcgaW50byB0aGUgQ29sb3IgY2xhc3MuCiAgICAgZmxvYXQgb3BhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5OyB9CiAgICAg
Q29udHJvbFBhcnQgYXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRy
b2xQYXJ0PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlKTsgfQogICAgIEFzcGVj
dFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxB
c3BlY3RSYXRpb1R5cGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvVHlwZSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAK
aW5kZXggZWY3NTdlNzM2M2YzNDhkYmRmZmE1MmZjY2RlOGFkMmNjMDJiNzM1Ni4uZWE0MDIwNzI5
MDdkNjQ4YWMzOGQ1MWFhNjVjM2I1MGNhMDViMTliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lk
IFJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiAK
ICAgICBpbWFnZUVsZW1lbnQoKS5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJhbnNmb3JtUmVjdChk
ZXN0UmVjdCwgc3JjUmVjdCk7CiAKLSAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0K
IAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAppbmRleCAx
ZDAxM2FkN2MxZTBlOGM0MDE0MDA4NjhhMjcyNTkzYWJhY2EyZDA1Li4yOTRjYjQ2MjNkZDc4MTNk
YjY3ODgzNzVmZDZlYTI2ZDNiZDY1ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgdXNl
U3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGVsc2UgaWYg
KFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgY29u
dGV4dC5zZXRGaWxsUGF0dGVybigqcGF0dGVybik7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0
LnNldEZpbGxDb2xvcihjb250ZXh0LnN0cm9rZUNvbG9yKCksIGNvbnRleHQuc3Ryb2tlQ29sb3JT
cGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29udGV4dC5zdHJva2VDb2xv
cigpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDRmM2JkNzg4MjdjNTYyMGQx
NWI3NjI3ZjI2ZjY1ZWE0YTcwY2YxYTMuLjE2YWVkYjczMjY2ZGJmZmY3Yzk5M2FmYjlmNThhZGQ4
N2Q2N2Q2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRh
LT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwogCiAgICAgICAgICAgICBj
b250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVz
b2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRp
b24oKS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpy
ZXN1bHRJbWFnZSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCksIGxhc3RFZmZlY3QtPmFi
c29sdXRlUGFpbnRSZWN0KCkpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVy
KCpyZXN1bHRJbWFnZSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24o
KSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKaW5kZXggZmI4OGZj
OGI0YjI4Yjc4NTlkZDhmMjE1YjkwMjUxZDdlMGQyODNlNy4uNGIyMGRhNThmOWU1YzNlYzkwNWY5
ZWEzNmNmMzhkZjZkNzYzY2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcApAQCAtNDIsNyAr
NDIsNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlSZXNvdXJjZShS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUgogICAgIEFTU0VSVChyZXNvdXJjZU1vZGUg
IT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdT
dHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5
bGUuY29sb3JTcGFjZSgpOwogCiAgICAgYm9vbCBpc1JlbmRlcmluZ01hc2sgPSByZW5kZXJlci52
aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvclJlbmRlcmlu
Z1NWR01hc2s7CiAKQEAgLTUxLDcgKzUwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlk
Q29sb3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFIKICAg
ICAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlLmZpbGxPcGFjaXR5KCkpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRBbHBoYSgxKTsKLSAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKG1fY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0
LT5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgICAgIGlmICghaXNSZW5kZXJpbmdNYXNrKQog
ICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoc3ZnU3R5bGUuZmlsbFJ1bGUoKSk7CiAK
QEAgLTYxLDcgKzYwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFIKICAgICAgICAgLy8gV2hl
biByZW5kZXJpbmcgdGhlIG1hc2sgZm9yIGEgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLCB0aGUg
c3Ryb2tlIGNvZGUgcGF0aCBpcyBuZXZlciBoaXQuCiAgICAgICAgIEFTU0VSVCghaXNSZW5kZXJp
bmdNYXNrKTsKICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3ZnU3R5bGUuc3Ryb2tlT3BhY2l0
eSgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jb2xvciwgY29sb3JTcGFj
ZSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fY29sb3IpOwogCiAgICAgICAg
IFNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgc3R5
bGUsIHJlbmRlcmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAKaW5kZXggNjlmMjk2MDZjNmNjZjEwNDBkNWEwOWEzNWZkM2IyNDNj
ODk2NmY2OC4uNmU1ZGYzMDNlMjJkMDg4YzYxZmEyZjMwMGRkNDVhMzM0ZGQ1OWM2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBA
IC0yMjUsOCArMjI1LDggQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbkJh
Y2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgICAgIGlmICghZnJhZ21lbnRUcmFu
c2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jb25j
YXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdt
ZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdtZW50RW5kUG9zaXRpb24s
ICZzdHlsZSksIGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKKyAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdt
ZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdtZW50RW5kUG9zaXRpb24s
ICZzdHlsZSksIGJhY2tncm91bmRDb2xvcik7CiAKICAgICAgICAgbV9wYWludGluZ1Jlc291cmNl
TW9kZSA9IEFwcGx5VG9EZWZhdWx0TW9kZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkMDJlZTUwYmQ2
Y2EzN2U2MGE1MmVkNGY2ODA0NmVmZjkwODFhOGJjLi42Yzk5MDU1MmY4MWNhMTQ5MDA4NzkxODhj
MTYxNGUxN2YxM2M1MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIFBhaQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNoYWRvdykgewotICAgICAg
ICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zZXRTaGFkb3coSW50U2l6ZShyb3VuZFRvSW50
KHNoYWRvdy0+eCgpKSwgcm91bmRUb0ludChzaGFkb3ctPnkoKSkpLCBzaGFkb3ctPnJhZGl1cygp
LCBzaGFkb3ctPmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBtX3Bh
aW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJvdW5kVG9JbnQoc2hhZG93LT54
KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+cmFkaXVzKCksIHNoYWRvdy0+
Y29sb3IoKSk7CiAgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IEVuZFNoYWRv
d0xheWVyOwogICAgICAgICB9CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdD
b250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGlt
YWdlQnUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhaW50SW5m
by0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJvdW5kaW5nQm94KTsKKyAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGJvdW5kaW5nQm94KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCmluZGV4IGRlOGEyMmJhZDJi
NWFjN2ZlOTQ5MWMxNzgwMzI5MTgxNzJkMGE3NmIuLmM2YjQ5NThiNzFlZjU0MzIwZDRjMmFkNDJi
MzE4Zjk1YjE0ZTkzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAK
QEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKICAgICBmbG9hdCBhbHBo
YSA9IGFuaW1hdGVkQ29sb3IuYWxwaGEoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1h
dGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbUNvbG9yLmFscGhh
KCksIHRvQ29sb3IuYWxwaGEoKSwgdG9BdEVuZE9mRHVyYXRpb25Db2xvci5hbHBoYSgpLCBhbHBo
YSk7CiAKLSAgICBhbmltYXRlZENvbG9yID0geyB7IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwo
cmVkKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChncmVlbiksIHJvdW5kQW5kQ2xhbXBDb2xv
ckNoYW5uZWwoYmx1ZSksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYWxwaGEpIH0sIENvbG9y
U3BhY2VTUkdCIH07CisgICAgYW5pbWF0ZWRDb2xvciA9IHsgcm91bmRBbmRDbGFtcENvbG9yQ2hh
bm5lbChyZWQpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGdyZWVuKSwgcm91bmRBbmRDbGFt
cENvbG9yQ2hhbm5lbChibHVlKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSkgfTsK
IH0KIAogZmxvYXQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA3NTQ0YTc2ZjM1ZjM1ZGEzYWE1
OWRiMjc1OGExYTYyYTlhMjlmZjkyLi43NjljNTRlYTZiZjhkZjk3YWVmMWNmNTA2ZjgwZmQzMzBm
MzIyMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTEz
OSw3ICsxMzksNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKIH0K
IAogdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRh
aQogICAgIGFkanVzdGVkU3JjU2l6ZS5zY2FsZShyb3VuZGVkQ29udGFpbmVyU2l6ZS53aWR0aCgp
IC8gY29udGFpbmVyU2l6ZS53aWR0aCgpLCByb3VuZGVkQ29udGFpbmVyU2l6ZS5oZWlnaHQoKSAv
IGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOwogICAgIHNjYWxlZFNyYy5zZXRTaXplKGFkanVzdGVk
U3JjU2l6ZSk7CiAKLSAgICBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29sb3JT
cGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgIGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBjb21wb3NpdGVPcCwg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKIH0KQEAgLTE3OSw3ICsxNzksNyBAQCBQYXNzTmF0aXZlSW1h
Z2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICAgICBpZiAoIWJ1
ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwg
cmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ug
c2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAgIHJldHVybiBidWZmZXIt
PmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKICNlbmRpZgogCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0
dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6
ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAot
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBGbG9hdFJlY3Qgem9vbWVkQ29u
dGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5lclNpemUpOwogICAg
IHpvb21lZENvbnRhaW5lclJlY3Quc2NhbGUoem9vbSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9p
ZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6
ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4
dCwgdHJ1ZSk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIu
CiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgp
LCBjb250YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJl
Y3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVy
U2l6ZSwgem9vbSwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0LCBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgIGlmIChjb250ZXh0LmRyYXdMdW1p
bmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwog
CkBAIC0yMTksMTAgKzIxOSwxMCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHVuc2Nh
bGVkUGF0dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAx
IC8gaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKICAgICBjb250ZXh0LnNldERyYXdMdW1p
bmFuY2VNYXNrKGZhbHNlKTsKLSAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc2NhbGVk
U3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29sb3JT
cGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdQ
YXR0ZXJuKGNvbnRleHQsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCi12
b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggMWFiYTky
YWU4NzkzYTRjZTRlYjgzNjc1ODg2Njc1ZDhhMGExNGUxYi4uNzk4MDMxNGU4Nzk5ZjcwOTQwZWI0
YTA5N2NkOTg0NDQ4MjVmMjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUZXh0
U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTVkdJbWFnZShJbWFnZU9ic2VydmVyJiwg
Y29uc3QgVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0ZvckNvbnRhaW5l
cihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlLAorICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0ZvckNv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
KTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKIAogICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCA1YTM4MzUxMTY1MDhkN2QwZGZjYmEwZTQzNjBl
NjVjZjUzMTA3NDMwLi40ZTE2MWUzZjBkNDRhNmFhNmVhNmMwM2Y1ZWQ5YWJjMTllYmFlYTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKQEAgLTM1LDE1ICszNSwxNSBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWlu
ZXI6OnNpemUoKSBjb25zdAogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikKIHsKLSAgICBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1f
Y29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRl
eHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVP
cCwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBtX2lt
YWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1f
em9vbSwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBzcmNS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJl
Y3QsIGJsZW5kTW9kZSk7CiB9CiAKIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRh
aW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2YWJiYmM2ZDAyMmUw
MGJjYzliMTg2ZmE1OTg4OGI5YWQ3ZWVhNWYzLi5kZTk4ZmYyMTY2MWUzZDQ0MjEzY2IyZTc2ZDFm
MzJkNGNjZmMzMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
aW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5z
aWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJl
Y3QmLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3Is
IGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29s
IGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
Y3BwCmluZGV4IDY2MThjZjU0ODRlNDllZTIxY2NjZjY3ODk0ZDAwMmY2MGUxN2U4MDYuLjdmN2E5
YzMyZGY4NWYxYjFlODQxNjA3NWU4Y2I4MThlZWVkNjc2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKm1faW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqbV9pbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwog
fQogCiB2b2lkIEZFSW1hZ2U6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCmluZGV4IDYxZjE5YmYxNjUwMWE5ZGZmMTZkN2I5ZTg5
ODIwNDg0ZTIxMTE1ZDguLmNiYzM4NTYzNzEzYmY3ZTdkYjk2OGQxN2ZlYjk2OTMxMDkyNTJiNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5j
cHAKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgY29udAogICAgIEZsb2F0
UmVjdCBpbnNldFJlY3QgPSBvdmVybGF5LmJvdW5kcygpOwogCiAgICAgaWYgKG92ZXJsYXkub3Zl
cmxheVR5cGUoKSA9PSBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KSB7Ci0gICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAw
KSk7CiAgICAgICAgIGluc2V0UmVjdC5pbmZsYXRlKC01MCk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUp
KTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTIwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQppbmRleCBmMWU3NDk5M2FjNzg0MjBlNTE1
Njk4MDE0MTc4MDhlOGFlZGJhMzZjLi41MTkyZmI4MTliODM5MDE5ZWNjOWVmMDk5ZTBmNmRiMGVj
M2E1YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBA
IC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZp
Y2VXaGl0ZShDR0Zsb2F0IHdoaXRlLCBDR0Zsb2F0IGFscGhhKQogICAgIENHQ29udGV4dFNhdmVH
U3RhdGUoY29udGV4dCk7CiAgICAgQ0dGbG9hdCBoZWlnaHQgPSBXZWJLaXRMaW5rZWRPbk9yQWZ0
ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9GTElQUEVEX1NIQURPV1MpID8gMi4wZiA6IC0y
LjBmOwogICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtl
KDAuMGYsIGhlaWdodCksIDMuMGYsIFtbc2VsZiBjbGFzc10gc2hhZG93Q29sb3JdKTsKLSAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xv
cjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKICAgICBD
R0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBwYWdlUmVjdCk7CiAgICAgQ0dDb250ZXh0UmVzdG9y
ZUdTdGF0ZShjb250ZXh0KTsgICAgCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmll
dy9XZWJQbGFpbldoaXRlVmlldy5tbQppbmRleCAxZTBlMDdjNGY5N2ZlZTRhYTQyMDEzYjE1MTZj
YjRjOTM4ZDk5OGQyLi45MDc3MjIwNjMxY2E1OGFiZDgyMmMxMmM5MzZhZGMxMWQwNWI1OTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0KQEAg
LTQyLDcgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtICh2b2lkKWRyYXdSZWN0
OihOU1JlY3QpcmVjdAogewogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gV0tHZXRDdXJyZW50
R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNv
bnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7
CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29s
b3IoQ29sb3I6OndoaXRlKSk7CiAgICAgV0tSZWN0RmlsbChjb250ZXh0LCBbc2VsZiBib3VuZHNd
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmlu
Z0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMu
bW0KaW5kZXggMDAyNWFlMjkzMDIxN2EyYWU2NjJmZjA0ZDZhMGI2NGM5YjRiZGRhZC4uY2Y3OGRi
MzNiN2YyZTdhZTYwMDBjNzc5ZDZjYmI3MTA0Zjc2YmZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgc3Rh
dGljIEJPT0wgY2FuVXNlRmFzdFJlbmRlcmVyKGNvbnN0IFVuaUNoYXIgKmJ1ZmZlciwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgICAgICBDR0Zsb2F0IGJsdWU7CiAgICAgICAgIENHRmxvYXQgYWxwaGE7
CiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJH
QkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZh
bHBoYV07Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVk
ICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdC
QShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSkpOwogCiAg
ICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBv
aW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdo
dFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdo
dFZpZXcubW0KaW5kZXggZGIwNWIzNGRiZWI5NGQ2OGU2NmUyZGJmYmMyOTI3YzI2ZjVmYzEwYi4u
MzhhYmJiNGQ0MTYxNjg5ZmViNjgyZjA3MDgyYmVhYTNhOTYyZDU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQpA
QCAtMjgwLDEwICsyODAsMTAgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hhcGVMYXllciAq
bGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogICAgIEZsb2F0UXVhZCBwYWRkaW5n
UXVhZCA9IGhpZ2hsaWdodC0+cXVhZHNbMl07CiAgICAgRmxvYXRRdWFkIGNvbnRlbnRRdWFkID0g
aGlnaGxpZ2h0LT5xdWFkc1szXTsKIAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hl
ZENHQ29sb3IoaGlnaGxpZ2h0LT5tYXJnaW5Db2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgYm9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPmJvcmRl
ckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9y
ID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPnBhZGRpbmdDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci0gICAgY29udGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxp
Z2h0LT5jb250ZW50Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIG1hcmdpbkxheWVy
LmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5tYXJnaW5Db2xvcik7CisgICAg
Ym9yZGVyTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPmJvcmRlckNv
bG9yKTsKKyAgICBwYWRkaW5nTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGln
aHQtPnBhZGRpbmdDb2xvcik7CisgICAgY29udGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENH
Q29sb3IoaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IpOwogCiAgICAgbGF5ZXJQYXRoV2l0aEhvbGUo
bWFyZ2luTGF5ZXIsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQpOwogICAgIGxheWVyUGF0aFdpdGhI
b2xlKGJvcmRlckxheWVyLCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCk7CkBAIC0zMDEsNyArMzAx
LDcgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZs
b2F0UXVhZCYgb3V0ZXJRdWFkKQogCiAgICAgW3NlbGYgX2F0dGFjaDpwYXJlbnRMYXllciBudW1M
YXllcnM6bnVtTGF5ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29udGVudENvbG9yID0gY2FjaGVk
Q0dDb2xvcihoaWdobGlnaHQtPmNvbnRlbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Y29u
dGVudENvbG9yKTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBudW1MYXllcnM7ICsr
aSkgewogICAgICAgICBDQVNoYXBlTGF5ZXIgKmxheWVyID0gW19sYXllcnMgb2JqZWN0QXRJbmRl
eDppXTsKICAgICAgICAgbGF5ZXIuZmlsbENvbG9yID0gY29udGVudENvbG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYzVjN2U3ZDFhYzdlZDM0MmFlNzg2OGRlNWU4
MDFhNjUyMzU0NjUxZC4uZjIxOTA2MGVhYTY3YTE0NDdkY2MwMDgxMDNjYjFlNmJkOTJlODdlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xMDI5LDcgKzEwMjksNyBA
QCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsK
ICNlbHNlCi0gICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIHJldHVybiBjYWNoZWRDR0NvbG9yKGNvbG9yKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDFjN2ZhNGE0ODliMzkx
YWMwZDdjYzhmZWYyMWNiMGM3OTFmMzdjMTMuLmFjMGU3NzI0ZmNjMTE2YWQ3YTk2OTk1ZGQ0MTJh
YjJlYjljNmI4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1t
CkBAIC01MjYsNyArNTI2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNz
KE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICAgICAgICAgICAg
IE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6
d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEZp
bGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7
CiAgICAgICAgICAgICBXS1JlY3RGaWxsKGNnQ29udGV4dCwgcmVjdCk7CiAjZW5kaWYKICAgICAg
ICAgfQpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21D
bGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAgICAgICAg
ICAgICBOU1JlY3RGaWxsKHJlY3QpOwogI2Vsc2UKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBj
Z0NvbnRleHQgPSBXS0dldEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAgICAgIENH
Q29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29s
b3I6OmN5YW4sIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNl
dEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6OmN5YW4p
KTsKICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCByZWN0KTsKICNlbmRpZgogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkluZGljYXRl
TGF5ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0K
aW5kZXggNWVkODRiYzczODJlOGY3MjA0YmMzZTE4ZTI5ZTE1YmRjODdmNDAwNi4uZjk0NDRkYzM3
NGUwNDJiNmQwNTA3NzBhMjYwNzJlMWU3YmUxMmM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQpAQCAtNTAsNyArNTAsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogICAgIC8vIEJsdWUgaGlnaGxpZ2h0IGNvbG9yLgogICAgIHN0YXRp
YyBDb2xvciBoaWdobGlnaHRDb2xvcigxMTEuMGYgLyAyNTUuMGYsIDE2OC4wZiAvIDI1NS4wZiwg
MjIwLjBmIC8gMjU1LjBmLCAwLjY2Zik7Ci0gICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNo
ZWRDR0NvbG9yKGhpZ2hsaWdodENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBzZWxm
LmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0Q29sb3IpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMWE0
Zjc1MjExNjU5OTg4NGVmZDI2NDUzMThhNGM1Y2MxNDdjMTI4Ny4uMDgwNTIyMTI5YzFjYzQwZGZj
ZjAwNjAyMDdjMzI3MjNlMzRjYWI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQpAQCAtODg4LDcgKzg4OCw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFk
UHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBfcHJpdmF0ZS0+
YmFja2dyb3VuZENvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVdoaXRlOjEgYWxwaGE6
MV0gcmV0YWluXTsKICNlbHNlCi0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29s
b3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
KTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xvclJldGFpbihjYWNoZWRD
R0NvbG9yKENvbG9yOjp3aGl0ZSkpOwogI2VuZGlmCiAgICAgX3ByaXZhdGUtPmluY2x1ZGVzRmxh
dHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwID0gWUVTOwogCkBAIC0x
MTg3LDcgKzExODcsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3Zp
ZGVySWZOZWNlc3NhcnkoKQogICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IFtwcmVmZXJlbmNl
cyByZXRhaW5dOwogICAgIF9wcml2YXRlLT5tYWluRnJhbWVEb2N1bWVudFJlYWR5ID0gTk87CiAg
ICAgX3ByaXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKLSAgICBfcHJpdmF0ZS0+YmFja2dy
b3VuZENvbG9yID0gQ0dDb2xvclJldGFpbihjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSwgQ29s
b3JTcGFjZURldmljZVJHQikpOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBDR0Nv
bG9yUmV0YWluKGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7CiAKICAgICBXZWJGcmFtZVZp
ZXcgKmZyYW1lVmlldyA9IG5pbDsKICAgICBmcmFtZVZpZXcgPSBbW1dlYkZyYW1lVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTogQ0dSZWN0TWFrZSgwLDAsZnJhbWUuc2l6ZS53aWR0aCxmcmFtZS5z
aXplLmhlaWdodCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2Nn
L1dLSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNH
LmNwcAppbmRleCA5OWMyM2ZlODliMGIzMjMzYmE5MTIxNzExZDA1NDc1ZmQ0MTgzZDMyLi5iY2Fi
NjBiNWNkZjk3ZWYwZGIyMWEwMjUzMWE4MDhjNzIxMjRiNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcApAQCAtNTcsNiArNTcsNiBAQCBXS0ltYWdl
UmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdl
T3B0aW9ucyBvcHRpb25zKQogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJp
dG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBGbG9hdFJlY3QgcmVjdChGbG9h
dFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0
KHJlY3QpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBp
bWFnZVNpemUsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOworICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJl
Y3QsIHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRl
eHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRh
LmNwcAppbmRleCBlYjg3NjczOGRlZDg3MjhkOTFkNTk3MDlmOTgzOTk2MjU4NGYwYjY4Li5iNTQ1
NGY0NzJmNDA2NDMwMjZkZWRlNzJlOTcxNmI4MjZiNjcxZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IENvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIG1lbnVMb2NhCiAKICAgICAvLyBGSVhNRTogZmlndXJlIG91dCB0aGUg
cm91bmRpbmcgc3RhcnRlZ3kgZm9yIFNoYXJlYWJsZUJpdG1hcC4KICAgICBtX2NvbnRyb2xsZWRJ
bWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1hZ2UtPnNp
emUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgbV9jb250cm9sbGVk
SW1hZ2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBtX2NvbnRyb2xsZWRJbWFnZS0+Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZSgqaW1hZ2UsIEludFBvaW50KCkpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggZjBlMjYzNjJlNTFiNzA5M2JlZjRiMGYxOTdkMGIzZTI5ZTlkNjJiMC4uMzlkZjdm
YjFhZWE5YjYwMGIyMDYxN2MwYTJjNzM2ZjZiOTQ0YTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTc0Miw3ICs3NDIsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIENyZWRlbnRpYWwmIGNyZQogc3RhdGljIHZvaWQgZW5jb2RlSW1hZ2UoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBJbWFnZSYgaW1hZ2UpCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShp
bWFnZS5zaXplKCkpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAgIGJpdG1h
cC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSk7CisgICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KS0+ZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
aW5kZXggMmNjYmFjN2ZjN2YyNzA5YzBmYWMyZTIwZWVjOTlmNDBjYmFmOWZjNS4uYzdiYzYxMDFk
YTRjMzQxZjA2Zjc5ODYyMjY3OGFmYWI1M2IyZWVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0yNzUsNyArMjc1
LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIENHSW1hZ2VSZWYKIAogI2lmbmRlZiBOREVCVUcKICAgICBpZiAo
bV9pc09wYXF1ZSkKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywg
Q29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMsIENvbG9yKDI1NSwgMCwgMCkpOwogI2VuZGlmCiAK
ICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggZTBiYWIzNzNlY2VhYTgzOWRmOGMxNmQyMGEwOWY2MmI0YWNmOTVlOC4uZTdlZmYyZjBkMWJi
ZjgxOWQxOTNhNTAyNmI2YTJmZjZkZWVjZWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTg5NCw3ICs4OTQsNyBAQCBzdGF0aWMg
V2ViQ29yZTo6Q29sb3Igc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dlYlZpZXcgKndlYlZp
ZXcpCiAKICAgICBfc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogCi0gICAgYXV0
byB1aUJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENH
Q29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvciwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQild
KTsKKyAgICBhdXRvIHVpQmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2Nd
IGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV0pOwogICAgIFtfc2Nyb2xsVmll
dyBzZXRCYWNrZ3JvdW5kQ29sb3I6dWlCYWNrZ3JvdW5kQ29sb3IuZ2V0KCldOwogCiAgICAgLy8g
VXBkYXRlIHRoZSBpbmRpY2F0b3Igc3R5bGUgYmFzZWQgb24gdGhlIGxpZ2h0bmVzcy9kYXJrbmVz
cyBvZiB0aGUgYmFja2dyb3VuZCBjb2xvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCmluZGV4IDM2Y2RhYmEzY2RmZjk3Njk0
Yzg0NDYzMDEyZWEzOTVlMTIwNjZmOWYuLjVlZTU1YTVlNmQ3MTRkODAxYWNiNWIzODgxOWI4MDZm
YTdiMDU1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW5zcGVj
dG9ySGlnaGxpZ2h0Vmlldy5tbQpAQCAtMjI5LDEwICsyMjksMTAgQEAgc3RhdGljIHZvaWQgbGF5
ZXJQYXRoKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkKQog
ICAgIEZsb2F0UXVhZCBwYWRkaW5nUXVhZCA9IGhpZ2hsaWdodC5xdWFkc1tvZmZzZXQgKyAyXTsK
ICAgICBGbG9hdFF1YWQgY29udGVudFF1YWQgPSBoaWdobGlnaHQucXVhZHNbb2Zmc2V0ICsgM107
CiAKLSAgICBtYXJnaW5MYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5t
YXJnaW5Db2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgYm9yZGVyTGF5ZXIuZmlsbENv
bG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuYm9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwotICAgIHBhZGRpbmdMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hs
aWdodC5wYWRkaW5nQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRlbnRMYXll
ci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5jb250ZW50Q29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29s
b3IoaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yKTsKKyAgICBib3JkZXJMYXllci5maWxsQ29sb3IgPSBj
YWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5ib3JkZXJDb2xvcik7CisgICAgcGFkZGluZ0xheWVyLmZp
bGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LnBhZGRpbmdDb2xvcik7CisgICAgY29u
dGVudExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xv
cik7CiAKICAgICBsYXllclBhdGhXaXRoSG9sZShtYXJnaW5MYXllciwgbWFyZ2luUXVhZCwgYm9y
ZGVyUXVhZCk7CiAgICAgbGF5ZXJQYXRoV2l0aEhvbGUoYm9yZGVyTGF5ZXIsIGJvcmRlclF1YWQs
IHBhZGRpbmdRdWFkKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgo
Q0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAKICAgICBb
c2VsZiBfY3JlYXRlTGF5ZXJzOm51bUxheWVyc107CiAKLSAgICBDR0NvbG9yUmVmIGNvbnRlbnRD
b2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBjYWNoZWRDR0NvbG9yKGhp
Z2hsaWdodC5jb250ZW50Q29sb3IpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51
bUxheWVyczsgKytpKSB7CiAgICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBbX2xheWVycyBv
YmplY3RBdEluZGV4OmldOwogICAgICAgICBsYXllci5maWxsQ29sb3IgPSBjb250ZW50Q29sb3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVD
b250cm9sbGVySU9TLm1tCmluZGV4IDJmNDhkYmIxZDQ0MWNlNzVkNDY0ODc2OWM2ZTUzYTY2ZDk5
MmJjMjMuLjZmOTExNzY1NDBiZGVjYjUzMTBiN2JkOTY0YjY5ZDY1NmU2YjMwM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9s
bGVySU9TLm1tCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAg
ICAgICAgICAgIFttX3NuYXBzaG90VmlldyBsYXllcl0uY29udGVudHMgPSBzbmFwc2hvdC0+YXNM
YXllckNvbnRlbnRzKCk7CiAgICAgICAgIENvbG9yIGNvcmVDb2xvciA9IHNuYXBzaG90LT5iYWNr
Z3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGNvcmVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhD
R0NvbG9yOmNhY2hlZENHQ29sb3IoY29yZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV0pOwor
ICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGlu
aXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvcmVDb2xvcildKTsKICAgICB9CiAKICAgICBb
bV9zbmFwc2hvdFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRDb2xvci5nZXQoKV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IDhlZTZhN2E5OGYwMjhkYmMzZTBkOGNkOGFiYWU1ZTRjNDFk
OTBiZjEuLmM0M2VmM2ExZTE3NTMzNzVlOTRiZTZkMTMxYmJjNzcwZDFmYjc5YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC03ODksNyArNzg5LDcgQEAgc3RhdGljIE5TVmFsdWUgKm5zU2l6ZUZvclRh
cEhpZ2hsaWdodEJvcmRlclJhZGl1cyhXZWJDb3JlOjpJbnRTaXplIGJvcmRlclJhZGl1cywKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBSZXRhaW5QdHI8VUlDb2xvcj4gaGlnaGxp
Z2h0VUlLaXRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6
Y2FjaGVkQ0dDb2xvcihfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24uY29sb3IsIFdlYkNvcmU6OkNv
bG9yU3BhY2VEZXZpY2VSR0IpXSk7CisgICAgICAgIFJldGFpblB0cjxVSUNvbG9yPiBoaWdobGln
aHRVSUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpj
YWNoZWRDR0NvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5jb2xvcildKTsKICAgICAgICAg
W19oaWdobGlnaHRWaWV3IHNldENvbG9yOmhpZ2hsaWdodFVJS2l0Q29sb3IuZ2V0KCldOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCA0MGI0ZjdhZTA1MThhYjUyY2ZkN2FlZTRmNjQ4NWM3
ZDQ5MjM3MWY0Li42NmM4YjBmOWRjOTk3NWJmMmY1ZGY3MDVjNWRlY2ZhZGRjYjQ5MDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlck1hYy5tbQpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVt
CiAKICAgICAgICAgQ29sb3IgY29yZUNvbG9yID0gc25hcHNob3QtPmJhY2tncm91bmRDb2xvcigp
OwogICAgICAgICBpZiAoY29yZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoY29yZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoY29yZUNvbG9yKTsK
ICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdCA9IHNuYXBzaG90OwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHAKaW5kZXggMzAzZTFiNzMzNmJhMTU3YzgwYjYzNjE3MjA4M2MzOTU3MTJkNTM2My4uOGE3NjMx
ZTExMjgyNzYzZmEzOTM3MDk0NGFkZTQwZmI5YjljOTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBAIC00NjAsMTMg
KzQ2MCwxMyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjbwogICAgIFZlY3RvcjxJbnRSZWN0PiBy
ZWN0cyA9IHJlY3RzRm9yVGV4dE1hdGNoZXNJblJlY3QoYm9yZGVySW5mbGF0ZWREaXJ0eVJlY3Qp
OwogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZC4KLSAgICBncmFwaGljc0NvbnRleHQuZmls
bFJlY3QoZGlydHlSZWN0LCBvdmVybGF5QmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlU1JHQik7
CisgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgb3ZlcmxheUJhY2tncm91
bmRDb2xvcik7CiAKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
aGFkb3coRmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkpLCBzaGFkb3dCbHVy
UmFkaXVzLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dDb2xvckFscGhhKSwgQ29sb3JT
cGFjZVNSR0IpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93
KEZsb2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1
cywgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgc2hhZG93Q29sb3JBbHBoYSkpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7CiAKICAgICAgICAgLy8g
RHJhdyB3aGl0ZSBmcmFtZXMgYXJvdW5kIHRoZSBob2xlcy4KICAgICAgICAgZm9yIChhdXRvJiBy
ZWN0IDogcmVjdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmluZGV4IDI1MGI0MmI5ZGM3ZWVkZjRhNDgwZDAwZDMzNGJjMzE5OTE0Y2VmODUu
LjA4Yjg3ZDEzNGM1ODhmNWE2NDQzNjQyMjY3M2VlNjMzOGYzODI5NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtODQ4LDcgKzg0OCw3
IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFtZTo6Y3JlYXRlU2VsZWN0aW9u
U25hcHNob3QoKSBjb25zdAogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkU25hcHNo
b3QtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
ID0gY29yZUZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBncmFwaGlj
c0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVG
YWN0b3IpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqc25hcHNob3Qs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UG9pbnQoKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIoKnNuYXBzaG90LCBGbG9hdFBvaW50KCkpOwogCiAgICAgcmV0dXJu
IHNoYXJlZFNuYXBzaG90LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwNTU2MDk4YWEwMjBlNDE5ZDQ4ZDZjNjI5Njcy
ZjFiMGQ4ZDE0MDE3Li40MzI3MTQ4MDc0OTM0YTcyNzhiODdmOWFhNWY0MGRlMmU0MzVkNDE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0x
NzgwLDcgKzE3ODAsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0
U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogCiAgICAgQ29sb3IgZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmRvY3VtZW50QmFja2dyb3VuZENvbG9y
KCk7CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gKGNvcmVGcmFtZS0+c2V0dGluZ3MoKS5i
YWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZSgpICYmIGRvY3VtZW50QmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSkgPyBkb2N1bWVudEJhY2tncm91bmRDb2xvciA6IGZyYW1lVmlldy0+YmFz
ZUJhY2tncm91bmRDb2xvcigpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVj
dChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSwgYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgYml0bWFwU2l6ZSksIGJhY2tncm91bmRDb2xvcik7CiAKICAgICBpZiAoIShvcHRpb25zICYg
U25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yKSkgewogICAgICAgICBkb3Vi
bGUgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwpA
QCAtMTgwMyw3ICsxODAzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNo
b3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKIAogICAgIGlmIChv
cHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGUpIHsKICAgICAg
ICAgRmxvYXRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDB4RkYsIDAs
IDApKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VSZWN0KHNlbGVjdGlvblJlY3Rh
bmdsZSwgMSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggZGJhMmQwNThj
YTU5MjVjMTA4ZDAzZjlmNmVkNTk4MGJjMTBhNmQ0MC4uMWQ2OTA4YmU5ZWZiNThkY2YzYWRjNzBh
M2ExOWU1ZDA3MTQzZWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC03OSwxMSArNzksMTEg
QEAgdm9pZCBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QoUGFnZU92ZXJs
YXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGUKICAgICBWZWN0b3I8RmxvYXRSZWN0PiB0ZXh0UmVj
dHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gbV90ZXh0SW5kaWNhdG9yLT50ZXh0UmVjdHNJ
bkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKCk7CiAgICAgVmVjdG9yPFBhdGg+IHBhdGhzID0gUGF0
aFV0aWxpdGllczo6cGF0aHNXaXRoU2hyaW5rV3JhcHBlZFJlY3RzKHRleHRSZWN0c0luQm91bmRp
bmdSZWN0Q29vcmRpbmF0ZXMsIGNvcm5lclJhZGl1cyk7CiAKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihoaWdobGlnaHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0
LnNldEZpbGxDb2xvcihoaWdobGlnaHRDb2xvcigpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBwYXRocykKICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKIAotICAgIGNvbnRl
eHQuZHJhd0ltYWdlKCppbmRpY2F0b3JJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgb3Zlcmxh
eS5ib3VuZHMoKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmluZGljYXRvckltYWdlLCBvdmVy
bGF5LmJvdW5kcygpKTsKIH0KIAogYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGlj
YXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVybGF5LCBib29sIHNo
b3VsZEFuaW1hdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYjgyM2I4ZTlmMzE3ZjVmNGRjMzQ3ZjUyMmRjYzdmODgx
YTk5MjhmYS4uNjdkNjI0NTdlMDA5Y2YwNmU2NmViNzkwMzU3ODY5MTEwZTZmOTM1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMjIxOSw3ICsyMjE5LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW50ZXJhY3Rpb25JbmZvcm1hdGkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGJpdG1hcFNpemUgPSBzY2FsZWRTaXpl
LndpZHRoKCkgPCBpbWFnZS0+c2l6ZSgpLndpZHRoKCkgPyBzY2FsZWRTaXplIDogaW1hZ2UtPnNp
emUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0
ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwg
Yml0bWFwU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0
bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZWVjNjVhYjQ3NTQ3MjMyMmQ4ODZjZGNhNzViM2Y4NGUz
ODQ4NWQ5Mi4uMGJmMzY0YzE0MzdlMzU2MWRhMTFiMmRiNmUyYWNlMWJhMWUyMjQyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFtD
QVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKICAgICBbdmlkZW9MYXllciBz
ZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgwLCAwKV07Ci0gICAgW3ZpZGVvTGF5ZXIgc2V0QmFja2dy
b3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50LCBXZWJD
b3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgW3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3Vu
ZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CiAKICAg
ICAvLyBTZXQgYSBzY2FsZSBmYWN0b3IgaGVyZSB0byBtYWtlIGNvbnZlcnRSZWN0OnRvTGF5ZXI6
bmlsIHRha2Ugc2NhbGUgZmFjdG9yIGludG8gYWNjb3VudC4gPHJkYXI6Ly9wcm9ibGVtLzE4MzE2
NTQyPi4KICAgICAvLyBUaGlzIHNjYWxlIGZhY3RvciBpcyBpbnZlcnRlZCBpbiB0aGUgaG9zdGlu
ZyBwcm9jZXNzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264992</attachid>
            <date>2015-11-06 20:03:28 -0800</date>
            <delta_ts>2015-11-06 20:20:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150967-20151106200314.patch</filename>
            <type>text/plain</type>
            <size>320122</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzMDRmYTY1MDg1ODVm
ZTI5ZjViZjEwMTIzODVlZGIxNTg4ZGY2Mi4uNDY3OTAzODA0OWI2OTJiYjBhYjY5N2I0OGNjYjAz
MTk3Zjg0MTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NCBAQAorMjAxNS0xMS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29s
b3JTcGFjZSBhcmd1bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSAtd2Via2l0LWNvbG9y
LWNvcnJlY3Rpb24gQ1NTIHByb3BlcnR5IHdhcyByZW1vdmVkIGluIHIxODgyMDIsIGFuZCBDb2xv
clNwYWNlRGV2aWNlUkdCCisgICAgICAgIGFuZCBDb2xvclNwYWNlU1JHQiBhcmUgZnVuY3Rpb25h
bGx5IGVxdWl2YWxlbnQsIHdlIGNhbiByZW1vdmUgYWxsIHRoZSBDb2xvclNwYWNlIGFyZ3VtZW50
cyBwYXNzZWQKKyAgICAgICAgdG8gZHJhd2luZyBmdW5jdGlvbnMsIGFuZCByZW1vdmUgUmVuZGVy
U3R5bGU6OmNvbG9yU3BhY2UoKSwgd2hpY2ggd2FzIGhhcmRjb2RlZCB0byByZXR1cm4gQ29sb3JT
cGFjZVNSR0IuCisgICAgICAgIAorICAgICAgICBGaWxsIGFuZCBzdHJva2UgQ29sb3JTcGFjZXMg
YXJlIGFsc28gcmVtb3ZlIGZyb20gZ3JhcGhpY3Mgc3RhdGUsIHNpbXBsaWZ5aW5nIGNvbG9yIHNh
dmUvcmVzdG9yZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoX3BsYXRmb3JtQ29s
b3IpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZp
bGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3
SW1hZ2VJbnRvQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Ny
b2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZTo6ZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRy
YXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2Fj
eVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxDb2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3U2hhZG93QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVy
QW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YmVn
aW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjplbmRTaGFkb3dM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0
cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdS
ZXBhaW50Q291bnRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldENH
RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNG
b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lU
aWxlR3JpZFRpbGU6OnNob3dCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENv
bXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRD
b21wb3NpdGlvblVuZGVybGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCb3hTaGFkb3dGb3JC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0F4aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWlu
dFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVV
cGxvYWRJY29uRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9y
Rm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50TGF5b3V0OjpsYXlP
dXRTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlv
bkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnREZWJ1Z0JvcmRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGll
cjo6U2hhZG93QXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93
cyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUt
MTEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmlldyBvbiBhcHBsZS5jb20vY29udGFjdCB3aXRoIGFsbCB0ZXh0IHNlbGVjdGVkIHNob3dz
IGEgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTBiMGFkZDAzNWQxZTE5ODljZjI0ZWYzNzdiODYw
NjZkOWE2MzgwMi4uY2MyMmQ3NjhhMjBlM2Y2YmU2MWIwMmZhMmUyMTJiYTUxODIyNTQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFy
Z3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlv
biBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZp
Y2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZh
bGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAor
ICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29s
b3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1t
OgorCiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXhlZCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTE5MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NGUxODNhNDc5ZTczOTc1MTRjMjA3MGI0NzU1YzZkYWJiYWU4NWFmZC4uNDFkZmQzZDBjYjFhNjNl
NTFkNmFmZTNiZDBiNmYzZDE3ZjkxMjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBj
YWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQg
aW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3Bh
Y2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhl
IENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9u
cywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNv
ZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9u
dDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dFZpZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJO
b2RlSGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklu
ZGljYXRlTGF5ZXIubW06CisKIDIwMTUtMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0sxXSBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcgQmxpbmsg
bGF5b3V0IHRlc3QgZWRpdGluZy9pbnB1dC90ZXh0LWlucHV0LWNvbnRyb2xsZXItbm8tZWRpdGFi
bGUtbm8tY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhMGRkZDQ3MjQ2MmU5YTE0M2RiNTUzYmFh
NWQ1ZTQzZGRhMjhhZTQuLjk4MDQ5MDAxOTg3OGNiMWNkOWUwZjM4ZGYxYmRiNjQxMWJhZWQzNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNS0xMS0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JTcGFjZSBhcmd1
bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9Db250
ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6b2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0XSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250
cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0xMS0wNSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2aWV3IG9uIGFwcGxlLmNv
bS9jb250YWN0IHdpdGggYWxsIHRleHQgc2VsZWN0ZWQgc2hvd3MgYSBtYXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4
IDQxNzE5ODc0YzdkNjEwMWUyYzg2MDJmMzQ2NjA2ODQ1NmRkMTg0MjAuLmYzNzJhMTBlMDMzZWRl
YmZjNTM1OGRmM2ZkMTI0YWYyMGNiZTU2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTM0Nyw3ICsxMzQ3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxU
eXBlIGVxICJDb2xvciIpIHsKICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZUNHQ29sb3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6OmNh
Y2hlZENHQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsIC49ICIsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpIjsKKyAg
ICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
V2ViQ29yZTo6bnNDb2xvcigkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCmluZGV4IGJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0Yzc3MjYw
NjAyM2IuLjIzMWEzMmQ2YWE1MGIzNTFjNWEzYTA5NjI4ZGI2OWE1MDcwOTRlNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFn
ZSgpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBpbWFnZVJlY3QpOworICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3QpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
PiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAgICBm
aWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RGOjptb3ZlKHRleHR1cmUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYTcxZThiNWI5YjExMTJl
NWEzZGJkM2Q2ODVlZWZjZTQwNGUzZjg3Yi4uNmU0YjMxZWYzMzY4YjZlYmEzYTU5NzhhZGJkZDk2
ZGM4MmUxMWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE1NzAsNyArMTU3MCw2IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5v
ZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2Rl
LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCA9IG5v
ZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIApAQCAtMTU4MywxNyArMTU4MiwxNCBAQCB2b2lk
IENhcmV0QmFzZTo6cGFpbnRDYXJldChOb2RlKiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAgYXV0byBlbGVtZW50QkdDb2xvciA9IGVs
ZW1lbnRTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwogICAgICAgICAgICAgaWYgKGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChlbGVtZW50QkdD
b2xvciwgcm9vdEVkaXRhYmxlQkdDb2xvcikpIHsKICAgICAgICAgICAgICAgICBjYXJldENvbG9y
ID0gcm9vdEVkaXRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwotICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UgPSByb290RWRpdGFibGVTdHlsZS5jb2xv
clNwYWNlKCk7CiAgICAgICAgICAgICAgICAgc2V0VG9Sb290RWRpdGFibGVFbGVtZW50ID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRh
YmxlRWxlbWVudCkgeworICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRhYmxlRWxlbWVudCkKICAg
ICAgICAgICAgIGNhcmV0Q29sb3IgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAgICAgIGNvbG9yU3Bh
Y2UgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IsIGNvbG9y
U3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQzZDQ2
NWZiN2QwNDdkMzgyYTU1NWI4MjU2ZmI0ODAzMjgxZjNkOGUuLjc1ZGI3MWQ0MDE1OWQ5NDhhZmE4
MThjYWQ1NmU1N2Y4NDIxNzgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgTlNCdW5kbGUgKl93
ZWJLaXRCdW5kbGUoKQogCiBzdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENv
bG9yIGNvbG9yKQogewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0
ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBX
ZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKIH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0
Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAppbmRleCA1NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExLi5j
MGZiNDhiZmE0YmY2MWFmOGUzM2ZjNjcwNDlkMTFiZDZiZGRhN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAg
ICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJ
bnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGIxOWQ5
ZTBkYzcwM2Q1NTUzZjczMjYyMTMzYzIwYzk0ZjYyOGM3OWYuLmQyYmRkMGJjMjUyNDE1YTg2YzI4
NzE0OGI1Y2IxMmJlMzBhNjY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE1NCw3ICsxMTU0LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkg
ewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0gdHJ1ZTsKLSAgICAg
ICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNw
YXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lT
aGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgfQogICAgIGlm
IChzdGF0ZSgpLmdsb2JhbEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAt
MTMxOSw5ICsxMzE5LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hh
ZG93KCkKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkgewogICAgICAgICBmbG9hdCB3aWR0
aCA9IHN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9
IHN0YXRlKCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpOwotICAgICAgICBjLT5zZXRMZWdhY3lTaGFk
b3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5zaGFkb3dCbHVyLCBzdGF0ZSgp
LnNoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYy0+c2V0TGVnYWN5
U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkuc2hhZG93Qmx1ciwgc3Rh
dGUoKS5zaGFkb3dDb2xvcik7CiAgICAgfSBlbHNlCi0gICAgICAgIGMtPnNldExlZ2FjeVNoYWRv
dyhGbG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJh
bnNwYXJlbnQpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxkRHJh
d1NoYWRvd3MoKSBjb25zdApAQCAtMTQ0OCwxNyArMTQ0OCwxNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCwg
Y29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERz
dFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKKyAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBp
ZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAg
ICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAg
IGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1
MzYsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2Fu
dmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENv
bnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKLSAg
ICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOworICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52
YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0
ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xv
YmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBk
aWREcmF3KGRzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE2MTIsNyArMTYxMiw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8s
IGNvbnN0IEZsb2F0UmVjCiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAg
Yy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8tPnZpZGVvV2lkdGgoKSwg
dmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8t
PnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsK
ICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpAQCAtMTcyNiwyMSArMTcyNiwyMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7CiAg
ICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwogICAgIGMtPnJlc3RvcmUoKTsKLSAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0Lmxv
Y2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoYnVmZmVyLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
KTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBv
cCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKTsK
IApAQCAtMTc2Niw3ICsxNzY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAgICBidWZm
ZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9u
KCkueCgpLCAtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0LndpZHRoKCksIGNyb3BwZWRP
ZmZzZXQuaGVpZ2h0KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3Rp
dmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250
ZXh0KCksIHN0eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAogICAgIGNvbXBvc2l0
ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkBAIC0yNDQwLDggKzI0NDAsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICAgICAgICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICAgICAgICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgICAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgICAgICAgICAgYy0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAgICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZs
YXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7CkBAIC0yNDUwLDEyICsyNDQ5LDEyIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgICAgIHNoYWRvd09mZnNldCArPSBvZmZzZXQ7CiAK
LSAgICAgICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICAgICAgYy0+c2V0TGVn
YWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGMtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24gKyBvZmZz
ZXQsIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQpA
QCAtMjQ2Nyw5ICsyNDY2LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdU
ZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGZpbGwpCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAppbmRleCA4NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4NDE1OTQ1M2Q5Li5k
Njk5OWJmM2MzZmUwNmVjMjU3ZDA3MDVjYjkzMDA2ZDM3YzExODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0zNjcsNyArMzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZShUJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGQzNThhMjE3OTU4ODM5NmJmYjcwYTVmZDdjZWI1
MjgwMjRmZTM5MTkuLmI2ODNhMmVhNjk5ZWJhY2E4YTM2NTIxNzM2ZTdhMDg1MmQ3ZjFjMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0
IEFQSS4KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNv
bG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAg
IENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jbXlrYS0+YywgbV9jbXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+
YSk7CiAjZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NteWthLT5yZ2Jh
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jbXlrYS0+cmdiYSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29u
dGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215a2Et
PmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwogI2Vs
c2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY215a2EtPnJnYmEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jbXlrYS0+cmdi
YSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2
NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNjZmYwN2U1YmNjLi4zMzBjOTUwNGIwNzY5ZDk0
MDcyMzE3ZGRkMjk5M2QyOThiOWY5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE3Niw3ICsz
MTc2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJh
d0ltYWdlSW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGkKIAogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBidWYtPmNvbnRleHQo
KS5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICByZXR1cm4gYnVmLT5j
b3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3NDA4MDQw
NzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLjBlY2Y4M2Q5Njk3ZjY2ZDJhZmEzN2JmYmE3ZDFkOWE2
ODY0ZjdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmUKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7Ci0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgQ29sb3JTcGFjZVNSR0IpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgIGZvciAoYXV0byByZWN0IDogbV9yZWdp
b24tPnJlY3RzKCkpIHsKICAgICAKICAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhkaXJ0eVJl
Y3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEyMjk2NGE3OWVkYmJjNGViYTlk
OTcxM2FlYzUzODU3YjdmNjZlODMuLmI2ZjY5YjU5YTJjODBlMWFiYjM3Y2U1MWI5NzExNDYzMDY4
N2NiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM3MzYsNyArMzczNiw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tn
cm91bmRDb2xvcigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3NDksNyArMzc0OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJCiAg
ICAgaWYgKGJhci5pc0N1c3RvbVNjcm9sbGJhcigpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBJbnRSZWN0IHRvRmlsbCA9IGJhci5mcmFtZVJlY3QoKTsKICAgICAgICAgdG9G
aWxsLmludGVyc2VjdChyZWN0KTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAg
IFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKGNvbnRleHQsIGJhciwgcmVjdCk7CkBAIC00MDE3
LDcgKzQwMTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFJl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGZpbGxXaXRoUmVkKQotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCkp
OwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdTaXplQWRqdXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDI2Mzc1MTE0NDYwNzU4YWE2NzRh
OGIyMjIzN2NhNWFhMTNkYzllYmUuLjAzNDY4OWFjYjdmOTA5MWQ5MDM3MWQ3MzBkZjkxOWIxNzY0
ZGRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMzNyw3ICszMzcs
NyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1l
JiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VS
ZWN0cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAg
IC8vIEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1
KSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lk
dGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwpAQCAtMzU2
LDggKzM1Niw4IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJp
ZXMoRnJhbWUmIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyCiAgICAgICAgICAgICBpbnQgYm91
bmRhcnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOwogI2VuZGlmCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0xpbmUoSW50UG9pbnQoMCwgYm91bmRhcnlMaW5lWSksIEludFBvaW50KHBhZ2VXaWR0aCwgYm91
bmRhcnlMaW5lWSkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxNWEwYmIx
ZDBjMjRkZDMxZWNjMjkzZDQ3ODE2ZDI1YjRiY2FjODMyLi5kZGVkZTY1MWQ4ZDg0NTE3MWM2YjIw
MGU2ZGM2NjFhYjQ3OGY5OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0g
bV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQ
b2ludCA9IHBhcmVudCgpLT53aW5kb3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdD
UG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBpY29uR0NQb2lu
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgKaW5kZXggZTU0YzQ2YWExY2ZmMjY0NzQ5Yzc5ODQ0OGY1YjRjMDdjYzM5OWYzOS4uY2Fl
NTI5OTQzMmNmOGViODQ4YmMzMDAyZTdhNTU1ZTI5NDVkNTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0
UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9p
ZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQorICAgIHN0YXRpYyB2b2lkIGRlZmF1
bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDcyZjJh
NjM2ZGExOGMwMmI3YzZlY2E5NGY0MDY2NWE4MDBiMmRhN2YuLjQ2ZDllZTY3MmQzNzdmNTgyM2Rj
MTM3ZmYzMjNiNGEzNTlmY2Q1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSk7CiB9CiAKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVj
dChTY3JvbGxiYXImIHNjcm9sbGJhcikKQEAgLTI4MSwxMSArMjgxLDExIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAog
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKICAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgp
KQogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3Zlcmhh
bmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlKTsKICAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDM5MDYzNDJm
NTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQuLjE5MzRiMzU2NTMyNTFlMzgzZjQ4ODU5
YzExNzIwN2U2MmNmODk0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIC8vIERyYXcgYSBnZW5l
cmljIFdpcmVsZXNzIFBsYXliYWNrIGljb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5jcHAKaW5kZXggOGZjY2RjNWZmNTk4M2ExOGFkYzFkYTdlMTM2ODc4
ZTY4ZWQwNzU2OC4uMzE0ZWVkNTMxNTNhMTcwOTdmYTE5NmU5M2RjNzcwMjQ3MWY0ZWVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5h
bWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJh
Y2tTcmNTaXplKDMyLCAyNC4wMTYpOwogICAgIGZpdENvbnRleHRUb0JveChjb250ZXh0LCB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSwgcmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDAwNTMzYWYzOTdjNzg1OTVk
YmU0MjZiNzc5ODRiNjY0NTIxMmEzYmMuLjNlYTFiNWY4OTQ3OWMxNDQ4ZDIwZDhkNjI1NDllNjU3
MjMxYjhjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTYwNywxMyArNjA3LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0
QW5pbWF0aW9uKCkKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKLSAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKCFtX2NhY2hlZEltYWdlKSB7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LAogICAgICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2Ug
ZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhp
cyByZWxheW91dC4KICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAg
ICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgIH0K
IAogICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIG1fY2FjaGVkSW1h
Z2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDQwZmM3NGEzOTJkNGQ2Njg5
NzI5ODBiZmMxY2FlNDA5YmUwYzYzZWIuLjg5MWU4YzQyM2NjNTZiYWVkYzQ5Zjg5MzU5N2FkZjFj
YTg1NDJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlk
ZTsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKQEAgLTIw
MSwxMyArMjAxLDEzIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVy
YXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoV0lOR0RJKQogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpOwogI2VuZGlmCiAKICAgICBzaXplX3QgY3VycmVudEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IGQxZDRlNzI3NzAwZDllMjhjMGNmZGIzNTRlYmI5YzljYWY5ZDE4NzUuLmNm
MmY4MGJhOTQ3YjZlM2M1ZWFkNjRlYjg1ZjU3ZWQ0YjIyY2EyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGludCBkaWZmZXJl
bmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CiB1aW50MTZfdCBmYXN0RGl2
aWRlQnkyNTUodWludDE2X3QpOwogCiAjaWYgVVNFKENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiBp
bmxpbmUgUkdCQTo6UkdCQSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNDM2ODJiMGQ3
ZWU0NzI0OGUyNjRlNWU4YTZiMmQ0NWJlYTc4MjY4NC4uNTdlM2YxYTRmMTkwNmEyNjY5ZmZmZmRk
MjAxNTU5Y2IzZWI1Y2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIENvbXBvcwogCiAgICAgaWYgKHRhcmdldFNpemUgIT0gaW1h
Z2VTaXplKQogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh0YXJnZXRTaXplLndpZHRo
KCkgLyBpbWFnZVNpemUud2lkdGgoKSwgdGFyZ2V0U2l6ZS5oZWlnaHQoKSAvIGltYWdlU2l6ZS5o
ZWlnaHQoKSkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRQb2ludCgpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQo
KSk7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9
CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAgZHJh
d0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVm
ZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRl
eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9y
U3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaAppbmRleCA4MDI4MzQ0ODBiZWIzZjUwZTg4OGQwYTM5MzM4N2M1ZWI3YWZlZTg2
Li44YWViYmM1NzM3MTQ2MGNiN2RiMzM0MDg0ZjE0NGRkZGVkNDczMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAog
ICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0lt
YWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAppbmRleCBiMTAyM2IwYWQ5ZTUxMjg5YjUwYjUyYjU1YWZhODc0
ODA0MGRmOGMxLi4wYzAzOGQ5OTYyZjU0MWEwZTRlMjVhMGQ2ODJlZWFmMTNmYjM0YzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
QEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGUgPSAwOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGY1
Y2ViNzA1MzNhNjNlNThkNDdlOWEyYjlhNjVjYzdlNDUxY2EyN2UuLjM3MjY5MWE5YjJiNzVmZTkz
MWQ1MWZmY2RhMGIxYTQzOTAxOTRkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEdyYWRpZW50
SW1hZ2U6On5HcmFkaWVudEltYWdlKCkKIHsKIH0KIAotdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK3ZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50
IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXpl
IGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHMKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAK
ICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0
LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRl
cm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRl
eCAwNTgyOGY1YTg0OTY4OTk1NGRjYzM4YjY1NzQwMTc2YTU5YjM0ZDlkLi45MjUwOWZiMWVjNTJj
NGY3MzIxNDg3ZTQ4YjhlZmM2ODIzYzVlMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAg
ICAgR3JhZGllbnRJbWFnZShQYXNzUmVmUHRyPEdyYWRpZW50PiwgY29uc3QgRmxvYXRTaXplJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDIzMDlmNWRkNWRkNTZmNjhmMWUxZWU0NmU1Y2UxN2E0NzE2Njc3MWYu
LjM4ODg5YzQ3NDA1ZTMyNzExMmY0Zjk2MTk5Y2QzYWVmMzI4YThkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MTQyLDIwICsxNDIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFp
c2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29s
b3IsIENvbG9yU3BhY2UgZWxsaXBzZUNvbG9yU3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNhdmUoKTsKIAotICAgIHNldFN0cm9r
ZUNvbG9yKHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICBzZXRGaWxsQ29sb3Io
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHNldFN0cm9rZUNvbG9yKHNoYWRv
d0NvbG9yKTsKKyAgICBzZXRGaWxsQ29sb3Ioc2hhZG93Q29sb3IpOwogCiAgICAgZHJhd0VsbGlw
c2UoRmxvYXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIDEsIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogCi0gICAgc2V0U3Ryb2tlQ29sb3IoZWxsaXBzZUNvbG9yLCBlbGxpcHNlQ29s
b3JTcGFjZSk7Ci0gICAgc2V0RmlsbENvbG9yKGVsbGlwc2VDb2xvciwgZWxsaXBzZUNvbG9yU3Bh
Y2UpOworICAgIHNldFN0cm9rZUNvbG9yKGVsbGlwc2VDb2xvcik7CisgICAgc2V0RmlsbENvbG9y
KGVsbGlwc2VDb2xvcik7CiAKICAgICBkcmF3RWxsaXBzZShyZWN0KTsgIAogCkBAIC0xNzQsMzQg
KzE3NCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwot
ICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
bV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29s
b3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID0g
dHJ1ZTsKICNlbmRpZgotICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Is
IGNvbG9yU3BhY2UpOworICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQpAQCAtMjA5LDE2ICsy
MDYsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBtX3N0YXRl
LnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7
CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dD
b2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBjbGVhclBsYXRmb3JtU2hhZG93
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNv
bnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBm
bG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUu
c2hhZG93T2Zmc2V0OwogICAgIGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3Ig
PSBtX3N0YXRlLnNoYWRvd0NvbG9yOwotICAgIGNvbG9yU3BhY2UgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2U7CiAKICAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CkBAIC0yNDEsMTMgKzIzNiwx
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogfQog
I2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKLSAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQpAQCAtMzc4LDEyICsz
NzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMo
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0
aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkp
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qo
ZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
LnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
RmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5vcmlnaW5hbFNpemUoKSk7CkBA
IC0zOTEsMjkgKzM4NSwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdAogICAgIEZsb2F0UmVj
dCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAK
LSAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
RGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
LSAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJh
d1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCkBAIC00MjEsMzIgKzQxNSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAKICAgICBp
ZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRyYXdJbWFnZShp
bWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5kcmF3
VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5sb2dp
Y2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UubG9naWNhbFNpemUoKSks
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIEZsb2F0
UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNl
LCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxv
Z2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVy
cG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5k
cmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC01MDksMjkgKzUwMywy
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHBy
ZXZpb3VzT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7Ci0gICAgZmlsbFJlY3QocmVjdCwgY29sb3IsIHN0eWxl
Q29sb3JTcGFjZSk7CisgICAgZmlsbFJlY3QocmVjdCwgY29sb3IpOwogICAgIHNldENvbXBvc2l0
ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAg
IGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKLSAgICAgICAgcGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QocmVjdCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZpbGxSZWN0KHJlY3Qu
cmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9k
ZSk7CisgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29tcG9zaXRlT3BlcmF0
aW9uKCksIGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ2LDE1ICs1NDAs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIAogICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxl
ID0gZmlsbFJ1bGUoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAg
ICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKICAgICAK
ICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgIHNldEZpbGxDb2xvcihjb2xvciwg
Y29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBh
dGgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29s
b3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9s
ZEZpbGxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiOWRjMDIzMDlmNmMzNjYxZmIyNmQ2
NzJjMjVmM2UzMjY5MTk1NDM0Li5iZTIwYTczNzlmZDg0MjkwMDFjYzFjODY1OTM3YTMxNGZlZjYz
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHRfaAog
I2RlZmluZSBHcmFwaGljc0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCkBAIC0xNDgsMTAgKzE0Nyw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAg
IFdpbmRSdWxlIGZpbGxSdWxlIHsgUlVMRV9OT05aRVJPIH07CiAKLSAgICBDb2xvclNwYWNlIHN0
cm9rZUNvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0gICAgQ29sb3JTcGFjZSBm
aWxsQ29sb3JTcGFjZSB7IENvbG9yU3BhY2VEZXZpY2VSR0IgfTsKLSAgICBDb2xvclNwYWNlIHNo
YWRvd0NvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0KICAgICBmbG9hdCBhbHBo
YSB7IDEgfTsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBv
c2l0ZVNvdXJjZU92ZXIgfTsKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9y
bWFsIH07CkBAIC0yMTQsOSArMjA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Ryb2tlU3R5
bGUoU3Ryb2tlU3R5bGUpOwogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KLSAgICBDb2xvclNw
YWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9y
U3BhY2U7IH0KIAogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAg
ICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybi5nZXQoKTsgfQpAQCAtMjI3LDkgKzIyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVs
ZTsgfQogICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
UnVsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBDb2xvciYpOwogICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yU3BhY2U7IH0KIAogICAgIHZvaWQgc2V0RmlsbFBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQpAQCAtMjYxLDcgKzI1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICB2b2lkIGRyYXdQYXRoKGNv
bnN0IFBhdGgmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBjbGlw
VG9OYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgYnVmZmVyU2l6ZSk7CiAgICAgCkBAIC0yODgsNyArMjgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHZv
aWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKTsKICAgICB2b2lkIGRyYXdDb252ZXhQ
b2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFu
dGlhbGlhcyA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29u
c3QgUGF0aCYpOwpAQCAtMjk4LDI5ICsyOTEsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKTsK
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7Ci0gICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgdm9pZCBm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFn
ZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0g
ICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAor
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJ
bWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7IH0KQEAgLTM3NiwxMyArMzY5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgYm9vbCBpc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDAp
ICYmIHN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICAvLyBMZWdhY3kgc2hh
ZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRv
dy4KICAgICAvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLSAg
ICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0TGVnYWN5U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyU2hhZG93KCk7Ci0gICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxv
YXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGdldFNoYWRvdyhGbG9h
dFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CiAKICAgICBib29sIGhhc1Zpc2libGVTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0
YXRlLnNoYWRvd0NvbG9yLmFscGhhKCk7IH0KICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OyB9CkBAIC00NjMsOCArNDU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZyYW1lQ29udHJv
bChjb25zdCBJbnRSZWN0JiByZWN0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGF0ZSk7CiAg
ICAgdm9pZCBkcmF3Rm9jdXNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpOwogICAgIHZvaWQgcGFp
bnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwotICAgIHZv
aWQgZHJhd0JpdG1hcChTaGFyZWRCaXRtYXAqLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpOwotICAgIHZvaWQgZHJh
d0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0bWFwKiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdElu
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFNpemUmIG9yaWdTb3VyY2VT
aXplKTsKKyAgICB2b2lkIGRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiwgY29uc3QgSW50UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CisgICAgdm9pZCBkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRtYXAqLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6ZSk7CiAgICAg
dm9pZCBkcmF3SWNvbihISUNPTiBpY29uLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBVSU5UIGZs
YWdzKTsKICAgICB2b2lkIGRyYXdSb3VuZENvcm5lcihib29sIG5ld0NsaXAsIFJFQ1QgY2xpcFJl
Y3QsIFJFQ1QgcmVjdFdpbiwgSERDIGRjLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2Vsc2UK
QEAgLTUyOSwxNyArNTIyLDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBsYXRmb3JtVGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKIAotICAgIHZvaWQgc2V0UGxhdGZv
cm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1TdHJv
a2VTdHlsZShTdHJva2VTdHlsZSk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVz
cyhmbG9hdCk7CiAKLSAgICB2b2lkIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYp
OwogCiAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sKTsKICAgICB2b2lk
IHNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9y
bUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCi0gICAg
dm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIGNsZWFyUGxh
dGZvcm1TaGFkb3coKTsKIAogICAgIHZvaWQgc2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CkBAIC01
NTUsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wm
IHNob3VsZEFudGlhbGlhcywgQ29sb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRlM2Q2MTUyZjY1OGFhMDkwOWVlNzBiMjY5NzAzYmM1Mjhl
NjBjZDMuLjgxZmJiMGYxZTdhY2JmMmYwOGVlZTc1NDI4YjY1OTMxMTdhNmIwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc5LDIxICs3OSwyMSBA
QCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsK
ICAgICBpZiAoIWNvbG9yLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb21w
b3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY3R4dC5jb21wb3NpdGVPcGVyYXRpb24o
KTsKICAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0
LmZpbGxSZWN0KGRzdFJlY3QsIGNvbG9yLCBzdHlsZUNvbG9yU3BhY2UpOworICAgIGN0eHQuZmls
bFJlY3QoZHN0UmVjdCwgY29sb3IpOwogICAgIGN0eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xp
ZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFko
KGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgp
IC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbAogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0
KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9u
KG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0
aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RS
ZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRp
b24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNj
YWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICAgICAgZHJhdyhjdHh0LCB0b1JlY3QsIGZy
b21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnRUaWxlUmVjdC5zaGlmdFhFZGdlVG8ob25lVGlsZVJlY3QueCgp
KTsKICAgICAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbAogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFu
c2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwog
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsK
LSAgICBkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qs
IGJsZW5kTW9kZSk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxl
bmRNb2RlKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGFydEFuaW1hdGlvbihEb05vdENh
dGNoVXApOwpAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKIAog
Ly8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5j
ZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCiB2b2lkIElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgc29saWRDb2xv
cigpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0
eHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwgb3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvCiAgICAgICAg
IHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAog
ICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0
LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkc3RS
ZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
YXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wLCBkc3RSZWN0KTsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggYTViMWU0YWUzZGNmZTk3NjE2MzBhMzBhNTY0NTI4OGU2
ZDE0NjVjYS4uNDczNzliM2U5MmU5ZTY3NWI3NTkyMzUyMDg1NTZjMzAwYjk4N2RhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
ZGVmaW5lIEltYWdlX2gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTE1NCw3ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1h
Z2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlV2l0aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBvcmlnaW5hbEltYWdlLCBDb2xvclNwYWNl
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTcxLDcgKzE2OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKICAgICBGbG9hdFJlY3QgYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1w
bGluZyhjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNjYWxlZFNpemUp
IGNvbnN0OwpAQCAtMTg2LDE2ICsxODQsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElt
YWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgdm9pZCBmaWxsV2l0
aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAKLSAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQg
Zm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0K
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgLCBCbGVu
ZE1vZGUpOwotICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pID0gMDsKKyAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUs
IFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5n
IHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCmluZGV4IDM2NjAzYjc5ZjhkMGE3ZTkyNzA3YzI1YzQ2ZDI0ZmQzZDllNTA1
MzAuLjM2MGNlODY1OTUxOTdlZmEyMzJjYTkwZTY4NzIzNGVmYTBjNWEwYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTM0LDggKzEz
NCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAK
ICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBkMGJhZDMwZTkyNzJkZmM4MWFjNDc2ZjM2ODUxNjYw
YjNjMGRmMjg1Li5hMGY2NDM0ZTg5YTg4OGNiNjk3MDI2YzU2Yzg4YzhlNzczNjZlMDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZs
b2F0U2l6ZSYKICAgICBzZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi12b2lkIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICNpZiBV
U0UoTkVXX1RIRU1FKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICNlbmRp
ZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCB0cnVlKTsK
QEAgLTcyLDE0ICs3MiwxMyBAQCB2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogICAgIHBsYXRmb3Jt
VGhlbWUoKS0+ZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVj
dCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxl
IHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJh
d1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShzcmNS
ZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGF0dGVyblRyYW5zZm9ybSk7CiAgICAgVU5VU0VEX1BB
UkFNKHBoYXNlKTsKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0eWxlQ29sb3JTcGFjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwogICAgIFVOVVNF
RF9QQVJBTShjb21wb3NpdGVPcCk7CiAgICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDZmNGVjZDliNzJiNmMzZjM3Nzc1ZWMzYjkxZGUzMWMwY2Zi
N2E1Y2IuLmQ5ZjBhYzFmMzE2Yzg3NjNmYWI3NzgzNGRlMTI5MjI5NmIzZThhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CmluZGV4IDg1YWVlZWZmNzJlZTI3MGU3NjAwODBkYzYwZWViMmIwNWM4MTc0YTMuLjhhY2JkYTI4
N2FjMjNhZGI4ZmQ1MWRiYjllNWIzMzU1ZDcxMzBlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04NSwxNSArODUsMTQgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9h
dFNpemUmIGxheWVyU2l6ZSkKKyAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxv
YXRTaXplJiBsYXllclNpemUpCiAgICAgewotICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYm
IG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0
Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKKyAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBtX2xhc3RXYXNJbnNldCA9
IGZhbHNlOwogICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CiAgICAgICAgIG1fbGFzdENv
bG9yID0gY29sb3I7Ci0gICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAg
ICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKICAgICAgICAgbV9sYXN0UmFkaWkg
PSByYWRpaTsKICAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gbGF5ZXJTaXplOwpAQCAtMTAxLDE2
ICsxMDAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKLSAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0
ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9s
YXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5k
cyAmJiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFk
aWkpCisgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAm
JiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSB0
cnVlOwogICAgICAgICBtX2xhc3RJbnNldEJvdW5kcyA9IGJvdW5kczsKICAgICAgICAgbV9sYXN0
UmFkaXVzID0gcmFkaXVzOwogICAgICAgICBtX2xhc3RDb2xvciA9IGNvbG9yOwotICAgICAgICBt
X2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKICAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9
IHNoYWRvd1JlY3Q7CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAKQEAgLTE0Niw3ICsx
NDQsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwogICAgIEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOwogICAgIENvbG9yIG1fbGFzdENvbG9y
OwotICAgIENvbG9yU3BhY2UgbV9sYXN0Q29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9sYXN0
UmFkaXVzOwogICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CiAgICAgRmxvYXRTaXplIG1fbGFzdExh
eWVyU2l6ZTsKQEAgLTE3MSw5ICsxNjgsOCBAQCBzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lS
YWRpdXMoZmxvYXQgcmFkaXVzKQogfQogI2VuZGlmCiAKLVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK1NoYWRvd0JsdXI6OlNoYWRvd0Js
dXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgOiBtX2NvbG9yKGNvbG9yKQotICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJSYWRpdXMocmFkaXVzKQogICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQogICAgICwgbV9sYXllckltYWdlKDApCkBAIC0xODQsNyArMTgwLDYgQEAgU2hhZG93
Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQsIGNvbnN0IEMKIAogU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBtX2NvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQot
ICAgICwgbV9jb2xvclNwYWNlKHN0YXRlLnNoYWRvd0NvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJS
YWRpdXMoc3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKICAgICAsIG1fb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKICAgICAsIG1fbGF5ZXJJbWFnZSgwKQpAQCAtMjA2LDEyICsy
MDEsMTEgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cigpCiB7CiB9CiAKLXZvaWQgU2hhZG93Qmx1
cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJv
b2wgaWdub3JlVHJhbnNmb3JtcykKK3ZvaWQgU2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCiB7CiAgICAgbV9ibHVyUmFkaXVzID0g
cmFkaXVzOwogICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fY29sb3IgPSBjb2xvcjsKLSAg
ICBtX2NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgPSBpZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwpA
QCAtNDczLDcgKzQ2Nyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0J1ZmZlcihHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAoRmxvYXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJTaXplKSk7CiAgICAgfQogICAgIGdy
YXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qo
bV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKG1fY29sb3IpOwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CkBAIC01NzIsNyArNTY2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGMKICAgICBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdC5tb3ZlKG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVy
IGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgYm9vbCBy
ZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1
ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNp
emUpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCku
c2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJS
ZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsK
ICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CkBAIC01ODAsNyArNTc0LDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGMKICAgICAgICAgLy8gQWRkIGEgcGl4ZWwgdG8gYXZv
aWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQuCiAgICAgICAgIHNoYWRvd0NvbnRl
eHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9s
YXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQudHJhbnNsYXRl
KG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICBpZiAoc2hhZG93
ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBzaGFkb3dDb250ZXh0LmZpbGxS
ZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOwogICAgICAgICBlbHNlIHsKQEAgLTYxMCw3ICs2MDQs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdC5t
b3ZlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4g
dGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3Vy
IG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhv
bGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9s
ZVJlY3QsIGhvbGVSZWN0LnJhZGlpKCkpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0
KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dD
b250ZXh0KTsKQEAgLTYyNyw3ICs2MjEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAogICAgICAgICBzaGFkb3dD
b250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgIHNoYWRv
d0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICAgICAgYmx1clNoYWRvd0J1ZmZlcihleHBh
bmRlZEludFNpemUobV9sYXllclNpemUpKTsKQEAgLTY4MSwxNCArNjc1LDE0IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlSG9sZSA9IEZsb2F0UmVjdChl
ZGdlU2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkg
LSAyICogZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VT
aXplLmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZl
ciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wg
cmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRl
Qm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGJvb2wgcmVkcmF3
TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xl
LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8v
IERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7
CiAgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKICAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAg
ICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsK
QEAgLTcyNCw3ICs3MTgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRl
eHQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3Bh
Y2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQpAQCAtNzQ1LDE0ICs3MzksMTQgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICBGbG9hdFJlY3QgdGVtcGxhdGVTaGFkb3cgPSBG
bG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6
ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAt
IDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2Ny
YXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMK
LSAgICBib29sIHJlZHJhd05lZWRlZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFs
dWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywg
c2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRl
ZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgdGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7
CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIHRo
ZSBJbWFnZUJ1ZmZlci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0g
bV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc2hhZG93U3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKIAogICAgICAgICBzaGFkb3dDb250
ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBs
YXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAKICAgICAgICAgaWYgKHNoYWRv
d2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxs
UmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CkBAIC03OTgsMTQgKzc5MiwxNCBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZQogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93SW50ZXJpb3Ioc2hhZG93Qm91bmRz
LngoKSArIGxlZnRTbGljZSwgc2hhZG93Qm91bmRzLnkoKSArIHRvcFNsaWNlLCBjZW50ZXJXaWR0
aCwgY2VudGVySGVpZ2h0KTsKICAgICAgICAgaWYgKCFzaGFkb3dJbnRlcmlvci5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFw
aGljc0NvbnRleHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
X2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihtX2NvbG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRv
dygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHNoYWRvd0ludGVyaW9y
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKG1fY29sb3IpOwogICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAg
Ly8gTm90ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0
aW5nIGEgSW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKQEAgLTgxNiw0NiArODEwLDQ2IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNpZGUuCiAgICAgRmxvYXRSZWN0IHRpbGVS
ZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVtcGxhdGVTaWRlTGVuZ3RoLCB0b3BTbGlj
ZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJSZWN0LndpZHRoKCksIHRvcFNsaWNlKTsK
LSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAg
ICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAgdGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRv
bVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRlclJlY3QubWF4WSgpKTsKICAgICBkZXN0
UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRp
bGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1h
Z2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBMZWZ0IHNpZGUuCiAgICAgdGlsZVJl
Y3QgPSBGbG9hdFJlY3QoMCwgdG9wU2xpY2UsIGxlZnRTbGljZSwgdGVtcGxhdGVTaWRlTGVuZ3Ro
KTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRTbGljZSwg
Y2VudGVyUmVjdC55KCksIGxlZnRTbGljZSwgY2VudGVyUmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFJp
Z2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0
U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwogICAgIGRlc3RSZWN0
LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAgIGRlc3RSZWN0LnNldFdpZHRoKHJpZ2h0U2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwg
MCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVy
UmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGlj
ZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBn
cmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0
aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxv
YXRSZWN0KHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwg
dG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCByaWdodFNsaWNlLCB0b3BTbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJv
dHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXpl
LndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGlj
ZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNl
bnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0Lm1heFkoKSwgcmlnaHRTbGljZSwgYm90dG9tU2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qo
MCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9t
U2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNs
aWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIH0KIAogCkBAIC04
NzgsNyArODcyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKQogICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKICAgICBzaGFkb3dDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VJbik7Ci0gICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICBzaGFkb3dDb250ZXh0LmZpbGxSZWN0KEZsb2F0
UmVjdCgwLCAwLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7
CiB9CiAKQEAgLTg5NCw3ICs4ODgsNyBAQCBHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJl
Z2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogICAgIC8v
IFdlIHJlc2V0IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1ZXMgaGVyZSwgYmVjYXVzZSB0aGUgYnVm
ZmVyIHdpbGwgbm8gbG9uZ2VyIGNvbnRhaW4KICAgICAvLyBkYXRhIGZyb20gYW55IHByZXZpb3Vz
IHJlY3RhbmdsZSBvciBpbnNldCBzaGFkb3dzIGRyYXduIHZpYSB0aGUgdGlsaW5nIHBhdGguCiAg
ICAgYXV0byYgc2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpOwotICAg
IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkoKSwgbV9sYXllclNpemUpOworICAgIHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93
VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIEludFJlY3QoKSwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIG1fbGF5ZXJJbWFnZSA9IHNjcmF0Y2hC
dWZmZXIuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwpAQCAtOTE1
LDcgKzkwOSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNv
bnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChy
b3VuZGVkSW50UG9pbnQobV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV9sYXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qocm91
bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSk7CiAK
ICAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRv
bigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKaW5kZXggMjA1MGFiOWNkZmFmMzlmN2M2NjBhMTk3
ZmE1MmViYjBiNTI0OWM1ZC4uZWQxNjZjZmM0MmNkMDRjOTI3MDQzY2FmYTJjNWE3ZjM1ZGU0ZGYy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApA
QCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmx1clNoYWRvdwogICAgIH07CiAK
LSAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUm
IG9mZnNldCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0
IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3Im
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgU2hh
ZG93Qmx1cigpOwogCi0gICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIGJvb2wgaWdub3JlVHJhbnNm
b3JtcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9v
bCBpZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVU
cmFuc2Zvcm1zOyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KQEAgLTEwNCw3ICsxMDQsNiBAQCBw
cml2YXRlOgogICAgIFNoYWRvd1R5cGUgbV90eXBlOwogCiAgICAgQ29sb3IgbV9jb2xvcjsKLSAg
ICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9ibHVyUmFkaXVzOwog
ICAgIEZsb2F0U2l6ZSBtX29mZnNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTAz
YzRmYjAyYjljNGVhZGMwMGYzNzU0ZjUzNTA0M2ZlNDY5ZTdmYS4uNTViM2Q0N2U0NjYxYjllZjVi
MzY5N2M1MTkzNjYxODhhZGNhMTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC02NzAs
NyArNjcwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVlBsYXllckxheWVyKCkKIAogICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQ
bGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0UGxheWVy
Om1fYXZQbGF5ZXIuZ2V0KCldOwotICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9y
OmNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAg
W21fdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihDb2xvcjo6Ymxh
Y2spXTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fdmlkZW9MYXllciBzZXROYW1lOkAiTWVkaWFQ
bGF5ZXJQcml2YXRlIEFWUGxheWVyTGF5ZXIiXTsKICNlbmRpZgpAQCAtMjM0Nyw3ICsyMzQ3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRl
b091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRw
dXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CiAK
ICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwg
dHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBj
cmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRl
b091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0
cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCA4MDdlZTEzOTUyZjFkM2NhY2IwZjUwYWY5NTE0NjA2YTg1MTFjODY5Li5hZDc5ZTk1MzU3NDlj
Yzc4OTNhNWU4N2JmN2RkN2Y2MjBiYTQ0YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTk4Niw4ICs5
ODYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8g
dGhpcyBiZWNhdXNlIHRoZSBjYWxsIHRvCi0gICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0
aENvbG9yU3BhY2UoKSBiZWxvdyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCisg
ICAgICAgIC8vIEZJWE1FOiBwcm9iYWJseSBkb24ndCBuZWVkIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlIGF0IGFsbCBub3cuCiAgICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKaW5kZXggZjE4MDlmY2YyZGRiZTEwNTMwYThhOGVkZjkw
OGRlNGQ5MTI2YjM1Zi4uNjhiOTU2Mjg0MDVhZTBlMjE2ZTM0MTRmM2ExOGI5MTc2NGI0NGZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNw
cApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50
Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAKICAgICBpbnQg
cmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KHBsYXRm
b3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5ZXIoKS5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAgICAgIFBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxh
dGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3IobV9jb250cm9sbGVyLnRp
bGVEZWJ1Z0JvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCBwbGF0Zm9ybUNBTGF5ZXIsIHJlcGFpbnRDb3VudCwgY2FjaGVkQ0dDb2xvcihtX2NvbnRy
b2xsZXIudGlsZURlYnVnQm9yZGVyQ29sb3IoKSkpOwogCiAgICAgaWYgKG1fY29udHJvbGxlci5z
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsKICAgICAgICAgRmxvYXRSZWN0
IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS54KCksIHBsYXRmb3JtQ0FM
YXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLndp
ZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IDcyMTNiNWI1NzEwYWNm
NjFlZTExODdmM2I5NDU3YWE0MWEyZjY1M2EuLjQzY2Q5ZTQ3ZGQ1OTNmNDk1ZGVlOTdhNWE1MjUw
NDA1ZTVhMmYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRy
YXdSZXBhaW50Q291bnRlcnMoQ0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29uCiAgICAgaWYgKGJv
cmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ0FDRkxheWVyR2V0Qm9y
ZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQotICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBj
YWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCkpOwog
CiAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBvd25l
cigpLCBkcmF3Q291bnQsIGJhY2tncm91bmRDb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CmluZGV4IGY1ZTNkZTBlNTM0YjAxNmVkZjYxYjQwY2U0ZmExYTUyOTVkNGE3NzQuLmNkNTdlZTQ4
NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiAgICAgY2hlY2tGb3JT
b2xpZENvbG9yKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKK3ZvaWQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAogICAgIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0
aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29u
c3QgRmxvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0LCBzb2xpZENvbG9y
KCksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29u
dGV4dCwgZHN0LCBzb2xpZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGE0MmI1NGQzODJjNDkyYjUwNDg2MTkz
MzAwMGQzZmQyMTM0ZDg4NGIuLjMzYzgwMDY2MDJhOWIzYjdjYWM4ZWE2YTAxMGQ3NmJjNWFkNzA3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTIyNCw3ICsyMjQsNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIHBsYXRmb3Jt
Q29udGV4dCgpLT5zaGFkb3dCbHVyKCkuc2V0U2hhZG93VmFsdWVzKEZsb2F0U2l6ZShtX3N0YXRl
LnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5z
aGFkb3dDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7CiB9CiAKQEAgLTQ1MSw3ICs0NTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fp
cm9QYXRoKCp0aGlzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTcyNCwxMyArNzIzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUo
ZmxvYXQgeCwgZmxvYXQgeSkKICAgICBtX2RhdGEtPnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25z
dCBDb2xvciYpCiB7CiAgICAgLy8gQ2Fpcm8gY29udGV4dHMgY2FuJ3QgaG9sZCBzZXBhcmF0ZSBm
aWxsIGFuZCBzdHJva2UgY29sb3JzCiAgICAgLy8gc28gd2Ugc2V0IHRoZW0ganVzdCBiZWZvcmUg
d2UgYWN0dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKQogewogICAg
IC8vIENhaXJvIGNvbnRleHRzIGNhbid0IGhvbGQgc2VwYXJhdGUgZmlsbCBhbmQgc3Ryb2tlIGNv
bG9ycwogICAgIC8vIHNvIHdlIHNldCB0aGVtIGp1c3QgYmVmb3JlIHdlIGFjdHVhbGx5IGZpbGwg
b3Igc3Ryb2tlCkBAIC03OTgsNyArNzk3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBtX2RhdGEtPnNldENUTSh0
cmFuc2Zvcm0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3co
RmxvYXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29uc3QmLCBDb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYg
c2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0JikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC04MTMsNyArODEyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQsIENvbG9y
IGNvbnMKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLnNldFNoYWRvd1ZhbHVl
cyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2hhZG93T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2hhZG93Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCkBAIC0xMDE5LDcgKzEwMTcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgY2Fpcm9f
c2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwMzcsNyArMTAzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3Iu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDU5LDcgKzEwNTcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhh
dmUgYW4gaW1hZ2UgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAzZTUyMTNmODZkYTY1
MTJkZTYxZGZhNWJmOWY2NWFlNzFjODJlM2RmLi4yNTZkMWNjODMxM2JhOGIwNzE4N2M3NTBiMWM5
NjQ2NzJkZjhlMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDE5ICsxNjUsMTkg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbWFza1JlY3QpIGNvbnMKICAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgQmFja2lu
Z1N0b3JlQ29weSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/
IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3
SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3As
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlT
Y2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQorICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCiB7
CiAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RS
ZWN0KTsKKyAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3QpOwogfQogCiB2b2lkIElt
YWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4m
IGxvb2tVcFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCBlNGM2M2EzNDZlMjJkZmIzNGVjZWJiNzcyNjNi
NzRlMzc3N2IwZTk0Li4xMWU1N2I0YmQxYzA4NWVjNDE4NzA5ZGU0N2VmYTgyYjkyNzdhMjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUNhaXJvLmNwcApAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
LSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGNv
bnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGNv
bnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAgICAgaWYgKGltYWdlT2Jz
ZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cAppbmRleCA1OWE4Y2RiZGU2ZGE1MjllYzUxMWNjYzIyMGM0NzI4MDgxMDMyYmNjLi5iZjZmMjg2
OTM2ZmZhY2ExNDU1ZjRhNTg2MGU3MTBhNjM5ZDVjMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtMjAzLDcg
KzIwMyw3IEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFy
cmF5KCkKICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKIHsK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKQEAg
LTIyNiw3ICsyMjYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RS
ZWN0LCBzb2xpZENvbG9yKCksIGNvbXBvc2l0ZU9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGlt
YWdlU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGN0eHQuZHJhd05hdGl2ZUltYWdl
KGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigp
KQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDhhN2ZlYmVkNTQw
ODM3ZWQxMjMwMGQ3YjI4YjM3YmFiNzg2ZmZmMzUuLjlhNDhhMzMxZGYzMDgzNzBhM2NlMzM1ODZh
YzVlMjVmYzhhZGRlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCkBAIC05OSwyNiArOTksMjYgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JS
ZWYgY29sb3IpCiAgICAgbV92YWxpZCA9IHRydWU7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxl
YWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3Rh
dGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIENH
RmxvYXQgY29tcG9uZW50c1s0XTsKICAgICBjb2xvci5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNv
bXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwotICAgIHJldHVybiBD
R0NvbG9yQ3JlYXRlKGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgY29tcG9uZW50cyk7
CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50
cyk7CiB9CiAKLXRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitDR0NvbG9yUmVmIGNhY2hlZENH
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHN3aXRjaCAoY29sb3IucmdiKCkpIHsK
ICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDogewotICAgICAgICBzdGF0aWMgQ0dDb2xvclJl
ZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9y
KGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKICAgICB9CiAgICAg
Y2FzZSBDb2xvcjo6YmxhY2s6IHsKLSAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0Nv
bG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBzdGF0aWMgQ0dD
b2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgIHJldHVy
biBibGFja0NHQ29sb3I7CiAgICAgfQogICAgIGNhc2UgQ29sb3I6OndoaXRlOiB7Ci0gICAgICAg
IHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgd2hpdGVDR0NvbG9yID0gbGVha0NH
Q29sb3IoY29sb3IpOwogICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwogICAgIH0KICAgICB9
CkBAIC0xMzQsNyArMTM0LDcgQEAgdGVtcGxhdGU8Q29sb3JTcGFjZSBjb2xvclNwYWNlPiBzdGF0
aWMgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2wKICAgICAgICAgICAg
IHJldHVybiBjYWNoZWRDR0NvbG9yc1tpXS5nZXQoKTsKICAgICB9CiAKLSAgICBDR0NvbG9yUmVm
IG5ld0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CisgICAgQ0dDb2xv
clJlZiBuZXdDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogCiAgICAgc3RhdGljIHNpemVf
dCBjdXJzb3I7CiAgICAgY2FjaGVkUkdCQVZhbHVlc1tjdXJzb3JdID0gY29sb3IucmdiKCk7CkBA
IC0xNDUsMjAgKzE0NSw2IEBAIHRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGlj
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sCiAgICAgcmV0dXJuIG5l
d0NHQ29sb3I7CiB9CiAKLUNHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0Nv
bG9yPENvbG9yU3BhY2VEZXZpY2VSR0I+KGNvbG9yKTsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdC
OgotICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xvclNwYWNlU1JHQj4oY29sb3IpOwot
ICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29s
b3I8Q29sb3JTcGFjZUxpbmVhclJHQj4oY29sb3IpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
aW5kZXggOTRhYWFhOTMwNWIzZTBkNDZiZWI1OWQ4MjE2OTgxOGU2MTA0MmE3My4uMzdhNzI4OTkw
OTM4MTdjYjg5YTMxMWUwYzA5N2MzZmU0MmIwYjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
QEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQu
c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdl
SGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCks
IGltYWdlU2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDM2MGUzODdjYzgzMWE2MzA3
NzY0MzNiZjYxNWNjOGJjYzgzZThkNWYuLjJhYzk0YjJkNTEyN2ZkMDhlZjVmZmMyOWRiMTMxNzAw
ZmNjYjU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTYzLDE2ICs2MywxNyBAQCB1c2luZyBX
VEY6OkdlbmVyaWNIYXNoVHJhaXRzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2
b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENH
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgQ0dDb250ZXh0
U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9y
U3BhY2UpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2Fj
aGVkQ0dDb2xvcihjb2xvcikpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9yKENH
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3N0YXRpYyB2b2lkIHNldENHU3Ryb2tlQ29sb3IoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKSk7CisgICAgQ0dD
b250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xv
cikpOwogfQogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBzb29uLgogQ0dDb2xv
clNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQogewogICAgIHN0YXRpYyBDR0NvbG9y
U3BhY2VSZWYgZGV2aWNlU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKQEAg
LTgxLDkgKzgyLDYgQEAgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQog
CiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQogewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICByZXR1cm4gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKICAgICBzdGF0
aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gT3V0LW9mLWRh
dGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhp
cyBsb2dpYyBhdm9pZHMKQEAgLTkzLDcgKzkxLDYgQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xv
clNwYWNlUmVmKCkKICAgICAgICAgc1JHQlNwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gc1JHQlNwYWNlOwotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9T
KQpAQCAtMTI3LDggKzEyNCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQo
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCkKICAgICBzZXRQYWludGluZ0Rpc2FibGVkKCFjZ0NvbnRl
eHQpOwogICAgIGlmIChjZ0NvbnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250
ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgICAgICBzZXRQbGF0Zm9ybUZp
bGxDb2xvcihmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Ci0gICAgICAgIHNldFBsYXRm
b3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCkpOworICAgICAgICBzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZVRo
aWNrbmVzcyhzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJ
bnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIH0KQEAgLTE2Myw3
ICsxNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQog
ICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZShpbWFnZVB0cik7CiAKQEAgLTI1NCw5ICsyNTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxv
YXRTaQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBhZGp1c3RlZERlc3RS
ZWN0LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CiAK
LSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIGltYWdlID0gSW1hZ2U6OmltYWdl
V2l0aENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSk7Ci0KICAgICAvLyBE
cmF3IHRoZSBpbWFnZS4KICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWRE
ZXN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogfQpAQCAtMjgwLDcgKzI3NCw3IEBAIHN0YXRpYyB2b2lk
IHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghcGF0
dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwLDkg
KzMxNCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsK
ICAgICB9CiAKLSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIHN1YkltYWdlID0g
SW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2Uoc3ViSW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFj
ZSk7Ci0KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNh
dXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcs
CiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQg
bWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKQEAgLTM1MCw3
ICszNDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICBpZiAoIXBhdHRlcm4p
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsK
KyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKG51bGxwdHIpKTsKIAogICAgICAgICBDR0Zsb2F0
IGFscGhhID0gMTsKICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRD
RihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJuLmdl
dCgpLCAmYWxwaGEpKTsKQEAgLTM5NCw3ICszODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAg
ICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3RzIHRvIHNpbXVsYXRlIHRoZSBzdHJv
a2Ugb2YgYSBib3JkZXIuCiAgICAgICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigp
OwogICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkpCi0gICAgICAgICAg
ICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Ryb2tlQ29sb3IoKSk7
CiAgICAgICAgIENHUmVjdCByZWN0c1s0XSA9IHsKICAgICAgICAgICAgIEZsb2F0UmVjdChyZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKICAgICAgICAg
ICAgIEZsb2F0UmVjdChyZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBib3JkZXJUaGlja25lc3MsIHJl
Y3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKQEAgLTQwMyw3ICszOTQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpCiAgICAgICAgIH07CiAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0cyhjb250
ZXh0LCByZWN0cywgNCk7CiAgICAgICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gc3Ryb2tlQ29sb3Io
KSkKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgZmls
bENvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRG
aWxsQ29sb3IpOwogICAgIH0KIH0KIApAQCAtNDMyLDcgKzQyMyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50CiAgICAgaWYgKGRyYXdzRGFzaGVkTGluZSkgewogICAgICAgICAvLyBGaWd1cmUg
b3V0IGVuZCBwb2ludHMgdG8gZW5zdXJlIHdlIGFsd2F5cyBwYWludCBjb3JuZXJzLgogICAgICAg
ICBjb3JuZXJXaWR0aCA9IHN0cm9rZVN0eWxlID09IERvdHRlZFN0cm9rZSA/IHRoaWNrbmVzcyA6
IHN0ZDo6bWluKDIgKiB0aGlja25lc3MsIHN0ZDo6bWF4KHRoaWNrbmVzcywgc3Ryb2tlV2lkdGgg
LyAzKSk7Ci0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCksIHN0
cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9r
ZUNvbG9yKCkpOwogICAgICAgICBpZiAoaXNWZXJ0aWNhbExpbmUpIHsKICAgICAgICAgICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIEZsb2F0UmVjdChwb2ludDEueCgpLCBwb2ludDEueSgp
LCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRGaWxsUmVj
dChjb250ZXh0LCBGbG9hdFJlY3QocG9pbnQxLngoKSwgcG9pbnQyLnkoKSAtIGNvcm5lcldpZHRo
LCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CkBAIC02MDcsNyArNTk4LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJu
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBwYXR0
ZXJuU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCkpOworICAgIFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlUGF0dGVybihudWxscHRyKSk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3Bh
Y2UoY2dDb250ZXh0LCBwYXR0ZXJuU3BhY2UuZ2V0KCkpOwogCiAgICAgY29uc3QgQ0dGbG9hdCBw
YXR0ZXJuQWxwaGEgPSAxOwpAQCAtODM3LDE3ICs4MjgsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBDR0NvbnRleHRGaWxsUmVj
dChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAgICBDb2xv
clNwYWNlIG9sZENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwogCi0gICAgaWYgKG9sZEZp
bGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAg
IHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBpZiAob2xk
RmlsbENvbG9yICE9IGNvbG9yKQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xv
cik7CiAKICAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAm
JiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7
IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIENHQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBkcmF3T3duU2hhZG93KTsKQEAgLTg2NCwyMSAr
ODU0LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgaWYgKGRyYXdPd25TaGFkb3cp
CiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAh
PSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmls
bENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CisgICAgaWYgKG9s
ZEZpbGxDb2xvciAhPSBjb2xvcikKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xk
RmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENvbG9y
IG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwotICAgIENvbG9yU3BhY2Ugb2xkQ29sb3JTcGFj
ZSA9IGZpbGxDb2xvclNwYWNlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8
IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29u
dGV4dCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3Ip
CisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKIAogICAgIGJvb2wgZHJh
d093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3co
KSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRv
d0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIGRyYXdPd25TaGFkb3cpOwpAQCAtOTA2LDExICs4OTUsMTEgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJlY3QsIGNvbnMKICAgICBpZiAoZHJhd093blNoYWRvdykKICAgICAgICAgc3RhdGVTYXZl
ci5yZXN0b3JlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9y
U3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xk
RmlsbENvbG9yLCBvbGRDb2xvclNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9y
KQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDEw
ICs5MTYsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogCiAgICAgV2luZFJ1bGUgb2xkRmls
bFJ1bGUgPSBmaWxsUnVsZSgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigp
OwotICAgIENvbG9yU3BhY2Ugb2xkRmlsbENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwog
ICAgIAogICAgIHNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgc2V0RmlsbENvbG9yKGNv
bG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRGaWxsQ29sb3IoY29sb3IpOwogCiAgICAgLy8gZmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3QgYXJl
IGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3VuZCBp
bnNpZGUgdGhlIGhvbGUuCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRD
b250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOwpAQCAtOTQ5LDcgKzkzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAg
ICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZp
bGxSdWxlKTsKLSAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFj
ZSk7CisgICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNTksNyArMTA0Nyw3IEBA
IHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5OSw3ICsxMDg3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBi
bHVyLCBjb24KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgQ0dDb250ZXh0U2V0
U2hhZG93KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMp
OwogICAgIGVsc2UKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQs
IENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3Io
Y29sb3IsIGNvbG9yU3BhY2UpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hl
ZENHQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZv
cm1TaGFkb3coKQpAQCAtMTM5NiwxMiArMTM4NCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5
JgogICAgIH0KIAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAg
ICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGxvY2FsU3Ryb2tlQ29sb3Is
IHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBsb2NhbFN0cm9rZUNvbG9yKTsKIAogICAgIENHQ29udGV4dEZpbGxSZWN0cyhwbGF0
Zm9ybUNvbnRleHQoKSwgZGFzaEJvdW5kcy5kYXRhKCksIGRhc2hCb3VuZHMuc2l6ZSgpKTsKIAog
ICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAgICAgICAgc2V0Q0dG
aWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgp
KTsKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiBs
aW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKQEAgLTE1MDEsMTEgKzE0ODksMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5n
TW9kZUZsYWdzIG1vZGUpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgc2V0Q0dTdHJva2VDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgY29sb3IsIGNvbG9y
U3BhY2UpOworICAgIHNldENHU3Ryb2tlQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZs
b2F0IHRoaWNrbmVzcykKQEAgLTE1MTUsMTEgKzE1MDMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBDR0Nv
bnRleHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCksIHN0ZDo6bWF4KHRoaWNrbmVzcywg
MC5mKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENHRmlsbENv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvciwgY29sb3JTcGFjZSk7CisgICAgc2V0Q0dGaWxs
Q29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRl
eCAzMjIzMjAyYjcyNzg4MjcyZjE2ODAzMTY0YjYzYjE3YmRkYTI5YTBjLi43ZDMwZmFiM2RjOTI2
OWU5Y2I3OTZhNDUxMTRiZGQxYzAyYWQxZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMjI4LDExICsyMjgs
OCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9p
ZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIGJvb2wpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7Ci0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/
IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7Ci0KICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8
IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOyAvLyBEcmF3aW5nIGludG8gb3VyIG93biBi
dWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgpAQCAtMjQxLDEwICsyMzgsMTAgQEAgdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwKIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0
OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0
aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwg
bV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSht
X3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAtMjUyLDE0ICsyNDksMTQg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKICAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJh
dGVkQ29udGV4dCgpKSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSB8
fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBpZiAo
UmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAvLyBEcmF3
aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAgICAgICAg
ICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVj
dCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywg
b3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXJpbmcgPSBjb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICAgICAgICAgIGltYWdlRm9yUmVuZGVyaW5nLT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwg
ZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAg
ICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRl
c3RSZWN0LCBibGVuZE1vZGUpOworICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENv
bnRleHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggNzVhYmJmOGNkMTY0Y2Q1
Mzk1OGQ0ZmQ2NmNhMTNhOTQxODY5ODc0OS4uZjNkZDAyMmE5MDVhNjJlNGMxMTgzOWFkZDRjYTZm
MGIwOTM2MWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTQ1LDM1ICs0NSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZShDR0ltYWdl
UmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBDR0NvbG9y
U3BhY2VSZWYgb3JpZ2luYWxDb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2Uob3JpZ2lu
YWxJbWFnZSk7Ci0KLSAgICAvLyBJZiB0aGUgaW1hZ2UgYWxyZWFkeSBoYXMgYSAobm9uLWRldmlj
ZSkgY29sb3Igc3BhY2UsIHdlIGRvbid0IHdhbnQgdG8KLSAgICAvLyBvdmVycmlkZSBpdCwgc28g
cmV0dXJuLgotICAgIGlmICghb3JpZ2luYWxDb2xvclNwYWNlIHx8ICFDRkVxdWFsKG9yaWdpbmFs
Q29sb3JTcGFjZSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpKSkKLSAgICAgICAgcmV0dXJuIG9y
aWdpbmFsSW1hZ2U7Ci0KLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9y
U3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbEltYWdlOwotICAgIGNhc2Ug
Q29sb3JTcGFjZVNSR0I6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGVDb3B5
V2l0aENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSkpOwotICAg
IGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbEltYWdlLCBsaW5lYXJSR0JDb2xvclNw
YWNlUmVmKCkpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gb3JpZ2luYWxJbWFnZTsKLX0KLQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3R4dC5kcmF3UGF0dGVybigqdGhpcywgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2Us
IG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwg
YmxlbmRNb2RlKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggODJhM2E1YjRkZWE4
ZjRmNjYyNWEyZWFmNTQ3M2QzYWVkZWM2NGU1YS4uYmZjZWEyODg5ODc3OTk2YzBlNjhkMjdhOTY4
YTcxNzM1YjZkNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFtX2Rv
Y3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKG9wKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBkc3RSZWN0KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAppbmRl
eCA3ZmZkNjAzYjZmMWJmMzkwMzE1NTRjYjBkMDdlMzNmNWY5MmNkOGJmLi45YTRjMWU5ZTBiNTFl
MzlkNTBhNDRiMTliOTE1NTViZDliMDU2OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNp
emUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2Nh
ZGVDb2NvYS5tbQppbmRleCA4MzljYTAzZDkzNmY1MmQ2MzQwNWIyNWVlOTlmODk4MDZjZWJkNzIz
Li5kMWRjYmQ2NmVlYWVjMzZlZGExZjc4MmE1MjRjMGJjNTA1YjVkMmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRl
Q29jb2EubW0KQEAgLTMzMyw5ICszMzMsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAg
IEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xv
ciBzaGFkb3dDb2xvcjsKLSAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0gICAgQ29s
b3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKLSAgICBj
b250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CkBAIC0zNTIsMTQgKzM1MCwxNCBAQCB2b2lkIEZvbnRD
YXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgRwogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7CiAgICAgICAgIENvbG9yIHNoYWRv
d0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93
Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAy
NTUpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRv
d0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNl
dC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1z
LCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBk
b3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgPyAtMSA6IDEpOwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQo
c2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQp
CiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4
dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwg
Z2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0Vm
ZmVjdCkKQEAgLTM3MCw3ICszNjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAg
ICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGlj
Qm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2Vz
KGZyb20pKSwgbnVtR2x5cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAg
IGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Is
IHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogI2lmICFQTEFURk9STShJT1MpCiAjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGVk
ZWY1NzgwMTgyZmNjODBmZTU3OTUzOTEyZDRhZDk1YTM3NmEwM2MuLmZmOTExMWM0YjYwMzI1NDZk
NDc0M2MxYzRlZjA3ODViM2M0NjE0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNzUsOCArNzUsOCBAQCB2b2lk
IEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8
fCAhaW1hZ2VCdWZmZXIyKQogICAgICAgICByZXR1cm47CiAKLSAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRl
ckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2lj
YWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21v
ZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCA3OGZmZGNlNGQ1OTFh
ZDZhODEyMmZlNjM4ODIzOTNmZjU1MWFlNzcyLi42ODYwZDdkZGZlNmEwMTViZWY5ODQ2MGM4YmNi
N2ViY2M0ZmU1NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2
b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1
ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIGlmIChpbkJ1ZmZlcikK
LSAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0lt
YWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVz
dWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkpOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggOWExNTZmODk0ZGYxNDNlZThlMzg1ODY4NzhkMDcw
OTIyOGUxYmZlOS4uODg4ODQ2YWNjZWQwMjIyYjhlY2I4OTQ3MTRlMmJlMTZiNGUxZDEwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZF
Q09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjogewogICAgICAgICAvLyBBcHBsaWVzIG9u
bHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAgLTI5NCwyMSArMjk0LDIxIEBAIHZvaWQg
RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIEludFJlY3QgYWRq
dXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBhYnNvbHV0ZVBhaW50UmVj
dCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IGRlc3RpbmF0aW9u
UmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJl
Y3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3Qs
IHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwg
c291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291
cmNlMlJlY3QpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3Vy
Y2VJbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJB
VE9SX09VVDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0g
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+
bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBv
c2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1Ip
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcAppbmRleCBkY2U1YWFlMjVmMjk3YWE4OGI2ZjhhODNjYmMyZGE4NGIwMGNlOTZlLi5j
MGU4OTQyNDE1OTFmNzM0M2ZjNzZlNGVlOTQ2NWQzNDNiODJhYWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRkVE
cm9wU2hhZG93LmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRkVHYXVz
c2lhbkJsdXIuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKQEAgLTkzLDEwICs5MiwxMCBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgcmVzdWx0Q29udGV4dCA9IHJlc3Vs
dEltYWdlLT5jb250ZXh0KCk7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRBbHBoYShtX3NoYWRvd09w
YWNpdHkpOwotICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3Vs
dENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgZHJhd2luZ1JlZ2lvbldpdGhP
ZmZzZXQpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEoMSk7CiAKLSAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywg
b2Zmc2V0LCBtX3NoYWRvd0NvbG9yKTsKIAogICAgIC8vIFRPRE86IERpcmVjdCBwaXhlbCBhY2Nl
c3MgdG8gSW1hZ2VCdWZmZXIgd291bGQgYXZvaWQgY29weWluZyB0aGUgSW1hZ2VEYXRhLgogICAg
IEludFJlY3Qgc2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+aW50ZXJuYWxTaXpl
KCkpOwpAQCAtMTA3LDEwICsxMDYsMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShQcmVtdWx0aXBsaWVk
LCBzcmNQaXhlbEFycmF5LmdldCgpLCBzaGFkb3dBcmVhLnNpemUoKSwgc2hhZG93QXJlYSwgSW50
UG9pbnQoKSwgSW1hZ2VCdWZmZXI6OkJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0pOwogCiAg
ICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4p
OwotICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJz
b2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvcik7CiAgICAgcmVzdWx0
Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyKTsK
IAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3aW5nUmVnaW9uKTsK
IH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKaW5kZXggN2VkNDI5ZjAzMzk2
ZTgyYzg5NmI1MzY3MDIyNmQwMThhYjIzNzJhNC4uZThkYThkMzFmNDU1YmQ5ZWRkOGNiMDlhM2Ni
ZmUxOWM3YTQxMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgRkVGbG9vZDo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29s
b3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29sb3IoKS5yZ2IoKSwgZmxvb2RPcGFj
aXR5KCkpOwotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBjb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxsUmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yKTsKIH0K
IAogdm9pZCBGRUZsb29kOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4IGEwMmQ5ZmRhZTI0NWE1ZmVkYzUx
OWM4MzAwYzAzMzFkMGQ3MjFiZTcuLjMyY2YyNTRkNWVjYWQzMTQ2M2JhNTNkZGE0Mjg2NTk5NDZj
NDU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZFTWVyZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoaSk7CiAgICAgICAgIGlm
IChJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpKQotICAgICAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIs
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVPZmZzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU9mZnNldC5jcHAKaW5kZXggMThhMmU3OTFkNTgzYmFjZGNkMWM3YmU2ZDA1N2Y1MGI5
YjUxOTFjYS4uZGRlZjU4NzkxY2ZhMjQ4NThjYWZhNmI0MjAzYzBjZDI0NWNlMWQ4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNl
dC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5hcHBseUhvcml6b250
YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGljYWxTY2FsZShtX2R5KSk7Ci0gICAgcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRy
YXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFT2Zm
c2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcAppbmRleCBhMTg3Yjc0ZmZmZmRkNWE5NzQ0ZGM2OTdjY2M1ZWVhYzIw
ZWRmMzAyLi5jNzA0NGEwMjcxYTRiZTJlNmQ5YmNhYTJlMDBlZTYyNWU3MmRjOWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250
ZXh0KCk7CiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRp
b24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwotICAgIHRpbGVJbWFnZUNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CisgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsK
IAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXgg
MWUzYjkxYTIyNDQ4ZjE4Y2FhNDE2ZmIxMDZhMjg0MGEwMDJhMzFiYi4uNzI0ODkzYmFhMDU4MjFm
MWJlNTlhZTc2ZjVlNmQxZWNmZDUwOGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTU4LDggKzU4
LDggQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVj
dCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBv
aW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgIGZpbHRlckNvbnRleHQuZmlsbFJl
Y3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2spOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7
CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXgg
ZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2NTlkNmNkMzMwMGViYi4uNjFiYjFiOGJjOTI1Mzc2
Njc1MWY2NjNhNDQ3Yzk1NWMxZmZlMTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4
dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIEludFBvaW50KCkpOwogfQogCiB2b2lk
IFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDBlMDU1ZTRiZmYyYjQzMmU5YTBiZmRmMDFj
MDJkY2NhNDIzODg1Y2QuLjBlY2Q2YzI2YmZmNzc4YzFkNzI3NTA4ZDczMWM3MzNmZGZiOWI2MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxJbWFn
ZSo+KGdzdEltYWdlLT5pbWFnZSgpLmdldCgpKSkKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
KmltYWdlLCBDb2xvclNwYWNlU1JHQiwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRl
Q29weSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2Ut
PnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IGJlMzUwNzYwOTMwY2FhYmNjMWNmZWYz
YmEyNGMyMTQyOTA3MTA2OWUuLjIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDliODFkOWQ3
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoSW50ZXJwb2xhdGlvbkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdl
KG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNy
Y1JlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCA2OTgyODU0ODY5MWEwNTg4
MTllZWM3NmY0Mjk3ZWY1NmMyNjhkYzY3Li4wNjQyNDNiNGI5YmYxY2Y3YTQ4YzAwOTliMjBkYWM3
OThiNWIxYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBtX3JlY3QsIG1fcmVjdCk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KG1faW1hZ2UsIG1fcmVjdCwgbV9yZWN0KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBk
YXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCBmZTI4MTUxMjFhNTcwNDQ2NzYxMGE0NTA2
NjRkMTk0OGQ4MTNmOGZkLi5kYjg2Zjk1MTgyYTAwMjA1ZWMxYWNhZmI0ODAyZWQyMTRlNjcwNGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKG1fc3VwcG9ydHNBbHBoYSkgewogICAgICAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9zaXpl
KSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX3NpemUpLCBDb2xv
cjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBhMjdhMmVmNmZl
Y2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1MjU2MWFmY2E2Li5kYmJmYzZiZGNlNDUyODY3NmJlNTg3MjYz
ZmRhZDBkODMzZTQzNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTgzLDE3ICsxODMsMTUgQEAgdm9pZCBGb250Q2Fz
Y2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
Rm9udCYgZm9udCwKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRv
d0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xv
clNwYWNlOwotICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAog
ICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9k
ZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0Js
dXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFw
aGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7
CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hh
ZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lk
IGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5j
bGVhclNoYWRvdygpOwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQu
ZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGlj
c0NvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9y
KHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVl
KCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dD
b2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dG
aWxsQ29sb3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHRyYW5z
bGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hh
ZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhl
IFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KICAgICAgICAgZmxv
YXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRv
d09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSA/IC0xIDogMSk7CkBAIC0yMDMsNyArMjAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9u
dCwKICAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50
LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQu
c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhz
V2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNf
Y2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBo
cyk7CiAgICAgICAgIH0KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxs
Q29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
Z0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSArIHRy
YW5zbGF0aW9uLmhlaWdodCgpKTsKQEAgLTIxNCw3ICsyMTIsNyBAQCB2b2lkIEZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250
JiBmb250LAogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKICAgICB3a1Jlc3RvcmVG
b250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggMjc0MjI3Yjk2YWVkZjA4YTM0MWI0YzIzMDgx
Y2MwM2I4YjZlNDE3OC4uYTg3M2Q4MzFhZGJhNTU3NWEwZDQwMjg5ZDExM2U1OTdiNTZmYmFmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC04Miw4ICs4Miw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKICAgICBzZXRQ
YWludGluZ0Rpc2FibGVkKCFtX2RhdGEtPm1fY2dDb250ZXh0KTsKICAgICBpZiAobV9kYXRhLT5t
X2NnQ29udGV4dCkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGlu
IHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxD
b2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xv
cihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRQbGF0Zm9y
bUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CisgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Io
c3Ryb2tlQ29sb3IoKSk7CiAgICAgfQogfQogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
aW50IHdpZHRoLCBpbnQKIAogICAgIGZsb2F0IHJhZGl1cyA9ICh3aWR0aCAtIDEpIC8gMi4wZjsK
ICAgICBvZmZzZXQgKz0gcmFkaXVzOwotICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5p
c1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSA6IDA7
CisgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29s
b3IoY29sb3IpIDogbnVsbHB0cjsKIAogICAgIENHTXV0YWJsZVBhdGhSZWYgZm9jdXNSaW5nUGF0
aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0
cy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAppbmRleCAzZThmNzdkMGNm
MWY3MGY3Y2Y3ZWM3YTY2NzZmMTE0MjhkOWM1ZGMyLi4yZmNiNzYzYjg1MTkyNmU3ZjhhYTViMzli
OTZhMDY0NTU0OWQ3MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKQEAgLTg1
LDggKzg1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChIREMgZGMsIGJv
b2wgaGFzQWxwaGEpCiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRz
IGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZp
bGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VD
b2xvcihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRQbGF0
Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CisgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29s
b3Ioc3Ryb2tlQ29sb3IoKSk7CiAgICAgfQogICAgIGlmIChjcikKICAgICAgICAgY2Fpcm9fZGVz
dHJveShjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKaW5kZXggMDgzNDcwN2RhOWJhZjcxMWNiZjcyODE3MzZmMjUyMmY3ZjEx
YTc2NS4uNjJkNDk4MDIyYzFmNjgyZTJkNGIzZjY4ZjFkZWQ5ZGQ4NDM4MzU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApA
QCAtNzYsOSArNzYsOSBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9
IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0
aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUs
IENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNv
cHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAg
ICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVhc2UoY2dDb250ZXh0KTsKQEAgLTg2
LDcgKzg2LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJt
cCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2
b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1Np
emUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFtZXMg
PSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwCmluZGV4IGM0MzQ4MGIzYjJkNWFiZjQyYmZjOTI2YWE3YmY4ODUyNjY1ODYy
YjYuLjI5YTIwMjNkYjYzYTkxNDM0YzM5NDhlYWE1NTIzYmI2MWZlODEwNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5j
cHAKQEAgLTc5LDkgKzc5LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShI
QklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKIAogICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQotICAgICAgICBkcmF3RnJh
bWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29t
cG9zaXRlQ29weSk7CisgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpz
aXplLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3Np
dGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
IAogICAgIC8vIERvIGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC04
OSw3ICs4OSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBi
bXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsKICAgICBzaXplX3QgZnJhbWVz
ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kp
IHsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogICAgICAgICBp
ZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndp
ZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJh
bWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0
eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1Np
emUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNy
Y1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJl
bnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJh
dyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCks
IGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXgg
YTcxYjgyOTk0Njg1OGI5N2Y2Y2U5N2I0Y2IzNzAxY2MwYmFiYzY4My4uZDhkMTA1NThiMmZkMzUx
YjZkNDFiNjI4ODNmYzA5MzY3OWFlMjg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBMZWdhY3lU
aWxlQ2FjaGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZnJhbWUub3JpZ2luLngsIGZyYW1lLm9y
aWdpbi55KTsKLSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQs
IGNhY2hlZENHQ29sb3IoY29sb3JGb3JHcmlkVGlsZUJvcmRlcihbbGF5ZXIgdGlsZUdyaWRdKSwg
Q29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRo
Q29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvckZvckdyaWRUaWxlQm9yZGVyKFtsYXll
ciB0aWxlR3JpZF0pKSk7CiAgICAgICAgIAogICAgICAgICBDR1JlY3QgbGFiZWxCb3VuZHMgPSBb
bGF5ZXIgYm91bmRzXTsKICAgICAgICAgbGFiZWxCb3VuZHMuc2l6ZS53aWR0aCA9IDEwICsgMTIg
KiBzdHJsZW4odGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUdyaWRUaWxlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVHcmlkVGlsZS5tbQppbmRleCAyYTlhNWZjYWRiZGI2MWQ5YmFmMDVjN2Q1MTA3YzljZmJi
YTliYmJjLi4zMGE3ZGJjYjk2Y2Q2NDZlMWM1YTk2Mzc4OGRmZWUwMDNlNTk1ZGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0KQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIExlZ2FjeVRpbGVHcmlkVGlsZTo6c2hvd0JvcmRlcihib29s
IGZsYWcpCiB7CiAgICAgTGVnYWN5VGlsZUxheWVyKiBsYXllciA9IG1fdGlsZUxheWVyLmdldCgp
OwogICAgIGlmIChmbGFnKSB7Ci0gICAgICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRD
R0NvbG9yKG1fdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmNvbG9yRm9yR3JpZFRpbGVCb3JkZXIobV90
aWxlR3JpZCksIENvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICAgICAgW2xheWVyIHNldEJvcmRl
ckNvbG9yOmNhY2hlZENHQ29sb3IobV90aWxlR3JpZC0+dGlsZUNhY2hlKCkuY29sb3JGb3JHcmlk
VGlsZUJvcmRlcihtX3RpbGVHcmlkKSldOwogICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyV2lkdGg6
MC41Zl07CiAgICAgfSBlbHNlIHsKICAgICAgICAgW2xheWVyIHNldEJvcmRlckNvbG9yOm5pbF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBmNmVjOTA5ZThiMjJjZGVhNzBl
YWU0ODFlN2M2ODRkMjJkMjZiZDAxLi4zZTJhOGQ2MjJhOWM1NTcwN2QyOTIyMmQ5NjJmNTNjOGMz
NjUzZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE2NSw3ICsxNjUs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1
bGxzY3JlZW4oKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJUaHJlYWRS
dW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7Ci0gICAgICAgIFt2
aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJD
b3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsK
KyAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRD
R0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogICAgICAgICBtX21vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CiAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCA1ZmIwNTJk
NDU2N2RhMDBiZDgyZGUyMWM5YWQ2OTAxMDU1ZDVkOTE5Li40MTZkNWRkOTU1Njc5YmI4MzZlNDI5
MjExODgwYzJhYjcxMTA5NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
SW1hZ2VNYWMubW0KQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3QXRQb2ludChO
U1N0cmluZyAqc3RyaW5nLCBOU1BvaW50IHBvaW50LCBOU0ZvbnQgKmZvbnQsIE5TQ29sb3IgKgog
ICAgICAgICBDR0Zsb2F0IGJsdWU7CiAgICAgICAgIENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtb
dGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2Vd
IGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVl
biAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUs
IGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSkpOwogICAgICAgICAKICAgICAg
ICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQo
cG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
CmluZGV4IGU5M2Q4NzJlMzY2YTM3NTIzMjZkMDJjY2ZiODJmMDE2NDM4YWQ1MDYuLjljZmQwNDg5
OTMyY2ZlNTY4MWZjMWFiMDBiNzAzNDFhMTM3NWJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQoQ0FMYXll
ciAqbGF5ZXIsIGNvbnN0IENvbG9yJgogICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNhY2hlZExpbmVu
QmFja2dyb3VuZENvbG9yID0gbGluZW5CYWNrZ3JvdW5kQ29sb3IoKS5sZWFrUmVmKCk7CiAgICAg
Ly8gV2Ugb3BlcmF0ZSBvbiB0aGUgQ0FMYXllciBkaXJlY3RseSBoZXJlLCBzaW5jZSBHcmFwaGlj
c0xheWVyIGRvZXNuJ3QgaGF2ZSB0aGUgY29uY2VwdAogICAgIC8vIG9mIHBhdHRlcm4gaW1hZ2Vz
LCBhbmQgd2Uga25vdyB0aGF0IFdlYkNvcmUgd29uJ3QgdG91Y2ggdGhpcyBsYXllci4KLSAgICBs
YXllci5iYWNrZ3JvdW5kQ29sb3IgPSBjdXN0b21CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpID8g
Y2FjaGVkQ0dDb2xvcihjdXN0b21CYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
IDogY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3I7CisgICAgbGF5ZXIuYmFja2dyb3VuZENvbG9y
ID0gY3VzdG9tQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29sb3IoY3VzdG9t
QmFja2dyb3VuZENvbG9yKSA6IGNhY2hlZExpbmVuQmFja2dyb3VuZENvbG9yOwogfQogCiB2b2lk
IFNjcm9sbGJhclRoZW1lTWFjOjpyZW1vdmVPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIg
KmxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IGU3NTkx
YmVkYmY0ZDVlMGQ2OWU3MGQ3M2U3MDQyOWVkZjgxYmExNWIuLmYxZTIxMTNjZjdhYTUxMTExZTBj
NGZlNzcwMWM3MTQ1MTkxYTFjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KQEAgLTY5Miw3ICs2OTIsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNS
aW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdyYXBoaWNzQ29udAogICAgICAg
ICAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpKTsKICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IGRyYXdDZWxsT3JGb2N1
c1JpbmdJbnRvUmVjdFdpdGhWaWV3KGNlbGwsIGltYWdlQnVmZmVyRHJhd1JlY3QsIHZpZXcsIGRy
YXdCdXR0b25DZWxsLCBkcmF3Rm9jdXNSaW5nKTsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VTUkdCLCByZWN0LmxvY2F0
aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgpKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCByZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAgICAgcmV0dXJu
IG5lZWRzUmVwYWludDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAKaW5kZXggYjA1M2M0MmJhYTlmYTFkNDZiZmJjOTJkODc5MzBiZjIwZjlkMzk4Ni4u
NmI2NTY2ODhlZTkwMGQ3Y2JhYTc5MWM2YTc5MjczNDIzYjM0ZGNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7
CiAgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgICAgIEludFJl
Y3QgcGFpbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBhaW50UmVjdCwgQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChwYWlu
dFJlY3QsIENvbG9yOjpibGFjayk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggOTk1NDQ3YjU2ODAx
MDM4Y2ZmZTMzMTU4OWM3NzY0MGJjZmZjODE0YS4uOWFkNzU3ZjNlYmE1NzI2YjFkMjFjNWFkNGVk
Y2RjMTk5YjY4ZDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
Y3JvbGxiYXJUaGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIGludCBTY3JvbGxiYXJU
aGVtZU1vY2s6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSkKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xs
YmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9s
bGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogQ29sb3IoMHhGRkUwRTBFMCkpOwog
fQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3Qp
CiB7CiAgICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QodGh1bWJSZWN0LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCA3
ZjNmZTM0NjFmMzZmMjE0YzE2ODVmYTQ2YzgzNWUxN2Q1MjA0MTQ1Li44ZTRjZDg5ZDZkOWJlYmMy
MjhmOGMzMjcxYTI5ZjdiOGU0N2QyMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRS
ZW5kZXJpCiAgICAgc3RhdGljIGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcigxNDAsIDE0MCwg
MTQwKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERy
YWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVjdCByZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNrZ3JvdW5k
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNr
Z3JvdW5kQ29sb3IpOwogIAogICAgIC8vIERyYXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3Qg
Q29sb3IgdG9wQ29sb3IoMCwgMCwgMCwgMjU1KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IGVlZGY2
ZmM2ZjM1ZmVkNGY0YjQyOGQ4OThkOWRmMjI4YzFkM2I4NDAuLjUzNDkxY2I3ZWEwNzdlMjA0ZTAw
OGZkNWY0YWY1MWJhZmJmN2M4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
b3B1cE1lbnVXaW4uY3BwCkBAIC02MzIsMTggKzYzMiwxOCBAQCB2b2lkIFBvcHVwTWVudVdpbjo6
cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIAogICAgICAgICAvLyBE
cmF3IHRoZSBiYWNrZ3JvdW5kIGZvciB0aGlzIG1lbnUgaXRlbQogICAgICAgICBpZiAoaXRlbVN0
eWxlLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChpdGVtUmVjdCwg
b3B0aW9uQmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoaXRlbVJlY3QsIG9wdGlvbkJhY2tncm91bmRDb2xvcik7CiAKICAg
ICAgICAgaWYgKGNsaWVudCgpLT5pdGVtSXNTZXBhcmF0b3IoaW5kZXgpKSB7CiAgICAgICAgICAg
ICBJbnRSZWN0IHNlcGFyYXRvclJlY3QoaXRlbVJlY3QueCgpICsgc2VwYXJhdG9yUGFkZGluZywg
aXRlbVJlY3QueSgpICsgKGl0ZW1SZWN0LmhlaWdodCgpIC0gc2VwYXJhdG9ySGVpZ2h0KSAvIDIs
IGl0ZW1SZWN0LndpZHRoKCkgLSAyICogc2VwYXJhdG9yUGFkZGluZywgc2VwYXJhdG9ySGVpZ2h0
KTsKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2VwYXJhdG9yUmVjdCwgb3B0aW9uVGV4
dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3Qoc2VwYXJhdG9yUmVjdCwgb3B0aW9uVGV4dENvbG9yKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nIGl0ZW1UZXh0ID0gY2xpZW50KCktPml0ZW1U
ZXh0KGluZGV4KTsKIAogICAgICAgICBUZXh0UnVuIHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFs
bG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHls
ZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKG9wdGlvblRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKG9wdGlvblRleHRDb2xvcik7CiAgICAgICAgIAogICAgICAgICBGb250
Q2FzY2FkZSBpdGVtRm9udCA9IGNsaWVudCgpLT5tZW51U3R5bGUoKS5mb250KCk7CiAgICAgICAg
IGlmIChjbGllbnQoKS0+aXRlbUlzTGFiZWwoaW5kZXgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKaW5kZXggZGY1N2U1YTNl
NmQ5MjcyYTBhOWMyZWY5ODcxMjk5M2VlOGFmMzlmMi4uZjFjZWYwOWY1Yzc4MTg4MTY4NmU5NDNm
NTY3YTUxZjBhNTk0YzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBk
b0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29ucwogewogICAgIFRleHRSdW4gcnVuKHRleHQpOwogCi0gICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGNvbG9yKTsKICAgICBpZiAoaXNPbmVMZWZ0VG9SaWdodFJ1bihydW4pKQogICAgICAg
ICBmb250LmRyYXdUZXh0KGNvbnRleHQsIHJ1biwgcG9pbnQpOwogICAgIGVsc2UKQEAgLTcxLDcg
KzcxLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKICAgICAgICAgSW50UG9pbnQgdW5kZXJs
aW5lUG9pbnQocG9pbnQpOwogICAgICAgICB1bmRlcmxpbmVQb2ludC5tb3ZlKGJlZm9yZVdpZHRo
LCAxKTsKIAotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAg
ICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHVuZGVybGluZVBvaW50LCB1bmRlcmxpbmVkV2lk
dGgsIGZhbHNlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcAppbmRleCAyZThmZDBiYjBhMmUwYmE0M2I2ZWM1NTYwYTQzNGQ2YmZmZmRiNWJmLi4zNjg1
Y2JlMTJiYmYxMjllNTAyNzNmZWI1ZjFiMTkwMzkxMDM1NWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTQ2LDExICs0NiwxMSBAQCB2b2lkIEVsbGlwc2lz
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBMYQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5l
U3R5bGUoKTsKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CiAgICAgaWYgKHRleHRDb2xv
ciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0
ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcih0ZXh0Q29sb3IpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYg
KGxpbmVTdHlsZS50ZXh0U2hhZG93KCkpIHsKICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coTGF5
b3V0U2l6ZShsaW5lU3R5bGUudGV4dFNoYWRvdygpLT54KCksIGxpbmVTdHlsZS50ZXh0U2hhZG93
KCktPnkoKSksCi0gICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5yYWRpdXMoKSwg
bGluZVN0eWxlLnRleHRTaGFkb3coKS0+Y29sb3IoKSwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5yYWRpdXMoKSwgbGluZVN0eWxl
LnRleHRTaGFkb3coKS0+Y29sb3IoKSk7CiAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7CiAgICAg
fQogCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgICAgIC8v
IFNlbGVjdCB0aGUgY29ycmVjdCBjb2xvciBmb3IgcGFpbnRpbmcgdGhlIHRleHQuCiAgICAgICAg
IENvbG9yIGZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSA/IHBhaW50SW5m
by5mb3JjZWRUZXh0Q29sb3IoKSA6IGJsb2NrRmxvdygpLnNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpOwogICAgICAgICBpZiAoZm9yZWdyb3VuZC5pc1ZhbGlkKCkgJiYgZm9yZWdyb3VuZCAhPSB0
ZXh0Q29sb3IpCi0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmb3JlZ3JvdW5kLCBs
aW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KGZvcmVncm91bmQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMg
TFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgpAQCAtNjks
NyArNjksNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYQogCiAgICAgLy8gUmVzdG9yZSB0aGUg
cmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC5maWxsQ29s
b3IoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUu
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yKTsK
IAogICAgIGlmIChzZXRTaGFkb3cpCiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgIExheW91dFJlY3Qg
c2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBw
YWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgpLCAwLCByb290Qm94LnNlbGVj
dGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxlLCBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0
aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBp
eGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0
aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBmZDUw
OWU4ZWFkNTk2OTdkNDYwZDM4ZDMxM2UzZTA0MTZmYTY1ODc3Li42NTAyOTljNDgwZmZlNTRhZDgz
MmU4MTU5M2IxZTkwYTJkNzEwNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTQyOSwxMCArNDI5LDggQEAgdm9pZCBGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkMKICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLT5vdXRwdXRS
ZWN0KCk7CiAgICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWludE9mZnNl
dC55KCkpOwogCi0gICAgaWYgKEltYWdlQnVmZmVyKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXItPm91
dHB1dCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm91
dHB1dEJ1ZmZlciwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwKLSAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3QsIG1fcmVuZGVy
TGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7Ci0gICAg
fQorICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0cHV0QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkK
KyAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0QnVmZmVy
LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJl
cigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgZmlsdGVyLT5jbGVh
ckludGVybWVkaWF0ZVJlc3VsdHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcAppbmRleCAwMjFhMWFiNjY5MWRiYjExN2FlMjAzZTM2MjEyNDgzOGZlN2Uz
OWJiLi5jNzhiMmNhZTYwMzgxODQ2ZWU2OTAwM2NlMjMwZWUyMDIxODc5ODViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC02OTcsNyArNjk3LDcgQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICAgICAgYyA9IENvbG9yKDB4ZmYgLSBjLnJlZCgp
LCAweGZmIC0gYy5ncmVlbigpLCAweGZmIC0gYy5ibHVlKCkpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjLCBzdHlsZS5jb2xvclNwYWNlKCkpKTsgLy8g
RG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4
dCwgVGV4dFBhaW50U3R5bGUoYykpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgIAog
ICAgIC8vIElmIHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgbGV0IHRoZSB0aGluZyBiZWluZyBwYWlu
dGVkIGluIHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMgb3duIGhpZ2hsaWdodC4KQEAg
LTcyNCw3ICs3MjQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYgogCiAgICAgTGF5b3V0UmVj
dCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgp
IC0gZGVsdGFZLCBtX2xvZ2ljYWxXaWR0aCwgc2VsZWN0aW9uSGVpZ2h0KTsKICAgICBmb250LmFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQ
b3MpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0
aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVj
dGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CiAgICAgVU5VU0VEX1BBUkFNKGJveE9yaWdpbik7CkBAIC03NDUsMTMgKzc0NSwxMyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIENvbG9yIGNvbXBvc2l0aW9uQ29sb3IgPSBDb2xvcjo6
Y29tcG9zaXRpb25GaWxsOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0
UGFpbnRTdHlsZShjb21wb3NpdGlvbkNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpKTsgLy8gRG9u
J3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwg
VGV4dFBhaW50U3R5bGUoY29tcG9zaXRpb25Db2xvcikpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQg
YWxsIQogCiAgICAgTGF5b3V0VW5pdCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlw
cGVkTGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9t
KCkgOiBsb2dpY2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0
YVksIDAsIHNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1
Y3RUZXh0UnVuKHN0eWxlLCBmb250KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JU
ZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgIGNvbnRleHQuZmls
bFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlv
blJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVu
Lmx0cigpKSwgY29tcG9zaXRpb25Db2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250
ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihz
ZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwg
dGV4dFJ1bi5sdHIoKSksIGNvbXBvc2l0aW9uQ29sb3IpOwogfQogCiBzdGF0aWMgU3Ryb2tlU3R5
bGUgdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSBk
ZWNvcmF0aW9uU3R5bGUpCkBAIC05NDksNyArOTQ5LDYgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50
JgogICAgICAgICBzZXRDbGlwID0gdHJ1ZTsKICAgICB9CiAKLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpOwogICAgIGJvb2wgc2V0U2hh
ZG93ID0gZmFsc2U7CiAKICAgICBkbyB7CkBAIC05NjEsNyArOTYwLDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW50IHNoYWRvd1ggPSBpc0hv
cml6b250YWwoKSA/IHNoYWRvdy0+eCgpIDogc2hhZG93LT55KCk7CiAgICAgICAgICAgICBpbnQg
c2hhZG93WSA9IGlzSG9yaXpvbnRhbCgpID8gc2hhZG93LT55KCkgOiAtc2hhZG93LT54KCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93WCwgc2hhZG93WSAt
IGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBjb2xvclNw
YWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dYLCBz
aGFkb3dZIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCkp
OwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRvdyA9IHNo
YWRvdy0+bmV4dCgpOwogICAgICAgICB9CkBAIC05NzAsNyArOTY5LDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JgogCiAgICAgICAgIC8vIFRoZXNlIGRlY29yYXRpb25zIHNob3VsZCBtYXRjaCB0
aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRp
b25zKCkKICAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkg
ewotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmVDb2xvciwgY29s
b3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZUNv
bG9yKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25T
dHlsZVRvU3Ryb2tlU3R5bGUodW5kZXJsaW5lU3R5bGUpKTsKICAgICAgICAgICAgIGNvbnN0IGlu
dCB1bmRlcmxpbmVPZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHlsZS50ZXh0
VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIHRoaXMsIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKTsKIApAQCAtOTk0LDcgKzk5Myw3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3Iob3ZlcmxpbmVDb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lQ29sb3IpOwogICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShvdmVybGluZVN0eWxl
KSk7CiAgICAgICAgICAgICBzd2l0Y2ggKG92ZXJsaW5lU3R5bGUpIHsKICAgICAgICAgICAgIGNh
c2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKQEAgLTEwMTUsNyArMTAxNCw3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAo
ZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpIHsKLSAgICAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2hDb2xvciwgY29sb3JTcGFjZSk7CisgICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoQ29sb3IpOwogICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VT
dHlsZShsaW5ldGhyb3VnaFN0eWxlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGxpbmV0aHJvdWdo
U3R5bGUpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKQEAg
LTExMjcsNyArMTEyNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAKICAgICBDb2xvciBj
b2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIoKS50aGVtZSgpLnBsYXRmb3Jt
QWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRoZW1lKCkucGxh
dGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICB1cGRhdGVHcmFwaGljc0Nv
bnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSkp
OyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQorICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChj
b250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb2xvcikpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxs
IQogCiAgICAgLy8gVXNlIHNhbWUgeSBwb3NpdGlvbmluZyBhbmQgaGVpZ2h0IGFzIGZvciBzZWxl
Y3Rpb24sIHNvIHRoYXQgd2hlbiB0aGUgc2VsZWN0aW9uIGFuZCB0aGlzIGhpZ2hsaWdodCBhcmUg
b24KICAgICAvLyB0aGUgc2FtZSB3b3JkIHRoZXJlIGFyZSBubyBwaWVjZXMgc3RpY2tpbmcgb3V0
LgpAQCAtMTE0Miw3ICsxMTQxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRj
aE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG8KICAgICBpZiAo
c2VsZWN0aW9uUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRleHQu
ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVj
dGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4u
bHRyKCkpLCBjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwg
Y29sb3IpOwogfQogICAgIAogdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2Vy
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBi
YWNrZ3JvdW5kKQpAQCAtMTI2MSw3ICsxMjYwLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmwK
ICAgICBzdGFydCArPSAxOwogICAgIHdpZHRoIC09IDI7CiAKLSAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKHVuZGVybGluZS5jb2xvciwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUuY29sb3IpOwogICAgIGNvbnRl
eHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwogICAgIGNvbnRleHQuZHJhd0xp
bmVGb3JUZXh0KEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgp
ICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRoLCByZW5kZXJlcigpLmRv
Y3VtZW50KCkucHJpbnRpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCA3MzFhMGExNTY3NjVlMGE2NjNkODgxOTY2ZDdhOWMxYWU4NmIxN2FhLi45
M2M3MDZjMDcwNDViYjZiYjllNTRjODk1YzY1ZDAzNjk2MWY1ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE5NzMsNyArMTk3Myw3IEBAIExheW91dFJl
Y3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ss
IGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9n
aWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRS
ZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQp
KTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxs
UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0x
OTkwLDcgKzE5OTAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVj
dGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVj
dCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJs
b2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAg
ICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICByZXR1cm4g
Z2FwUmVjdDsKIH0KIApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9j
azo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0
IEwKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5
c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qocm9vdEJsb2Nr
TG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCwg
bG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggMmUwYzc2MjY0NDJjMjBiZTQ3ZGI3OGJjN2VmMWIxMDc5ZmRiMzU2
ZS4uMzU3M2MxM2M4YTMxZDFkNDhhNjQ3Yzk5NjVmYjczMzlmN2NjNWVlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludENsaXBwaW5nTWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRS
ZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIENvbG9yOjpibGFjaywg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNrKTsKIH0KIAogdm9pZCBSZW5k
ZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UmVjdCYgcGFpbnRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZDY5YzI3YjQyNDcyYzg0OWQxOGI1ZmJmNDA5
YjkyNzVmMWRiNmZmMC4uODM4ZGE4NTQ3ODdmYmEyNjIwNzdiMzU0NzU2MmNlNjUxN2ZiMDI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCkBAIC01ODksOSArNTg5LDkgQEAgc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHMKIAogICAgIEZs
b2F0U2l6ZSBzaGFkb3dPZmZzZXQoYm94U2hhZG93LT54KCksIGJveFNoYWRvdy0+eSgpKTsKICAg
ICBpZiAoIWJveFNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgY29udGV4dC5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNv
bG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSk7CiAg
ICAgZWxzZQotICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJv
eFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hh
ZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFn
ZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5
b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCkBAIC02ODAsMTUgKzY4MCwxNSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBw
ZWRCb3JkZXIgPSBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsCiAgICAgICAgICAg
ICAgICAgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKS5waXhlbFNuYXBwZWRSb3Vu
ZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChw
aXhlbFNuYXBwZWRCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4
ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2F2ZSgpOwogICAgICAgICAgICAgICAgIGNsaXBSb3VuZGVkSW5uZXJS
ZWN0KGNvbnRleHQsIHBpeGVsU25hcHBlZFJlY3QsIHBpeGVsU25hcHBlZEJvcmRlcik7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5m
aWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IsIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxT
bmFwcGVkUmVjdCwgYmdDb2xvcik7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgxNywx
MCArODE3LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAgaWYg
KCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQogICAgICAgICAgICAgICAgICAg
ICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7CiAKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmFzZUNvbG9yLCBDb21w
b3NpdGVDb3B5KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBi
Z0NvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJh
Y2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBv
cGVyYXRpb24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJl
Y3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAgICB9CkBAIC04MzUsMTIgKzgz
NSwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+
Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1h
c2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVtaW5hbmNlKTsKICAgICAgICAg
ICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShj
b250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAg
ICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBn
ZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2Uo
KSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobWFza0ltYWdl
ICYmIGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewotICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqbWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwg
Q29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptYXNrSW1hZ2UsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKICAgICAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KQEAgLTE2OTEsNyArMTY5
MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJl
Y3QocGl4ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2Vd
LmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCkpOwogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9IApAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1
bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNp
YmxlRWRnZV0uY29sb3IoKSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgo
cGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE3NTIsNyArMTc1Miw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERP
VFRFRDoKICAgICBjYXNlIERBU0hFRDogewotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAKICAgICAgICAgLy8gVGhlIHN0cm9rZSBpcyBk
b3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBpcyB0aGUgCiAgICAgICAgIC8v
IG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhlIHN0cm9rZSBpcyBjbGlwcGVk
IG9mZi4gCkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpk
cmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LAogICAg
IH0KIAogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICBncmFwaGljc0Nv
bnRleHQuZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIApAQCAtMjI2NSw5ICsyMjY1LDkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGZpbGxSZWN0Lm1vdmUoZXh0cmFPZmZz
ZXQpOwogCiAgICAgICAgICAgICBpZiAoc2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpKQotICAg
ICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hh
ZG93Q29sb3IpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogCiAgICAgICAgICAgICBGbG9hdFJvdW5k
ZWRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQ
YWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0
IHBpeGVsU25hcHBlZEZpbGxSZWN0ID0gZmlsbFJlY3QucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0yMjg1LDEyICsyMjg1LDEyIEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgaW5mbHVlbmNlUmVjdC5leHBh
bmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJlYWQpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGluZmx1ZW5jZVJlY3QsIGluZm8u
cmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVk
RmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVj
dCgpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJs
ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0
UmFkaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4
ZWxTbmFwcGVkRmlsbFJlY3QsIENvbG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmls
bFJlY3QsIENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5u
ZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKQEAg
LTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hh
ZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ss
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChw
aXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzE3
LDkgKzIzMTcsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAo
cGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhh
c0JvcmRlclJhZGl1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJl
Y3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdCwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25h
cHBlZEJvcmRlclJlY3QsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5y
ZWN0KCksIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpLCBzaGFk
b3dDb2xvcik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAg
LTIzNTYsMTEgKzIzNTYsMTEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hT
aGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAg
IHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+
aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsK
IAotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShwaXhlbFNuYXBw
ZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KHBpeGVsU25hcHBlZE91dGVyUmVjdCwgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xv
cik7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggYjUzZjJhZjRmZWU1ZGJmMWYzOTA4ZDg0MjNi
NDNlYTk1NDE1MjQ4MS4uNWM2NmI3NzZjNjliOWQzMzY2Mzg2YWE1Yjc1NTg2OTI2MTcxYTk2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xv
cihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGJveE9yaWdpbi5tb3ZlKGJvcmRlckxlZnQoKSAr
IHBhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxQYXRoKGdldFBhdGgoYm94T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZTcwMDM4ZTkyZjZjN2I0NjFmYzA0
OWFkM2EzM2FhZGYxYzdlMTFlYS4uOGMyZWEwOGY3MWRlNjlmMmQ0OGU1MWFmY2MzNGZjYzQ0MDI5
ZTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAt
MTgyMCw3ICsxODIwLDYgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICBpZiAoYm9yZGVy
U3R5bGUgPT0gRE9VQkxFICYmICh0aGlja25lc3MgKiBkZXZpY2VTY2FsZUZhY3RvcikgPCAzKQog
ICAgICAgICBib3JkZXJTdHlsZSA9IFNPTElEOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlID0gdGhpcy0+c3R5bGUoKTsKICAgICBzd2l0Y2ggKGJvcmRlclN0eWxlKSB7CiAgICAgY2Fz
ZSBCTk9ORToKICAgICBjYXNlIEJISURERU46CkBAIC0xODMwLDcgKzE4MjksNyBAQCB2b2lkIFJl
bmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRgogICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3ND
b250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICBTdHJva2VTdHlsZSBvbGRTdHJva2VT
dHlsZSA9IGdyYXBoaWNzQ29udGV4dC5zdHJva2VTdHlsZSgpOwogICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7Ci0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpOwogICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tl
IDogRG90dGVkU3Ryb2tlKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKHJvdW5k
UG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh4MSwgeTEpLCBkZXZpY2VTY2FsZUZhY3Rv
ciksIHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh4MiwgeTIpLCBkZXZpY2VT
Y2FsZUZhY3RvcikpOwpAQCAtMTg0NSw3ICsxODQ0LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpk
cmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEYKICAgICAgICAgaWYgKCFhZGphY2VudFdpZHRoMSAmJiAhYWRqYWNlbnRXaWR0aDIpIHsKICAg
ICAgICAgICAgIFN0cm9rZVN0eWxlIG9sZFN0cm9rZVN0eWxlID0gZ3JhcGhpY3NDb250ZXh0LnN0
cm9rZVN0eWxlKCk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoY29sb3IpOwogCiAgICAgICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3Jh
cGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhhbnRpYWxpYXMpOwpAQCAtMTk5Niw3ICsxOTk1LDcgQEAg
dm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgICAgIC8vIFR1cm4gb2ZmIGFudGlhbGlh
c2luZyB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgZHJhd0NvbnZleFBvbHlnb24oKTsKICAgICAg
ICAgICAgIC8vIHRoaXMgbWF0dGVycyBmb3IgcmVjdHMgaW4gdHJhbnNmb3JtZWQgY29udGV4dHMu
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwot
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IpOwogICAgICAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5z
aG91bGRBbnRpYWxpYXMoKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRB
bnRpYWxpYXMoYW50aWFsaWFzKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3UmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKQEAgLTIwNDAsNyArMjAzOSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGCiAgICAgICAgIH0KIAogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KGNvbG9yKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdDb252ZXhQb2x5Z29uKDQsIHF1
YWQsIGFudGlhbGlhcyk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShv
bGRTdHJva2VTdHlsZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwOCw3ICsyMTA3LDcgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFJlY3QmIHBhaW50UmUKICAgICAgICAgICAgIHBhdGguYWRkUmVjdChvdXRlcik7CiAg
ICAgICAgICAgICBwYXRoLmFkZFJlY3QoaW5uZXIpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKG91dGxpbmVDb2xvciwgc3R5bGVUb1VzZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihvdXRsaW5lQ29sb3IpOwog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBhM2Y4ODkxZmQ5OTdlOGMyY2E4NmY1MGNiNWZmZjZj
MWIwMDU3ZWQ5Li4xMzZlMTBiNGEyOWIxZGVlN2RlYTMyNzM1NjYyNDk1M2MxMGEwZDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
QEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBz
aG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAg
ICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dR
dWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVh
bGl0eVNjYWxpbmcpKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250
ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgY29udGV4dC5j
bGlwKGNvbnRlbnRSZWN0KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxl
UGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVz
c2VkQ29sb3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRD
b2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpKTsKICAgICBjb250ZXh0
LmZpbGxQYXRoKGJhY2tncm91bmQpOwogCiAgICAgUGF0aCBzdHJva2VQYXRoOwpAQCAtMzIwLDIx
ICszMjAsMjEgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICBzdHJva2VSZWN0LmluZmxh
dGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChzdHJva2VSZWN0LCBGbG9hdFNp
emUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAxLCByZXBsYWNlbWVudFRleHRS
b3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5h
dmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcih1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCkpOwog
ICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgIGNvbnRleHQuc3Ryb2tlUGF0
aChzdHJva2VQYXRoKTsKIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZv
bnQuZm9udE1ldHJpY3MoKTsKICAgICBmbG9hdCBsYWJlbFggPSByb3VuZGYocmVwbGFjZW1lbnRU
ZXh0UmVjdC5sb2NhdGlvbigpLngoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0TGVmdFRl
eHRNYXJnaW4pOwogICAgIGZsb2F0IGxhYmVsWSA9IHJvdW5kZihyZXBsYWNlbWVudFRleHRSZWN0
LmxvY2F0aW9uKCkueSgpICsgKHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpLmhlaWdodCgpIC0g
Zm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMiArIGZvbnRNZXRyaWNzLmFzY2VudCgpICsgcmVwbGFj
ZW1lbnRUZXh0Um91bmRlZFJlY3RUb3BUZXh0TWFyZ2luKTsKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSk7CiAgICAgY29udGV4
dC5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxhYmVsWCwgbGFiZWxZKSk7CiAK
ICAgICBpZiAoc2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24oZG9jdW1lbnQo
KSwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikpIHsKICAgICAgICAgYXJyb3dSZWN0Lmlu
ZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nKTsKIAogICAgICAgICBjb250ZXh0
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpKTsKICAgICAgICAg
Y29udGV4dC5maWxsRWxsaXBzZShhcnJvd1JlY3QpOwogCiAgICAgICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IDY0ZWNhY2IwNmVj
ZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEuLmZkMTEzYzRmOGUyMjA5M2ExMGNhNjVhZmQy
NGI4ZTI3YTdmMzhhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2luCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRZID0gYmFzZWxpbmVQ
b3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIERyYXcgdGhlIGZpbGVuYW1lCiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJvdW5kVG9J
bnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMmY4MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4
ZDIyZmE4MGE2YS4uNjNjYTZkYWRmNzhmMTgxYWZjNDY2OTk4MjRiYTcwMmUzMGM3MzU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05MSwxNCAr
OTEsMTMgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QKICAgICAKICAgICAvLyBGaWxsIGZpcnN0
LgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xvclNwYWNlKCk7Ci0gICAgY29u
dGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xv
cigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmls
bFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6
IGJvcmRlckZpbGxDb2xvcigpKTsKICAgICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBi
dXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBh
IGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAg
ICAgaWYgKGJvcmRlclJlY3Qud2lkdGgoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwg
Ym9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lm1heFgoKSAtIDEsIGJvcmRlclJlY3Qu
eSgpKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0
aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lm1heFgo
KSAtIDEsIGJvcmRlclJlY3QueSgpKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJFbmRF
ZGdlQ29sb3IoKSk7CiAgICAgfQogfQogCkBAIC0xMTEsMTQgKzExMCwxMyBAQCB2b2lkIFJlbmRl
ckZyYW1lU2V0OjpwYWludFJvd0JvcmRlcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgYgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRl
clJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxs
Q29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBm
cmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCkp
OwogCiAgICAgLy8gTm93IHN0cm9rZSB0aGUgZWRnZXMgYnV0IG9ubHkgaWYgd2UgaGF2ZSBlbm91
Z2ggcm9vbSB0byBwYWludCBib3RoIGVkZ2VzIHdpdGggYSBsaXR0bGUKICAgICAvLyBiaXQgb2Yg
dGhlIGZpbGwgY29sb3Igc2hvd2luZyB0aHJvdWdoLgogICAgIGlmIChib3JkZXJSZWN0LmhlaWdo
dCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3Qu
bG9jYXRpb24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCks
IGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQo
Ym9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChJ
bnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJ
bnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMWQ0NzhiZjZmZmM4
N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNy4uMTRjN2EwMjMwMmMxMzZiZjYwNzc1ZDU5NTVl
ZmFmNTczODU1MWExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC0zOTIsOCArMzkyLDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgICAgICAg
ICAgLy8gRHJhdyBhbiBvdXRsaW5lIHJlY3Qgd2hlcmUgdGhlIGltYWdlIHNob3VsZCBiZS4KICAg
ICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6bGlnaHRHcmF5LCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnQsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJv
cmRlciArIGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dp
ZHRoLCBjSGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CiAKICAgICAg
ICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKQEAgLTQyNCwxMyArNDI0LDEz
IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRB
VElPTikKICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3Jp
ZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zm
c2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRp
b24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RU
b0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdl
U2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAg
ICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBT
dHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyht
X2FsdFRleHQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgICAgICAgICAgICAgIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3Mo
KTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2Vu
dCgpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3Qo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNl
dEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRp
ZgotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0
LAorICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHJlY3QsCiAgICAgICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRmZTE2YjcyNzZhNWJjNzQwOWMwMjkxYTk2
YWJjMDY5YzhmN2E0ZWEuLjZlMjE3YTcxYmZmNDkzZjg3YzM5MzMzNDk2MDAwYWQwZWM1NGEyMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTgyMSw3ICsx
ODIxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclAKICNlbmRpZgogCiAjaWZkZWYgUkVWRUFM
X1RSQU5TUEFSRU5DWV9MQVlFUlMKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
KDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpKTsKICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQ2xpcFJlY3QpOwogI2VuZGlmCiAg
ICAgfQpAQCAtMzYwOCw5ICszNjA4LDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxv
d0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQKIAogdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
CiB7Ci0gICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKLSAgICBBU1NFUlQoYm94KTsK
LQogICAgIEludFJlY3QgYWJzUmVjdCA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBhYnNSZWN0
Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdl
UmVjdCkpCkBAIC0zNjI5LDcgKzM2MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9s
bENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQgd2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9s
bGJhcnMsIHNpbmNlIHdlIG5lZWQKICAgICAvLyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAg
ICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xsYmFycygpKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KGFic1JlY3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoYWJzUmVjdCwgQ29sb3I6OndoaXRlKTsKIH0KIAogdm9pZCBS
ZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCkBAIC0zNjUyLDcgKzM2
NDksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShyZXNpemVyQ29ybmVyUmVjdC54KCkgKyBjb3JuZXJSZXNpemVyU2l6ZS53aWR0aCgpLCByZXNp
emVyQ29ybmVyUmVjdC55KCkgKyByZXNpemVyQ29ybmVyUmVjdC5oZWlnaHQoKSAtIGNvcm5lclJl
c2l6ZXJTaXplLmhlaWdodCgpKTsKICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoLTEu
MCwgMS4wKSk7CiAgICAgICAgIGlmIChyZXNpemVDb3JuZXJJbWFnZSkKLSAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsK
KyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKICAgICAgICAgY29udGV4dC5y
ZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjYwLDcgKzM2NTcsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgIGlmICghcmVzaXplQ29ybmVySW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gc25hcFJlY3RUb0RldmljZVBp
eGVscyhMYXlvdXRSZWN0KHJlc2l6ZXJDb3JuZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkgLSBjb3Ju
ZXJSZXNpemVyU2l6ZSwgY29ybmVyUmVzaXplclNpemUpLCByZW5kZXJlcigpLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnJlc2l6ZUNvcm5l
ckltYWdlLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgaW1hZ2VSZWN0KTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0KQpAQCAtMzY5NSw5ICszNjkyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAg
ICAgY29udGV4dC5jbGlwKGFic1JlY3QpOwogICAgICAgICBMYXlvdXRSZWN0IGxhcmdlckNvcm5l
ciA9IGFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKExheW91dFNpemUobGFy
Z2VyQ29ybmVyLndpZHRoKCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSksIGxhcmdlckNvcm5l
ci5oZWlnaHQoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgxKSkpOwotICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdC
KDIxNywgMjE3LCAyMTcpKSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEu
MGYpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOwogICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxh
cmdlckNvcm5lcikpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAppbmRleCBlNTczZDUwMDRmYjViNTkxMDkyMDMxNjkwNDI3NDAwMDBiNjEzZGE1
Li41NTMxNzBhZGM0NDFmZDk5NTNiODg5NGFhNGNmM2Y4N2JiMjc4MjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zOTYsOCArMzk2LDcgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgQ29s
b3JTcGFjZSBjb2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGNvbG9yU3BhY2UpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7CiAKICAgICBUZXh0UnVu
IHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHls
ZS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShpdGVtU3R5bGUudW5pY29kZUJpZGkoKSksIHRydWUs
IFRleHRSdW46Ok5vUm91bmRpbmcpOwogICAgIEZvbnRDYXNjYWRlIGl0ZW1Gb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwpAQCAtNDMyLDEwICs0MzEsOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JgogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBsaXN0IGJveCBpdGVt
CiAgICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgIT0gSElEREVOKSB7Ci0gICAgICAgIENv
bG9yU3BhY2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS5jb2xvclNwYWNlKCk7CiAgICAgICAgIExh
eW91dFJlY3QgaXRlbVJlY3QgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHBhaW50T2Zmc2V0LCBsaXN0
SW5kZXgpOwogICAgICAgICBpdGVtUmVjdC5pbnRlcnNlY3QoY29udHJvbENsaXBSZWN0KHBhaW50
T2Zmc2V0KSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZElu
dFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9y
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAppbmRleCBmNmUzNDZkMzdiMDViYTQ2YTlmNjYwODA2MjA1YjQyNTFjN2IzNTE5Li40
NzZlOWM0NzJiMTE0OTBmZDYyNmRkY2M5ODc5Mjc5ZjgxZTMwM2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk4LDExICsxMTk4LDEx
IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBpZiAoaXNJbWFnZSgpKSB7CiAgICAg
ICAgIGlmIChSZWZQdHI8SW1hZ2U+IG1hcmtlckltYWdlID0gbV9pbWFnZS0+aW1hZ2UodGhpcywg
bWFya2VyLnNpemUoKSkpCi0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbWFya2VySW1h
Z2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOworICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoKm1hcmtlckltYWdlLCBtYXJrZXIpOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3Rh
dGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3Qg
PSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9y
aWdpbik7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJl
Y3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNl
bFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIxMCwxNCArMTIxMCwxNCBAQCB2b2lkIFJl
bmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5v
bmUpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7
CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5maWxs
UmVjdChzbmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKGNvbG9yKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxp
c3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEyMjUsNyArMTIyNSw3IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNl
KG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ2lyY2xlOgotICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlcik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgU3F1YXJlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggMzRiNTVmMjkyM2Q5MWFjY2RiNDEy
MmUxNTBkZmRhZTJkMDdkYWYxMi4uODRkNDRiMTI1MjRkNDQyZWIwNTA3ZDY4MTNjY2ZmODI5NDky
NzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoZHJhd1Nl
bGVjdGlvblRpbnQpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25QYWludGluZ1JlY3Qg
PSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsZWN0aW9uUGFpbnRpbmdSZWN0Lm1v
dmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5m
aWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVj
dCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IGFmOTYx
MTgwYWRlZTE1ZWRhZDJiYTdiNmY5ZmYyZGMzOGE4YzY4ODYuLjU0ZmVhMGMxNmVlOGMyOTUwOTM1
NjQ0NjZiOTA2YmI3ZjQwMDFkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmRpZFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgU2Nyb2xsYmFyCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBj
b3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgY29udGV4dC5maWxs
UmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlKTsKIH0KIAogdm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCBlYzQyYzYy
YzgxMjdjZWQzOGU1NjE2ODRkODdlOGI1MDlmMTliM2M1Li5lOGI4ZjBmYjRiZjM1Zjc4MDZhNTU1
NTlmZjFmNWJmMWNiN2M0N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAg
b3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmlt
YWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2Us
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
b3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhv
cmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCiBDdXJz
b3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAxYWFmMzY5MGVlOWI3ZGYxNzdjMTA3
MTdiZjkxOGZlMjMxNTk4MDlhLi5lNWE4NWNmMTRhYzJjZjBmNmQxOTExNjNjMTRiNDZkYmYwYzcw
YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEwMzYs
NyArMTAzNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgfQogICAgIFJlZjxIVE1M
Q29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwotICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5v
ZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRp
b25FbGVtZW50Pigqbm9kZSkpOwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxl
bWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggMWJmMjA1MjVlZTBjYzM0MDM5ODM4
MjUwN2U4OTM2YWQ1NTQ0MTQ4Yy4uMGQ1YjVlZjY4OGUyNGUzMTNkZTYwOThkYzNhZGI3NjE5MDBm
MTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAt
MTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIENHRnVuY3Rpb25SZWYgZ2V0U2hhcmVkRnVuY3Rpb25S
ZWYoSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIEludGVycG9sYXRpb24KIAogc3RhdGljIHZvaWQg
ZHJhd0F4aWFsR3JhZGllbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElPU0dyYWRpZW50UmVmIGdy
YWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBz
dG9wUG9pbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBSZXRhaW5QdHI8
Q0dTaGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChkZXZp
Y2VSR0JDb2xvclNwYWNlUmVmKCksIHN0YXJ0UG9pbnQsIHN0b3BQb2ludCwgZ2V0U2hhcmVkRnVu
Y3Rpb25SZWYoZ3JhZGllbnQsIGludGVycG9sYXRpb24pLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBS
ZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVB
eGlhbChzUkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdG9wUG9pbnQsIGdldFNoYXJl
ZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZhbHNlKSk7CiAg
ICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZy5nZXQoKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYgY29udGV4dCwgSU9TR3Jh
ZGllbnRSZWYgZ3JhZGllbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIGZsb2F0IHN0
YXJ0UmFkaXVzLCBjb25zdCBGbG9hdFBvaW50JiBzdG9wUG9pbnQsIGZsb2F0IHN0b3BSYWRpdXMs
IEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBSZXRhaW5QdHI8Q0dTaGFkaW5n
UmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoZGV2aWNlUkdCQ29s
b3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdGFydFJhZGl1cywgc3RvcFBvaW50LCBzdG9wUmFk
aXVzLCBnZXRTaGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiksIGZhbHNl
LCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHNoYWRpbmcgPSBhZG9wdENG
KENHU2hhZGluZ0NyZWF0ZVJhZGlhbChkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkgLyogRklYTUUg
Ki8sIHN0YXJ0UG9pbnQsIHN0YXJ0UmFkaXVzLCBzdG9wUG9pbnQsIHN0b3BSYWRpdXMsIGdldFNo
YXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZhbHNlKSk7
CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZy5nZXQoKSk7CiB9CiAK
QEAgLTM5MiwxMiArMzkyLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hE
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpCiAgICAgICAgIH07
CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobGluZVdp
ZHRoKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCAwLjdmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
MC43ZikpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0pvaW5lZExpbmVzKHNo
YWRvdywgMywgdHJ1ZSwga0NHTGluZUNhcFNxdWFyZSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBjbGlwLmhl
aWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpKTsKIAogICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsKICAgICB9
IGVsc2UgewpAQCAtNDU4LDcgKzQ1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFk
aW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJCiAgICAg
ICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKICAg
ICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQoKSAqIElubmVySW52ZXJzZVJhdGlvKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNlKGNsaXAsIENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgc2hhZG93Q29sb3IoKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVsbGlw
c2UoY2xpcCwgQ29sb3I6OndoaXRlLCBzaGFkb3dDb2xvcigpKTsKIAogICAgICAgICBGbG9hdFNp
emUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAuaGVpZ2h0KCkgLyAyLjBmKTsKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChjbGlwLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKQEAgLTY0OCw3ICs2NDgs
NyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMo
Y29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgICAgICBGbG9hdFNpemUoMCwgMCks
IEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndp
ZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0
KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksCiAgICAgICAgICAgICBGbG9hdFNpemUoMCwg
MCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1
cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJl
Y3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSkpKTsKIAotICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KGJ1dHRvbkNsaXAsIHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChidXR0b25DbGlwLCBzdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikpOwogCiAg
ICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShpc0Zv
Y3VzZWQoYm94KSAmJiAhaXNSZWFkT25seUNvbnRyb2woYm94KSA/IENvbmNhdmVHcmFkaWVudCA6
IENvbnZleEdyYWRpZW50KSwgYnV0dG9uQ2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGJ1dHRv
bkNsaXAueCgpLCBidXR0b25DbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwogICAg
IH0KQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0
QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIEZs
b2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAueCgpICsgKGJ1dHRvbkNsaXAud2lkdGgoKSAtIGNv
dW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBhZGRpbmcpIC8gMi4wLCBidXR0b25DbGlwLm1heFko
KSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxs
aXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbG9yKDAu
MGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29sb3I6Ondo
aXRlLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjVmKSk7CiAgICAgICAgICAgICBlbGxpcHNl
Lm1vdmUoc2l6ZSArIHBhZGRpbmcsIDApOwogICAgICAgICB9CiAgICAgfSAgZWxzZSB7CkBAIC02
ODIsMTIgKzY4MiwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIHNoYWRvd1sy
XSA9IEZsb2F0UG9pbnQoYXJyb3dbMl0ueCgpLCBhcnJvd1syXS55KCkgKyAxLjBmKTsKIAogICAg
ICAgICBmbG9hdCBvcGFjaXR5ID0gaXNSZWFkT25seUNvbnRyb2woYm94KSA/IDAuMiA6IDAuNTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAw
LjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNp
dHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSk7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IG9wYWNpdHkpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Q29udmV4UG9seWdv
bigzLCBzaGFkb3csIHRydWUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xv
cjo6d2hpdGUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xv
cjo6d2hpdGUpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29u
KDMsIGFycm93LCB0cnVlKTsKICAgICB9CiAKQEAgLTc3Miw5ICs3NzIsOSBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25z
dCBQYWludEluZm8mCiAKICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgIGlmIChyZWFkb25seSkKLSAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAx
NzgsIDE3OCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
NzYsIDc2LCA3NiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcig3NiwgNzYsIDc2KSk7CiAKICAgICAgICAg
UmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IHJvdW5kZWRSZWN0UGF0aCA9IGFkb3B0Q0YoQ0dQ
YXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICAgICAgQ0dQYXRoQWRkUm91bmRlZFJlY3Qocm91bmRl
ZFJlY3RQYXRoLmdldCgpLCAwLCB0cmFja0NsaXAsIGNvcm5lcldpZHRoLCBjb3JuZXJIZWlnaHQp
OwpAQCAtODU5LDggKzg1OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NC
YXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgc3Ryb2tl
R3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKICAg
ICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KHN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxs
KCkpOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gcmVuZGVyZXIuc3R5bGUoKS5jb2xv
clNwYWNlKCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSks
IGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAy
NTUpKTsKIAogICAgIFBhdGggdHJhY2tQYXRoOwogICAgIEZsb2F0UmVjdCB0cmFja1JlY3QocmVj
dC54KCkgKyAwLjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgcmVjdC53aWR0
aCgpIC0gMC41LCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7CkBAIC0xMDI0LDggKzEwMjMsOCBA
QCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUgogCiAgICAgICAgIC8vIEJhY2tncm91bmQgcGljdHVy
ZSBmcmFtZSBhbmQgc2ltcGxlIGJhY2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQgbWF0Y2hp
bmcgdGhlIGJ1dHRvbi4KICAgICAgICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3IgPSBDb2xv
cihidXR0b25SZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcikucmdiKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3Qs
IGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJl
RnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZmlsbFJlY3QodGh1bWJuYWlsUmVjdCwgYmFja2dyb3VuZEltYWdlQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNp
emUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xv
cik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QodGh1bWJuYWlsUmVjdCwg
YmFja2dyb3VuZEltYWdlQ29sb3IpOwogICAgICAgICB7CiAgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCk7CkBAIC0xMDQ1LDcgKzEwNDQsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UgogICAgIH0KIAogICAgIC8vIEZvcmVncm91bmQgcGljdHVyZSBmcmFtZSBhbmQgaWNvbi4KLSAg
ICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRo
dW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNp
emUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IpOwogICAgIGljb24tPnBhaW50
KHBhaW50SW5mby5jb250ZXh0KCksIHRodW1ibmFpbFJlY3QpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDkyYWYw
Y2Y1YWM1YTgzZjgwYjc2MTA3ZTQ1ZmVmZjY2ZWRjYWYzYmQuLjdmOGRjMjQyMTkwZjllMGQwOTYx
NTMxM2Y4YjIyNjdjOWJlYWUzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KQEAgLTExNTYsNyArMTE1Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAg
ICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBpbmZsYXRl
ZFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMzAxLDcgKzEz
MDEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAKICAgICBGbG9hdFBvaW50IGFycm93
MVszXTsKQEAgLTEzMzAsMTEgKzEzMzAsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGMKICAg
ICAvLyBEcmF3IHRoZSBzZXBhcmF0b3IgdG8gdGhlIGxlZnQgb2YgdGhlIGFycm93cwogICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAvLyBEZWxpYmVyYXRlbHkg
aWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4uCiAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Io
bGVmdFNlcGFyYXRvckNvbG9yKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdMaW5lKElu
dFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMubWF4
WSgpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHJpZ2h0U2Vw
YXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvcik7CiAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9y
U3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkp
KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxp
Z25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29s
b3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAg
Y29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRl
U291cmNlT3Zlcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMTg0LDcgKzIxODQsNyBA
QCBzdGF0aWMgTlNDb2xvciAqdGl0bGVUZXh0Q29sb3JGb3JBdHRhY2htZW50KGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgaWYgKGF0dGFjaG1lbnQuc2VsZWN0aW9uU3Rh
dGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgaWYgKGF0dGFj
aG1lbnQuZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAg
ICAgIHJldHVybiBbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29sb3JdOyAg
ICAKLSAgICAgICAgcmV0dXJuIChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2htZW50VGl0
bGVJbmFjdGl2ZVRleHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcmV0
dXJuIChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2htZW50VGl0bGVJbmFjdGl2ZVRleHRD
b2xvcigpKTsKICAgICB9CiAKICAgICByZXR1cm4gW05TQ29sb3IgYmxhY2tDb2xvcl07CkBAIC0y
Mjk0LDcgKzIyOTQsNyBAQCB2b2lkIEF0dGFjaG1lbnRMYXlvdXQ6OmxheU91dFN1YnRpdGxlKGNv
bnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgUmV0YWluUHRyPENURm9udFJl
Zj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJ
Rm9udFN5c3RlbSwgYXR0YWNobWVudFN1YnRpdGxlRm9udFNpemUsIGxhbmd1YWdlKSk7CiAgICAg
TlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAgICAgIChpZClrQ1RGb250QXR0
cmlidXRlTmFtZTogKGlkKWZvbnQuZ2V0KCksCi0gICAgICAgIChpZClrQ1RGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lOiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNobWVudFN1YnRp
dGxlVGV4dENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpCisgICAgICAgIChpZClrQ1RGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNo
bWVudFN1YnRpdGxlVGV4dENvbG9yKCkpCiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3VidGl0bGVUZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VidGl0bGVUZXh0IGF0dHJpYnV0ZXM6dGV4
dEF0dHJpYnV0ZXNdKTsKICAgICBzdWJ0aXRsZUxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdp
dGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRlZFN1YnRp
dGxlVGV4dC5nZXQoKSkpOwpAQCAtMjM1NSw3ICsyMzU1LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRB
dHRhY2htZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYsIEdyYXBoaWNz
Q29udGUKICAgICBpZiAocGFpbnRCb3JkZXIpCiAgICAgICAgIGJhY2tncm91bmRSZWN0LmluZmxh
dGUoLWF0dGFjaG1lbnRJY29uU2VsZWN0aW9uQm9yZGVyVGhpY2tuZXNzKTsKIAotICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYmFja2dyb3VuZFJlY3QsIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpKGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cykpLCBhdHRh
Y2htZW50SWNvbkJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0LCBG
bG9hdFJvdW5kZWRSZWN0OjpSYWRpaShhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRpdXMpKSwg
YXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAKICAgICBpZiAocGFpbnRCb3JkZXIp
IHsKICAgICAgICAgRmxvYXRSZWN0IGJvcmRlclJlY3QgPSBsYXlvdXQuaWNvbkJhY2tncm91bmRS
ZWN0OwpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNv
bkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYsIEdyYXBoaWNzQ29udGUKICAgICAg
ICAgRmxvYXRTaXplIGljb25CYWNrZ3JvdW5kUmFkaXVzU2l6ZShhdHRhY2htZW50SWNvbkJhY2tn
cm91bmRSYWRpdXMsIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyk7CiAgICAgICAgIFBh
dGggYm9yZGVyUGF0aDsKICAgICAgICAgYm9yZGVyUGF0aC5hZGRSb3VuZGVkUmVjdChib3JkZXJS
ZWN0LCBpY29uQmFja2dyb3VuZFJhZGl1c1NpemUpOwotICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYXR0YWNobWVudEljb25Cb3JkZXJDb2xv
cigpKTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYXR0YWNobWVudEljb25T
ZWxlY3Rpb25Cb3JkZXJUaGlja25lc3MpOwogICAgICAgICBjb250ZXh0LnN0cm9rZVBhdGgoYm9y
ZGVyUGF0aCk7CiAgICAgfQpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRB
dHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1l
bnQsIEcKICAgICBlbHNlCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGF0dGFjaG1lbnRUaXRs
ZUluYWN0aXZlQmFja2dyb3VuZENvbG9yKCk7CiAKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihi
YWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGJhY2tncm91bmRDb2xvcik7CiAKICAgICBQYXRoIGJhY2tncm91bmRQYXRoID0gUGF0
aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHMoYmFja2dyb3VuZFJlY3RzLCBh
dHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUmFkaXVzKTsKICAgICBjb250ZXh0LmZpbGxQYXRoKGJh
Y2tncm91bmRQYXRoKTsKQEAgLTI0NDcsNyArMjQ0Nyw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0
YWNobWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEdyYXBo
aWNzCiAgICAgYmFja2dyb3VuZFJlY3QuaW5mbGF0ZSgtYXR0YWNobWVudFByb2dyZXNzQmFyQm9y
ZGVyV2lkdGggLyAyKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYmFja2dyb3VuZFJvdW5kZWRS
ZWN0KGJhY2tncm91bmRSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShiYWNrZ3JvdW5kUmVj
dC5oZWlnaHQoKSAvIDIpKTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChiYWNrZ3JvdW5k
Um91bmRlZFJlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcigpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChiYWNrZ3JvdW5k
Um91bmRlZFJlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcigpKTsKIAog
ICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU2F2ZXIoY29udGV4
dCk7CkBAIC0yNDU3LDEzICsyNDU3LDEzIEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFBy
b2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEdyYXBoaWNzCiAgICAg
ICAgIHByb2dyZXNzUmVjdC5zZXRXaWR0aChwcm9ncmVzc1JlY3Qud2lkdGgoKSAqIHByb2dyZXNz
KTsKICAgICAgICAgcHJvZ3Jlc3NSZWN0ID0gZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyhwcm9n
cmVzc1JlY3QsIGF0dGFjaG1lbnQuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAot
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHByb2dyZXNzUmVjdCwgYXR0YWNobWVudFByb2dyZXNz
QmFyRmlsbENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KHByb2dyZXNzUmVjdCwgYXR0YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9yKCkpOwog
ICAgIH0KIAogICAgIFBhdGggYm9yZGVyUGF0aDsKICAgICBmbG9hdCBib3JkZXJSYWRpdXMgPSBi
b3JkZXJSZWN0LmhlaWdodCgpIC8gMjsKICAgICBib3JkZXJQYXRoLmFkZFJvdW5kZWRSZWN0KGJv
cmRlclJlY3QsIEZsb2F0U2l6ZShib3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1cykpOwotICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IoKSwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihhdHRhY2ht
ZW50UHJvZ3Jlc3NCYXJCb3JkZXJDb2xvcigpKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNr
bmVzcyhhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJXaWR0aCk7CiAgICAgY29udGV4dC5zdHJv
a2VQYXRoKGJvcmRlclBhdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCmluZGV4IDkwMjk1Y2IxYWM5NWU0MDljNDQ5ZjkwOTViOTNmZDg2ZTRkNzFkNTcuLjJkMTU0
ZGUyMTQwNzRlODkyMGM5NjYyNWFjN2EyY2FjMWRiYjQ1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIFJlbmRlclZpZXc6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCiAKICAgICAvLyBUaGlzIGF2b2lkcyBwYWludGluZyBnYXJiYWdlIGJldHdlZW4gY29sdW1u
cyBpZiB0aGVyZSBpcyBhIGNvbHVtbiBnYXAuCiAgICAgaWYgKGZyYW1lVmlldygpLnBhZ2luYXRp
b24oKS5tb2RlICE9IFBhZ2luYXRpb246OlVucGFnaW5hdGVkICYmIHBhaW50SW5mby5zaG91bGRQ
YWludFdpdGhpblJvb3QoKnRoaXMpKQotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxS
ZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0
KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCkpOwogCiAg
ICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CkBAIC02MTAsNyArNjEw
LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3Iu
YWxwaGEoKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRv
ciA9IHBhaW50SW5mby5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5
KTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJbmZvLnJl
Y3QsIGJhY2tncm91bmRDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgYmFja2dyb3VuZENv
bG9yKTsKICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuY2xlYXJSZWN0KHBhaW50SW5mby5yZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggNDU0MWU5MGM4ZjA0YzhkZTc3MzhkZjBl
YmUwNWVhYzU3ZmQ1YjcxNi4uY2M5YjhjZTQyYzQ5NzE1MTMxNzRiYjhlOTBiNDU2YmUwNGNmZWUz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTI5MCw3
ICsyOTAsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAvLyBQYWludCBhIHBhcnRpYWxs
eSB0cmFuc3BhcmVudCB3YXNoIG92ZXIgc2VsZWN0ZWQgd2lkZ2V0cy4KICAgICBpZiAoaXNTZWxl
Y3RlZCgpICYmICFkb2N1bWVudCgpLnByaW50aW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IHNl
bGVjdGlvblJlY3QoKSBpcyBpbiBhYnNvbHV0ZSwgbm90IHBhaW50aW5nIGNvb3JkaW5hdGVzLgot
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVj
dGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJl
Y3Qoc2VsZWN0aW9uUmVjdCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0K
IAogICAgIGlmIChoYXNMYXllcigpICYmIGxheWVyKCktPmNhblJlc2l6ZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGNmZGE1Y2ZiZDQ4NDhjNWQ1
NGRmMTk4NzU0NWExYjgzOGVhMWMzNjYuLmM5MThhNmMxODVkZTg1OTgyZGJjYzEyYzJlOTRlYTJh
MWNmNmQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAK
QEAgLTQ3Nyw3ICs0NzcsNyBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9u
R2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAg
ICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxS
ZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGxvZ2ljYWxSZWN0KTsKICAgICAgICAgICAg
ICAgICBpZiAoaXNQcmV2aW91c0JveFNlbGVjdGVkICYmIGdhcFJlY3Qud2lkdGgoKSA+IDAgJiYg
Z2FwUmVjdC5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhaW50SW5m
byAmJiBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxs
UmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0
KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIG1heSBiZSBu
b24tY29udGlndW91cywgc2VlIGNvbW1lbnQgYWJvdmUuCiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC51bml0ZUNlbnRlcihnYXBSZWN0KTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAK
aW5kZXggNjU2YzdkNDI5YjE4ODhiMjE2YTgzZWE3ZDU1NTk3ZmM4YjRiN2M3Yy4uMzIyYzFiMmU5
NTJkMjY1OTNhZGVjMmY3ZTczOGZjNWE4ZmVmMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtNTcsOCAr
NTcsOCBAQCBzdGF0aWMgdm9pZCBwYWludERlYnVnQm9yZGVycyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIExheW91dFJlY3QgYm9yZGVyUmVjdCwgYwogICAgIGlmIChzbmFwcGVkUmVjdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAy
NTUsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50KTsKICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBwZWRSZWN0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKaW5kZXgg
MjIyNmVjZGY2OWU1M2JiZjZiYzg5ZGU5ZGJlYmM3MzYwMzk1NmEzMS4uZTFkZWJiYjdkYzQ1ZGQ5
Y2EyM2Q2MzZjY2U4NThlM2M0MjRiYjcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50U3R5bGUuY3BwCkBAIC0zOSwyNyArMzksMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1UZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQotICAgIDogY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAgICwgc3Ryb2tlV2lkdGgoMCkK
LSNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgLCB1c2VMZXR0ZXJwcmVzc0VmZmVjdChmYWxz
ZSkKLSNlbmRpZgotewotfQotCi1UZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoQ29sb3Ig
Y29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLSAgICA6IGNvbG9yU3BhY2UoY29sb3JTcGFj
ZSkKLSAgICAsIGZpbGxDb2xvcihjb2xvcikKK1RleHRQYWludFN0eWxlOjpUZXh0UGFpbnRTdHls
ZShjb25zdCBDb2xvciYgY29sb3IpCisgICAgOiBmaWxsQ29sb3IoY29sb3IpCiAgICAgLCBzdHJv
a2VDb2xvcihjb2xvcikKLSAgICAsIHN0cm9rZVdpZHRoKDApCi0jaWYgRU5BQkxFKExFVFRFUlBS
RVNTKQotICAgICwgdXNlTGV0dGVycHJlc3NFZmZlY3QoZmFsc2UpCi0jZW5kaWYKIHsKIH0KIAot
c3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dyb3VuZChDb2xvciB0
ZXh0Q29sb3IsIENvbG9yIGJhY2tncm91bmRDb2xvcikKK3N0YXRpYyBDb2xvciBhZGp1c3RDb2xv
ckZvclZpc2liaWxpdHlPbkJhY2tncm91bmQoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDb2xvcikKIHsKICAgICBpbnQgZCA9IGRpZmZlcmVuY2VTcXVhcmVk
KHRleHRDb2xvciwgYmFja2dyb3VuZENvbG9yKTsKICAgICAvLyBTZW1pLWFyYml0cmFyaWx5IGNo
b3NlIDY1MDI1ICgyNTVeMikgdmFsdWUgaGVyZSBhZnRlciBhIGZldyB0ZXN0cy4KQEAgLTc2LDcg
KzYyLDcgQEAgc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dyb3Vu
ZChDb2xvciB0ZXh0Q29sb3IsIENvbG9yIGJhY2tncm8KIAogVGV4dFBhaW50U3R5bGUgY29tcHV0
ZVRleHRQYWludFN0eWxlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIGxp
bmVTdHlsZSwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiB7Ci0gICAgVGV4dFBhaW50U3R5
bGUgcGFpbnRTdHlsZShsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBUZXh0UGFpbnRTdHls
ZSBwYWludFN0eWxlOwogCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIHBhaW50U3R5bGUu
dXNlTGV0dGVycHJlc3NFZmZlY3QgPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KSAmIFRleHREZWNvcmF0aW9uTGV0dGVycHJlc3M7CkBAIC0xOTgsMTIgKzE4NCwxMiBAQCB2b2lk
IHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRl
eHRQYWludFN0eWxlJiBwYWludAogICAgIH0KIAogICAgIENvbG9yIGZpbGxDb2xvciA9IGZpbGxD
b2xvclR5cGUgPT0gVXNlRW1waGFzaXNNYXJrQ29sb3IgPyBwYWludFN0eWxlLmVtcGhhc2lzTWFy
a0NvbG9yIDogcGFpbnRTdHlsZS5maWxsQ29sb3I7Ci0gICAgaWYgKG1vZGUgJiBUZXh0TW9kZUZp
bGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpIHx8IHBhaW50U3R5bGUuY29s
b3JTcGFjZSAhPSBjb250ZXh0LmZpbGxDb2xvclNwYWNlKCkpKQotICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihmaWxsQ29sb3IsIHBhaW50U3R5bGUuY29sb3JTcGFjZSk7CisgICAgaWYgKG1v
ZGUgJiBUZXh0TW9kZUZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKSkK
KyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIAogICAgIGlmIChtb2Rl
ICYgVGV4dE1vZGVTdHJva2UpIHsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlQ29sb3Ig
IT0gY29udGV4dC5zdHJva2VDb2xvcigpKQotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VD
b2xvcihwYWludFN0eWxlLnN0cm9rZUNvbG9yLCBwYWludFN0eWxlLmNvbG9yU3BhY2UpOworICAg
ICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihwYWludFN0eWxlLnN0cm9rZUNvbG9yKTsK
ICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggIT0gY29udGV4dC5zdHJva2VUaGlj
a25lc3MoKSkKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKHBhaW50U3R5
bGUuc3Ryb2tlV2lkdGgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmgKaW5kZXggOTk0ZTQ1ZGNmNGU4YTQ4OTg4NGNkY2JjMjNiMWMyMDZiNzBhOTgwNi4u
ZjBjYmViYjlmODQ3YzVhNTdlNjhhMDE1NGZkNDQ3MGQ2YWFhZDZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTM5LDE2ICszOSwxNSBAQCBjbGFzcyBT
aGFkb3dEYXRhOwogc3RydWN0IFBhaW50SW5mbzsKIAogc3RydWN0IFRleHRQYWludFN0eWxlIHsK
LSAgICBUZXh0UGFpbnRTdHlsZShDb2xvclNwYWNlKTsKLSAgICBUZXh0UGFpbnRTdHlsZShDb2xv
ciwgQ29sb3JTcGFjZSk7CisgICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRT
dHlsZShjb25zdCBDb2xvciYpOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwogICAgIENv
bG9yIGZpbGxDb2xvcjsKICAgICBDb2xvciBzdHJva2VDb2xvcjsKICAgICBDb2xvciBlbXBoYXNp
c01hcmtDb2xvcjsKLSAgICBmbG9hdCBzdHJva2VXaWR0aDsKKyAgICBmbG9hdCBzdHJva2VXaWR0
aCB7IDAgfTsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgYm9vbCB1c2VMZXR0ZXJwcmVz
c0VmZmVjdDsKKyAgICBib29sIHVzZUxldHRlcnByZXNzRWZmZWN0IHsgZmFsc2UgfTsKICNlbmRp
ZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKaW5kZXggZTQy
ODZjMDQxMDNjY2I3OWI0ZTZlNjZiN2JiYjU0MjZmYzJkNjg3My4uZWMyMzAyY2NlZWU2MWI2MzQz
ZTE2NDlmN2YyNjZhZGJlNTRlODdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgU2hhZG93QXBwbGllcjo6U2hhZG93QXBwbGll
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywKICAg
ICB9CiAKICAgICBpZiAoIW1fYXZvaWREcmF3aW5nU2hhZG93KQotICAgICAgICBjb250ZXh0LnNl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIGNvbnRleHQu
ZmlsbENvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiB9CiAKIFNoYWRvd0FwcGxpZXI6On5TaGFk
b3dBcHBsaWVyKCkKQEAgLTExOCwxMSArMTE4LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50VGV4dFdp
dGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZv
CiAgICAgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wgaG9yaXpv
bnRhbCkKIHsKICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LmZpbGxDb2xvcigpOwotICAg
IENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LmZpbGxDb2xvclNwYWNlKCk7CiAg
ICAgYm9vbCBvcGFxdWUgPSAhZmlsbENvbG9yLmhhc0FscGhhKCk7CiAgICAgYm9vbCBsYXN0U2hh
ZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQgPSAhc3Ryb2tlZCAmJiBvcGFxdWU7CiAgICAgaWYg
KCFvcGFxdWUpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgZmls
bENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2sp
OwogCiAgICAgZG8gewogICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoY29udGV4
dCwgc2hhZG93LCBib3hSZWN0LCBsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQsIG9w
YXF1ZSwgaG9yaXpvbnRhbCA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CkBAIC0xMzMsNyArMTMy
LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm8KIAogICAgICAgICBJbnRTaXplIGV4dHJhT2Zm
c2V0ID0gcm91bmRlZEludFNpemUoc2hhZG93QXBwbGllci5leHRyYU9mZnNldCgpKTsKICAgICAg
ICAgaWYgKCFzaGFkb3cgJiYgIW9wYXF1ZSkKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoZmlsbENvbG9yKTsKIAogICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPD0gZW5kT2Zm
c2V0KQogICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29udGV4dCwgZm9udCwg
dGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRPcmlnaW4gKyBl
eHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IGI2ZGU3
OWU4YjI0NjU5OWZkMmE0NTkyNGM3Njk0YTIxN2E4OGIxOTcuLjkwYzU5Y2U5NTQxMDEzM2RjNWE5
OWRhZTExOThmMTVjNjVmOTk1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhp
Y2tuZXNzKDEuMGYpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUp
LCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29s
b3IoMCwgMCwgMjU1KSk7CiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0
ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNu
YXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwogICAgIGluZm8u
Y29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4
ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpLCBJbnRQb2lu
dChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFk
anVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKQEAg
LTExMywxMyArMTEzLDEzIEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIAogICAgIGludCB0
b3BTdGFydCA9IHBhZGRpbmdUb3AoKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSk7CiAgICAgCiAgICAgaW5mby5j
b250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVz
dGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpICsgdG9wU3RhcnQpKTsKICAgICAKICAgICBpbnQgYmFzZWxpbmUgPSByb3VuZFRvSW50KGJh
c2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSkp
OwogICAgIAotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwgMCwg
MCksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihD
b2xvcigyNTUsIDAsIDApKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBi
YXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVk
T2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcAppbmRleCA1MTliYjM4ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3ZjA2NWQy
ZDdiLi45MmUyMTgyNTA1MTg5N2MxZGNiOGFiY2Y4MTM2YmFjMDk4ZGQzZDZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBh
aW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAg
CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7
CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGlu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcikpOwogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQs
IHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGRl
bm9taW5hdG9yV3JhcHBlci0+b2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkp
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MTWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKaW5kZXggYjg2ZTM2MjlhNmI3OGU0MDRhNWZiYWRlNDQ3
OGQyZTQ3NDU0NzY5MS4uZTllNTM0YzQzZDU0N2ZlYmQzYmViYjYzMzc5YjAxY2RlZjk2MmE3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
ZW5jbG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNZW5jbG9zZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE1l
bmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5j
b250ZXh0KCkpOwogICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7
CiAgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAg
ICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgICAgIC8vIFRPRE8gYWRkIHN1cHBvcnQgZm9y
IG5vdGF0aW9uIHZhbHVlIHVwZGlhZ29uYWxhcnJvdyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3NDY2CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbm90
YXRpb25hbFZhbHVlU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAobm90YXRpb25WYWx1ZXNb
aV0gPT0gInVwZGlhZ29uYWxzdHJpa2UiKQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVuZGVy
TWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0CiAgICAgICAgICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAi
aG9yaXpvbnRhbHN0cmlrZSIpCiAgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xp
bmUoSW50UG9pbnQobGVmdCwgdG9wICsgaGFsZmJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBi
b3hXaWR0aCwgdG9wICsgaGFsZmJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm90
YXRpb25WYWx1ZXNbaV0gPT0gImNpcmNsZSIpIHsKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OnRy
YW5zcGFyZW50KTsKICAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3RWxsaXBzZShy
ZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImxvbmdk
aXYiKQogICAgICAgICAgICAgICAgIGlzRGVmYXVsdExvbmdEaXYgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcAppbmRleCAzY2ZlYjIxY2E4ZDI1N2YzZWZlNTBhYTFlOWNkYzE3ZTQ5MjJjMWFjLi42NjAy
MTBmMzRjZjYwY2NiZjc3NmY1MWJkMDBmMTM2N2RiY2JlZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApA
QCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnQoUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29u
dGV4dCgpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRhLm1vZGUo
KSA9PSBEcmF3U2l6ZVZhcmlhbnQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RyZXRjaHlEYXRhLnZh
cmlhbnQoKS5nbHlwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXggNjkyNWE3
OWQ1NTlkNjFiZWRkOTRjYzg1ZDdkMDdlNzQyMzRlOWJiNS4uMTgwODI5ZGYwOTEwNzQ0M2I3MTFl
NjUwZjQ0MmI0ZWQyODI5YjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludChQ
YWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAKICAgICBpbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUo
KS5mb250U2l6ZSgpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRMaW5lSm9p
bihNaXRlckpvaW4pOwogICAgIGluZm8uY29udGV4dCgpLnNldE1pdGVyTGltaXQoc3R5bGUoKS5m
b250U2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggYWM0YTE1ZGQ4NGE0OTM0NDJmMzQ1OWM1YTQ1MDIx
MzE0YTAxNzVlNi4uYzI0M2QyMGU4YTdiMmEwODc3ZDUwOTMxMzFlNGY4YmUyODA5YWM2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQ
YWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogICAgIGlu
Zm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOwogICAgIGlu
Zm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
cikpOwogCiAgICAgLy8gVGhlIHByZWZlcnJlZCB3aWR0aCBvZiB0aGUgcmFkaWNhbCBpcyBzb21l
dGltZXMgaW5jb3JyZWN0LCBzbyB3ZSBkcmF3IGEgc2xpZ2h0bHkgbG9uZ2VyIGxpbmUgdG8gZW5z
dXJlIGl0IHRvdWNoZXMgdGhlIHJhZGljYWwgc3ltYm9sIChodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzI2KS4KICAgICBMYXlvdXRVbml0IHNpemVFcnJvciA9IHJh
ZGljYWwtPnRyYWlsaW5nU3BhY2VFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcAppbmRleCBlMGNhZWFjOWNkODAxYTFiOGI3MzBiOGY0YjlkN2E2ZDcxN2Vi
YWFkLi5mY2M4YjdhODg5MzU0YzIyYTU2MGRkOWEyOWZiODFlYTYzYjk3Mjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFn
ZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsK
ICAgICAgICAgaWYgKGltYWdlKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1h
Z2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11
bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7
CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5sZW5ndGgo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2Uu
Y3BwCmluZGV4IGM5MzlhZTc1ZDFkZmJiOTNjMjAwZDk0MGNhNmQ0YTI5YTc2YTZiZDAuLjVkZWRi
NTU2MmI4MzQxYTdhZTY3NTk5Mzg2ZDBiOTEwZjhlYzMzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcApAQCAtMjA5LDIwICsyMDks
MTggQEAgdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmQKICAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZS5jb2xvclNwYWNlKCk7
Ci0KICAgICBmb3IgKEltYWdlUGllY2UgcGllY2UgPSBNaW5QaWVjZTsgcGllY2UgPCBNYXhQaWVj
ZTsgKytwaWVjZSkgewogICAgICAgICBpZiAoKHBpZWNlID09IE1pZGRsZVBpZWNlICYmICFmaWxs
KCkpIHx8IGlzRW1wdHlQaWVjZVJlY3QocGllY2UsIGRlc3RpbmF0aW9uUmVjdHMsIHNvdXJjZVJl
Y3RzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpc0Nvcm5lclBpZWNl
KHBpZWNlKSkgewotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2Us
IGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0s
IG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0
aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCBvcCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBoUnVsZSA9
IGlzSG9yaXpvbnRhbFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpUaWxlUnVsZT4o
aG9yaXpvbnRhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7CiAgICAgICAgIEltYWdlOjpU
aWxlUnVsZSB2UnVsZSA9IGlzVmVydGljYWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFn
ZTo6VGlsZVJ1bGU+KHZlcnRpY2FsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsKLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgY29sb3JTcGFjZSwgZGVz
dGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVj
ZV0sIGhSdWxlLCB2UnVsZSwgb3ApOworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd1RpbGVk
SW1hZ2UoKmltYWdlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2Vd
LCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDJiNjQ1MDc3
NjcwODY4ODIwY2NlOTdmMDA0YTU0NTU5NzJmMGViMjcuLmJmMWMyMTkwMmQyZjRmMDc0MGU2N2Nk
ZTFlMTQzNzZmYjM2MDA5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCkBAIC05MDIsNyArOTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4
dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KExheW91dFVuaXQmIGxvZ2ljYWxUb3AsIExheW91
dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRl
bnQodGV4dFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAgICAgZmxv
YXQgdGV4dFN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRTdHJva2VXaWR0aDsgfQotICAgIHN0YXRpYyBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSB7IHJl
dHVybiBDb2xvclNwYWNlU1JHQjsgfSAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGFkZGluZyBjb2xv
ciBzcGFjZSBoYW5kbGluZyBpbnRvIHRoZSBDb2xvciBjbGFzcy4KICAgICBmbG9hdCBvcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHk7IH0KICAgICBD
b250cm9sUGFydCBhcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udHJv
bFBhcnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UpOyB9CiAgICAgQXNwZWN0
UmF0aW9UeXBlIGFzcGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFz
cGVjdFJhdGlvVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9UeXBlKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApp
bmRleCBlZjc1N2U3MzYzZjM0OGRiZGZmYTUyZmNjZGU4YWQyY2MwMmI3MzU2Li5lYTQwMjA3Mjkw
N2Q2NDhhYzM4ZDUxYWE2NWMzYjUwY2EwNWIxOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKIAog
ICAgIGltYWdlRWxlbWVudCgpLnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRl
c3RSZWN0LCBzcmNSZWN0KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCpp
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQog
CiB2b2lkIFJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmluZGV4IDFk
MDEzYWQ3YzFlMGU4YzQwMTQwMDg2OGEyNzI1OTNhYmFjYTJkMDUuLjI5NGNiNDYyM2RkNzgxM2Ri
Njc4ODM3NWZkNmVhMjZkM2JkNjVlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCB1c2VT
dHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgZWxzZSBpZiAo
UGF0dGVybiogcGF0dGVybiA9IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpKQogICAgICAgICBjb250
ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKGNvbnRleHQuc3Ryb2tlQ29sb3IoKSwgY29udGV4dC5zdHJva2VDb2xvclNw
YWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb250ZXh0LnN0cm9rZUNvbG9y
KCkpOwogfQogCiB2b2lkIFJlbmRlclNWR1BhdGg6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNGYzYmQ3ODgyN2M1NjIwZDE1
Yjc2MjdmMjZmNjVlYTRhNzBjZjFhMy4uMTZhZWRiNzMyNjZkYmZmZjdjOTkzYWZiOWY1OGFkZDg3
ZDY3ZDZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgR3JhcGhpYwogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEt
PnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7CiAKICAgICAgICAgICAgIGNv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNv
bHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlv
bigpLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnJl
c3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgbGFzdEVmZmVjdC0+YWJz
b2x1dGVQYWludFJlY3QoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
KnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigp
KTsKIAogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJl
ZUFic29sdXRlVHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAppbmRleCBmYjg4ZmM4
YjRiMjhiNzg1OWRkOGYyMTViOTAyNTFkN2UwZDI4M2U3Li40YjIwZGE1OGY5ZTVjM2VjOTA1Zjll
YTM2Y2YzOGRmNmQ3NjNjYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCkBAIC00Miw3ICs0
Miw2IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSCiAgICAgQVNTRVJUKHJlc291cmNlTW9kZSAh
PSBBcHBseVRvRGVmYXVsdE1vZGUpOwogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0
eWxlID0gc3R5bGUuc3ZnU3R5bGUoKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHls
ZS5jb2xvclNwYWNlKCk7CiAKICAgICBib29sIGlzUmVuZGVyaW5nTWFzayA9IHJlbmRlcmVyLnZp
ZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yUmVuZGVyaW5n
U1ZHTWFzazsKIApAQCAtNTEsNyArNTAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRD
b2xvcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUgogICAg
ICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3ZnU3R5bGUuZmlsbE9wYWNpdHkoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKDEpOwotICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICAgICAgaWYgKCFpc1JlbmRlcmluZ01hc2spCiAg
ICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgpKTsKIApA
QCAtNjEsNyArNjAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlS
ZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUgogICAgICAgICAvLyBXaGVu
IHJlbmRlcmluZyB0aGUgbWFzayBmb3IgYSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIsIHRoZSBz
dHJva2UgY29kZSBwYXRoIGlzIG5ldmVyIGhpdC4KICAgICAgICAgQVNTRVJUKCFpc1JlbmRlcmlu
Z01hc2spOwogICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5zdHJva2VPcGFjaXR5
KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yLCBjb2xvclNwYWNl
KTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jb2xvcik7CiAKICAgICAgICAg
U1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHls
ZSwgcmVuZGVyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcAppbmRleCA2OWYyOTYwNmM2Y2NmMTA0MGQ1YTA5YTM1ZmQzYjI0M2M4
OTY2ZjY4Li42ZTVkZjMwM2UyMmQwODhjNjFmYTJmMzAwZGQ0NWEzMzRkZDU5YzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAg
LTIyNSw4ICsyMjUsOCBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFj
a2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKICAgICAgICAgaWYgKCFmcmFnbWVudFRyYW5z
Zm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNvbmNh
dENUTShmcmFnbWVudFRyYW5zZm9ybSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21l
bnQoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbiwg
JnN0eWxlKSwgYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21l
bnQoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbiwg
JnN0eWxlKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VN
b2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQwMmVlNTBiZDZj
YTM3ZTYwYTUyZWQ0ZjY4MDQ2ZWZmOTA4MWE4YmMuLjZjOTkwNTUyZjgxY2ExNDkwMDg3OTE4OGMx
NjE0ZTE3ZjEzYzUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgUGFpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hhZG93KSB7Ci0gICAgICAg
ICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJvdW5kVG9JbnQo
c2hhZG93LT54KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+cmFkaXVzKCks
IHNoYWRvdy0+Y29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuc2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFkb3ctPngo
KSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5j
b2xvcigpKTsKICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigxKTsKICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gRW5kU2hhZG93
TGF5ZXI7CiAgICAgICAgIH0KQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1h
Z2VCdQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgYm91bmRpbmdCb3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgYm91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKaW5kZXggZGU4YTIyYmFkMmI1
YWM3ZmU5NDkxYzE3ODAzMjkxODE3MmQwYTc2Yi4uYzZiNDk1OGI3MWVmNTQzMjBkNGMyYWQ0MmIz
MThmOTViMTRlOTNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
Q29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcApA
QCAtOTcsNyArOTcsNyBAQCB2b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIGZsb2F0IGFscGhh
ID0gYW5pbWF0ZWRDb2xvci5hbHBoYSgpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tQ29sb3IuYWxwaGEo
KSwgdG9Db2xvci5hbHBoYSgpLCB0b0F0RW5kT2ZEdXJhdGlvbkNvbG9yLmFscGhhKCksIGFscGhh
KTsKIAotICAgIGFuaW1hdGVkQ29sb3IgPSB7IHsgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChy
ZWQpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGdyZWVuKSwgcm91bmRBbmRDbGFtcENvbG9y
Q2hhbm5lbChibHVlKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSkgfSwgQ29sb3JT
cGFjZVNSR0IgfTsKKyAgICBhbmltYXRlZENvbG9yID0geyByb3VuZEFuZENsYW1wQ29sb3JDaGFu
bmVsKHJlZCksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoZ3JlZW4pLCByb3VuZEFuZENsYW1w
Q29sb3JDaGFubmVsKGJsdWUpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGFscGhhKSB9Owog
fQogCiBmbG9hdCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDc1NDRhNzZmMzVmMzVkYTNhYTU5
ZGIyNzU4YTFhNjJhOWEyOWZmOTIuLjc2OWM1NGVhNmJmOGRmOTdhZWYxY2Y1MDZmODBmZDMzMGYz
MjIwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTM5
LDcgKzEzOSw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNvbnRhaW5lclNpemUoKSBjb25zdAogfQog
CiB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JD
b250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFp
CiAgICAgYWRqdXN0ZWRTcmNTaXplLnNjYWxlKHJvdW5kZWRDb250YWluZXJTaXplLndpZHRoKCkg
LyBjb250YWluZXJTaXplLndpZHRoKCksIHJvdW5kZWRDb250YWluZXJTaXplLmhlaWdodCgpIC8g
Y29udGFpbmVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgc2NhbGVkU3JjLnNldFNpemUoYWRqdXN0ZWRT
cmNTaXplKTsKIAotICAgIGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBjb2xvclNw
YWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CisgICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIHNldEltYWdl
T2JzZXJ2ZXIob2JzZXJ2ZXIpOwogfQpAQCAtMTc5LDcgKzE3OSw3IEBAIFBhc3NOYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIGlmICghYnVm
ZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCBy
ZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpOwogCiAgICAgLy8gRklYTUU6IFdLKEJ1ZyAxMTM2NTcpOiBXZSBz
aG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhlcmUuCiAgICAgcmV0dXJuIGJ1ZmZlci0+
Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogI2VuZGlmCiAKIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0
ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXpl
JiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0g
ICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIEZsb2F0UmVjdCB6b29tZWRDb250
YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29udGFpbmVyU2l6ZSk7CiAgICAg
em9vbWVkQ29udGFpbmVyUmVjdC5zY2FsZSh6b29tKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXpl
KGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb250ZXh0
LCB0cnVlKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4K
ICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCks
IGNvbnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVj
dCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9y
bWFsKTsKKyAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJT
aXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgaWYgKGNvbnRleHQuZHJhd0x1bWlu
YW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAK
QEAgLTIxOSwxMCArMjE5LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgdW5zY2Fs
ZWRQYXR0ZXJuVHJhbnNmb3JtLnNjYWxlKDEgLyBpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIDEg
LyBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAogICAgIGNvbnRleHQuc2V0RHJhd0x1bWlu
YW5jZU1hc2soZmFsc2UpOwotICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBzY2FsZWRT
cmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb2xvclNw
YWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZS0+ZHJhd1Bh
dHRlcm4oY29udGV4dCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKLXZv
aWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCAxYWJhOTJh
ZTg3OTNhNGNlNGViODM2NzU4ODY2NzVkOGEwYTE0ZTFiLi43OTgwMzE0ZTg3OTlmNzA5NDBlYjRh
MDk3Y2Q5ODQ0NDgyNWYyMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aApAQCAtOTMsOSArOTMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRleHRT
dHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImLCBj
b25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpOwotICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsCisgICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3Rm9yQ29u
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
OworICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBj
b25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVs
ZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDVhMzgzNTExNjUwOGQ3ZDBkZmNiYTBlNDM2MGU2
NWNmNTMxMDc0MzAuLjRlMTYxZTNmMGQ0NGE2YWE2ZWE2YzAzZjVlZDlhYmMxOWViYWVhMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmNwcApAQCAtMzUsMTUgKzM1LDE1IEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5l
cjo6c2l6ZSgpIGNvbnN0CiB9CiAKIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQogewotICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9j
b250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4
dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9w
LCBibGVuZE1vZGUpOwogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIG1faW1h
Z2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96
b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29sb3JTcGFj
ZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgbV9pbWFnZS0+ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIHNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVj
dCwgYmxlbmRNb2RlKTsKIH0KIAogUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDZhYmJiYzZkMDIyZTAw
YmNjOWIxODZmYTU5ODg4YjlhZDdlZWE1ZjMuLmRlOThmZjIxNjYxZTNkNDQyMTNjYjJlNzZkMWYz
MmQ0Y2NmYzMxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9p
bWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNp
Y0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVj
dCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wg
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHAKaW5kZXggNjYxOGNmNTQ4NGU0OWVlMjFjY2NmNjc4OTRkMDAyZjYwZTE3ZTgwNi4uN2Y3YTlj
MzJkZjg1ZjFiMWU4NDE2MDc1ZThjYjgxOGVlZWQ2NzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqbV9pbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHJlc3VsdElt
YWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCptX2ltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9
CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKaW5kZXggNjFmMTliZjE2NTAxYTlkZmYxNmQ3YjllODk4
MjA0ODRlMjExMTVkOC4uY2JjMzg1NjM3MTNiZjdlN2RiOTY4ZDE3ZmViOTY5MzEwOTI1MmI1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNw
cApAQCAtODcsMTAgKzg3LDEwIEBAIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVj
dChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBjb250CiAgICAgRmxvYXRS
ZWN0IGluc2V0UmVjdCA9IG92ZXJsYXkuYm91bmRzKCk7CiAKICAgICBpZiAob3ZlcmxheS5vdmVy
bGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpIHsKLSAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDAp
KTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTUwKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSkp
OwogICAgICAgICBpbnNldFJlY3QuaW5mbGF0ZSgtMjApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktp
dC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IGYxZTc0OTkzYWM3ODQyMGU1MTU2
OTgwMTQxNzgwOGU4YWVkYmEzNmMuLjUxOTJmYjgxOWI4MzkwMTllY2M5ZWYwOTllMGY2ZGIwZWMz
YTVhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAg
LTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmlj
ZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxwaGEpCiAgICAgQ0dDb250ZXh0U2F2ZUdT
dGF0ZShjb250ZXh0KTsKICAgICBDR0Zsb2F0IGhlaWdodCA9IFdlYktpdExpbmtlZE9uT3JBZnRl
cihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0ZMSVBQRURfU0hBRE9XUykgPyAyLjBmIDogLTIu
MGY7CiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1ha2Uo
MC4wZiwgaGVpZ2h0KSwgMy4wZiwgW1tzZWxmIGNsYXNzXSBzaGFkb3dDb2xvcl0pOwotICAgIENH
Q29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIENHQ29udGV4dFNldEZpbGxDb2xv
cldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSkpOwogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHBhZ2VSZWN0KTsKICAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKGNvbnRleHQpOyAgICAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3
L1dlYlBsYWluV2hpdGVWaWV3Lm1tCmluZGV4IDFlMGUwN2M0Zjk3ZmVlNGFhNDIwMTNiMTUxNmNi
NGM5MzhkOTk4ZDIuLjkwNzcyMjA2MzFjYTU4YWJkODIyYzEyYzkzNmFkYzExZDA1YjU5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQpAQCAt
NDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpZHJhd1JlY3Q6
KE5TUmVjdClyZWN0CiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBXS0dldEN1cnJlbnRH
cmFwaGljc0NvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29u
dGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsK
KyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xv
cihDb2xvcjo6d2hpdGUpKTsKICAgICBXS1JlY3RGaWxsKGNvbnRleHQsIFtzZWxmIGJvdW5kc10p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5n
RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5t
bQppbmRleCAwMDI1YWUyOTMwMjE3YTJhZTY2MmZmMDRkNmEwYjY0YzliNGJkZGFkLi5jZjc4ZGIz
M2I3ZjJlN2FlNjAwMGM3NzlkNmNiYjcxMDRmNzZiZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0
aWMgQk9PTCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29uc3QgVW5pQ2hhciAqYnVmZmVyLCB1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgICAgIENHRmxvYXQgYmx1ZTsKICAgICAgICAgQ0dGbG9hdCBhbHBoYTsK
ICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdC
Q29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFs
cGhhXTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQg
KiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JB
KHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSk7CiAKICAg
ICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9p
bnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0
Vmlldy5tbQppbmRleCBkYjA1YjM0ZGJlYjk0ZDY4ZTY2ZTJkYmZiYzI5MjdjMjZmNWZjMTBiLi4z
OGFiYmI0ZDQxNjE2ODlmZWI2ODJmMDcwODJiZWFhM2E5NjJkNTQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCkBA
IC0yODAsMTAgKzI4MCwxMCBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICps
YXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAgICAgRmxvYXRRdWFkIHBhZGRpbmdR
dWFkID0gaGlnaGxpZ2h0LT5xdWFkc1syXTsKICAgICBGbG9hdFF1YWQgY29udGVudFF1YWQgPSBo
aWdobGlnaHQtPnF1YWRzWzNdOwogCi0gICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVk
Q0dDb2xvcihoaWdobGlnaHQtPm1hcmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAg
ICBib3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Ym9yZGVy
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhZGRpbmdMYXllci5maWxsQ29sb3Ig
PSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+cGFkZGluZ0NvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGln
aHQtPmNvbnRlbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgbWFyZ2luTGF5ZXIu
ZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPm1hcmdpbkNvbG9yKTsKKyAgICBi
b3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Ym9yZGVyQ29s
b3IpOworICAgIHBhZGRpbmdMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdo
dC0+cGFkZGluZ0NvbG9yKTsKKyAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dD
b2xvcihoaWdobGlnaHQtPmNvbnRlbnRDb2xvcik7CiAKICAgICBsYXllclBhdGhXaXRoSG9sZSht
YXJnaW5MYXllciwgbWFyZ2luUXVhZCwgYm9yZGVyUXVhZCk7CiAgICAgbGF5ZXJQYXRoV2l0aEhv
bGUoYm9yZGVyTGF5ZXIsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkKTsKQEAgLTMwMSw3ICszMDEs
NyBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxv
YXRRdWFkJiBvdXRlclF1YWQpCiAKICAgICBbc2VsZiBfYXR0YWNoOnBhcmVudExheWVyIG51bUxh
eWVyczpudW1MYXllcnNdOwogCi0gICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBjYWNoZWRD
R0NvbG9yKGhpZ2hsaWdodC0+Y29udGVudENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LT5jb250
ZW50Q29sb3IpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVyczsgKytp
KSB7CiAgICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBbX2xheWVycyBvYmplY3RBdEluZGV4
OmldOwogICAgICAgICBsYXllci5maWxsQ29sb3IgPSBjb250ZW50Q29sb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBjNWM3ZTdkMWFjN2VkMzQyYWU3ODY4ZGU1ZTgw
MWE2NTIzNTQ2NTFkLi5mMjE5MDYwZWFhNjdhMTQ0N2RjYzAwODEwM2NiMWU2YmQ5MmU4N2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEwMjksNyArMTAyOSw3IEBA
IHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciog
bG9hZGVyKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIG5zQ29sb3IoY29sb3IpOwog
I2Vsc2UKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggMWM3ZmE0YTQ4OWIzOTFh
YzBkN2NjOGZlZjIxY2IwYzc5MWYzN2MxMy4uYWMwZTc3MjRmY2MxMTZhZDdhOTY5OTVkZDQxMmFi
MmViOWM2Yjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0K
QEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3Mo
TlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbAogICAgICAgICAgICAg
TlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250
ZXh0ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgICAgICBDR0NvbnRl
eHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0Rmls
bENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsK
ICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCByZWN0KTsKICNlbmRpZgogICAgICAg
ICB9CkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNs
YXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICAgICAgICAg
ICAgIE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNn
Q29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgQ0dD
b250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xv
cjo6Y3lhbiwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6Y3lhbikp
OwogICAgICAgICAgICAgV0tSZWN0RmlsbChjZ0NvbnRleHQsIHJlY3QpOwogI2VuZGlmCiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVM
YXllci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQpp
bmRleCA1ZWQ4NGJjNzM4MmU4ZjcyMDRiYzNlMThlMjllMTViZGM4N2Y0MDA2Li5mOTQ0NGRjMzc0
ZTA0MmI2ZDA1MDc3MGEyNjA3MmUxZTdiZTEyYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiAgICAgLy8gQmx1ZSBoaWdobGlnaHQgY29sb3IuCiAgICAgc3RhdGlj
IENvbG9yIGhpZ2hsaWdodENvbG9yKDExMS4wZiAvIDI1NS4wZiwgMTY4LjBmIC8gMjU1LjBmLCAy
MjAuMGYgLyAyNTUuMGYsIDAuNjZmKTsKLSAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9IGNhY2hl
ZENHQ29sb3IoaGlnaGxpZ2h0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHNlbGYu
YmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHRDb2xvcik7CiAKICAgICBy
ZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxYTRm
NzUyMTE2NTk5ODg0ZWZkMjY0NTMxOGE0YzVjYzE0N2MxMjg3Li4wODA1MjIxMjljMWNjNDBkZmNm
MDA2MDIwN2MzMjcyM2UzNGNhYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC04ODgsNyArODg4LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQ
cm92aWRlcklmTmVjZXNzYXJ5KCkKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIF9wcml2YXRlLT5i
YWNrZ3JvdW5kQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBhbHBoYTox
XSByZXRhaW5dOwogI2Vsc2UKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xv
clJldGFpbihjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikp
OworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yUmV0YWluKGNhY2hlZENH
Q29sb3IoQ29sb3I6OndoaXRlKSk7CiAjZW5kaWYKICAgICBfcHJpdmF0ZS0+aW5jbHVkZXNGbGF0
dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXAgPSBZRVM7CiAKQEAgLTEx
ODcsNyArMTE4Nyw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlk
ZXJJZk5lY2Vzc2FyeSgpCiAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gW3ByZWZlcmVuY2Vz
IHJldGFpbl07CiAgICAgX3ByaXZhdGUtPm1haW5GcmFtZURvY3VtZW50UmVhZHkgPSBOTzsKICAg
ICBfcHJpdmF0ZS0+ZHJhd3NCYWNrZ3JvdW5kID0gWUVTOwotICAgIF9wcml2YXRlLT5iYWNrZ3Jv
dW5kQ29sb3IgPSBDR0NvbG9yUmV0YWluKGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKSk7CisgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IENHQ29s
b3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKIAogICAgIFdlYkZyYW1lVmll
dyAqZnJhbWVWaWV3ID0gbmlsOwogICAgIGZyYW1lVmlldyA9IFtbV2ViRnJhbWVWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOiBDR1JlY3RNYWtlKDAsMCxmcmFtZS5zaXplLndpZHRoLGZyYW1lLnNp
emUuaGVpZ2h0KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cu
Y3BwCmluZGV4IDk5YzIzZmU4OWIwYjMyMzNiYTkxMjE3MTFkMDU0NzVmZDQxODNkMzIuLmJjYWI2
MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01Nyw2ICs1Nyw2IEBAIFdLSW1hZ2VS
ZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VP
cHRpb25zIG9wdGlvbnMpCiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0
bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0
UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3Qo
cmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGlt
YWdlU2l6ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQiwgcmVjdCwgcmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVj
dCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4
dERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEu
Y3BwCmluZGV4IGViODc2NzM4ZGVkODcyOGQ5MWQ1OTcwOWY5ODM5OTYyNTg0ZjBiNjguLmI1NDU0
ZjQ3MmY0MDY0MzAyNmRlZGU3MmU5NzE2YjgyNmI2NzFkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgbWVudUxvY2EKIAogICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0IHRoZSBy
b3VuZGluZyBzdGFydGVneSBmb3IgU2hhcmVhYmxlQml0bWFwLgogICAgIG1fY29udHJvbGxlZElt
YWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6
ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBtX2NvbnRyb2xsZWRJ
bWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAgIG1fY29udHJvbGxlZEltYWdlLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgSW50UG9pbnQoKSk7CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAppbmRleCBmMGUyNjM2MmU1MWI3MDkzYmVmNGIwZjE5N2QwYjNlMjllOWQ2MmIwLi4zOWRmN2Zi
MWFlYTliNjAwYjIwNjE3YzBhMmM3MzZmNmI5NDRhNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzQyLDcgKzc0Miw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgQ3JlZGVudGlhbCYgY3JlCiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGlt
YWdlLnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgYml0bWFw
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
LT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpp
bmRleCAyY2NiYWM3ZmM3ZjI3MDljMGZhYzJlMjBlZWM5OWY0MGNiYWY5ZmM1Li5jN2JjNjEwMWRh
NGMzNDFmMDZmNzk4NjIyNjc4YWZhYjUzYjJlZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTI3NSw3ICsyNzUs
NyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmICht
X2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNjYWxlZExheWVyQm91bmRzLCBD
b2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5m
aWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywgQ29sb3IoMjU1LCAwLCAwKSk7CiAjZW5kaWYKIAog
ICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCBlMGJhYjM3M2VjZWFhODM5ZGY4YzE2ZDIwYTA5ZjYyYjRhY2Y5NWU4Li5lN2VmZjJmMGQxYmJm
ODE5ZDE5M2E1MDI2YjZhMmZmNmRlZWNlZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk0LDcgKzg5NCw3IEBAIHN0YXRpYyBX
ZWJDb3JlOjpDb2xvciBzY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKFdLV2ViVmlldyAqd2ViVmll
dykKIAogICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAKLSAgICBhdXRv
IHVpQmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dD
b2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV0p
OworICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10g
aW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXSk7CiAgICAgW19zY3JvbGxWaWV3
IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CiAKICAgICAvLyBV
cGRhdGUgdGhlIGluZGljYXRvciBzdHlsZSBiYXNlZCBvbiB0aGUgbGlnaHRuZXNzL2RhcmtuZXNz
IG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KaW5kZXggMzZjZGFiYTNjZGZmOTc2OTRj
ODQ0NjMwMTJlYTM5NWUxMjA2NmY5Zi4uNWVlNTVhNWU2ZDcxNGQ4MDFhY2I1YjM4ODE5YjgwNmZh
N2IwNTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW5zcGVjdG9y
SGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tJbnNwZWN0
b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0yMjksMTAgKzIyOSwxMCBAQCBzdGF0aWMgdm9pZCBsYXll
clBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAg
ICAgRmxvYXRRdWFkIHBhZGRpbmdRdWFkID0gaGlnaGxpZ2h0LnF1YWRzW29mZnNldCArIDJdOwog
ICAgIEZsb2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hsaWdodC5xdWFkc1tvZmZzZXQgKyAzXTsK
IAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0Lm1h
cmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBib3JkZXJMYXllci5maWxsQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5ib3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci0gICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxp
Z2h0LnBhZGRpbmdDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGVudExheWVy
LmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xv
cihoaWdobGlnaHQubWFyZ2luQ29sb3IpOworICAgIGJvcmRlckxheWVyLmZpbGxDb2xvciA9IGNh
Y2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yKTsKKyAgICBwYWRkaW5nTGF5ZXIuZmls
bENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQucGFkZGluZ0NvbG9yKTsKKyAgICBjb250
ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9y
KTsKIAogICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxheWVyLCBtYXJnaW5RdWFkLCBib3Jk
ZXJRdWFkKTsKICAgICBsYXllclBhdGhXaXRoSG9sZShib3JkZXJMYXllciwgYm9yZGVyUXVhZCwg
cGFkZGluZ1F1YWQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aChD
QVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIAogICAgIFtz
ZWxmIF9jcmVhdGVMYXllcnM6bnVtTGF5ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29udGVudENv
bG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGln
aGxpZ2h0LmNvbnRlbnRDb2xvcik7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbnVt
TGF5ZXJzOyArK2kpIHsKICAgICAgICAgQ0FTaGFwZUxheWVyICpsYXllciA9IFtfbGF5ZXJzIG9i
amVjdEF0SW5kZXg6aV07CiAgICAgICAgIGxheWVyLmZpbGxDb2xvciA9IGNvbnRlbnRDb2xvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250
cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJJT1MubW0KaW5kZXggMmY0OGRiYjFkNDQxY2U3NWQ0NjQ4NzY5YzZlNTNhNjZkOTky
YmMyMy4uNmY5MTE3NjU0MGJkZWNiNTMxMGI3YmQ5NjRiNjlkNjU2ZTZiMzAzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJJT1MubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbgogICAg
ICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250ZW50cyA9IHNuYXBzaG90LT5hc0xh
eWVyQ29udGVudHMoKTsKICAgICAgICAgQ29sb3IgY29yZUNvbG9yID0gc25hcHNob3QtPmJhY2tn
cm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29yZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAg
ICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENH
Q29sb3I6Y2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpXSk7Cisg
ICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5p
dFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29yZUNvbG9yKV0pOwogICAgIH0KIAogICAgIFtt
X3NuYXBzaG90VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yLmdldCgpXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggOGVlNmE3YTk4ZjAyOGRiYzNlMGQ4Y2Q4YWJhZTVlNGM0MWQ5
MGJmMS4uYzQzZWYzYTFlMTc1MzM3NWU5NGJlNmQxMzFiYmM3NzBkMWZiNzljOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTc4OSw3ICs3ODksNyBAQCBzdGF0aWMgTlNWYWx1ZSAqbnNTaXplRm9yVGFw
SGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNpemUgYm9yZGVyUmFkaXVzLAogICAg
ICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIFJldGFpblB0cjxVSUNvbG9yPiBoaWdobGln
aHRVSUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpj
YWNoZWRDR0NvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5jb2xvciwgV2ViQ29yZTo6Q29s
b3JTcGFjZURldmljZVJHQildKTsKKyAgICAgICAgUmV0YWluUHRyPFVJQ29sb3I+IGhpZ2hsaWdo
dFVJS2l0Q29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNh
Y2hlZENHQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yKV0pOwogICAgICAgICBb
X2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6aGlnaGxpZ2h0VUlLaXRDb2xvci5nZXQoKV07CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDQwYjRmN2FlMDUxOGFiNTJjZmQ3YWVlNGY2NDg1Yzdk
NDkyMzcxZjQuLjY2YzhiMGY5ZGM5OTc1YmYyZjVkZjcwNWM1ZGVjZmFkZGNiNDkwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyTWFjLm1tCkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0K
IAogICAgICAgICBDb2xvciBjb3JlQ29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENvbG9yKCk7
CiAgICAgICAgIGlmIChjb3JlQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgYmFja2dyb3Vu
ZENvbG9yID0gY2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IpOwog
ICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gc25hcHNob3Q7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cAppbmRleCAzMDNlMWI3MzM2YmExNTdjODBiNjM2MTcyMDgzYzM5NTcxMmQ1MzYzLi44YTc2MzFl
MTEyODI3NjNmYTM5MzcwOTQ0YWRlNDBmYjliOWM5ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTQ2MCwxMyAr
NDYwLDEzIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgVmVjdG9yPEludFJlY3Q+IHJl
Y3RzID0gcmVjdHNGb3JUZXh0TWF0Y2hlc0luUmVjdChib3JkZXJJbmZsYXRlZERpcnR5UmVjdCk7
CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kLgotICAgIGdyYXBoaWNzQ29udGV4dC5maWxs
UmVjdChkaXJ0eVJlY3QsIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VTUkdCKTsK
KyAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0LCBvdmVybGF5QmFja2dyb3Vu
ZENvbG9yKTsKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNo
YWRvdyhGbG9hdFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSksIHNoYWRvd0JsdXJS
YWRpdXMsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIHNoYWRvd0NvbG9yQWxwaGEpLCBDb2xvclNw
YWNlU1JHQik7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlU1JHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3co
RmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkpLCBzaGFkb3dCbHVyUmFkaXVz
LCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dDb2xvckFscGhhKSk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKIAogICAgICAgICAvLyBE
cmF3IHdoaXRlIGZyYW1lcyBhcm91bmQgdGhlIGhvbGVzLgogICAgICAgICBmb3IgKGF1dG8mIHJl
Y3QgOiByZWN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggMjUwYjQyYjlkYzdlZWRmNGE0ODBkMDBkMzM0YmMzMTk5MTRjZWY4NS4u
MDhiODdkMTM0YzU4OGY1YTY0NDM2NDIyNjczZWU2MzM4ZjM4Mjk1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04NDgsNyArODQ4LDcg
QEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25T
bmFwc2hvdCgpIGNvbnN0CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRTbmFwc2hv
dC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGdyYXBoaWNz
Q29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZh
Y3RvcikpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpzbmFwc2hvdCwg
Q29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRQb2ludCgpKTsKKyAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcigqc25hcHNob3QsIEZsb2F0UG9pbnQoKSk7CiAKICAgICByZXR1cm4g
c2hhcmVkU25hcHNob3QucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA1NTYwOThhYTAyMGU0MTlkNDhkNmM2Mjk2NzJm
MWIwZDhkMTQwMTcuLjQzMjcxNDgwNzQ5MzRhNzI3OGI4N2Y5YWE1ZjQwZGUyZTQzNWQ0MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3
ODAsNyArMTc4MCw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRT
aXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAKICAgICBDb2xvciBkb2N1
bWVudEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3Io
KTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoY29yZUZyYW1lLT5zZXR0aW5ncygpLmJh
Y2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29s
b3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3LT5iYXNl
QmFja2dyb3VuZENvbG9yKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0
KEludFBvaW50KCksIGJpdG1hcFNpemUpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBiaXRtYXBTaXplKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBT
bmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CiAgICAgICAgIGRvdWJs
ZSBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CkBA
IC0xODAzLDcgKzE4MDMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hv
dEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogCiAgICAgaWYgKG9w
dGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSkgewogICAgICAg
ICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRTdHJva2VDb2xvcihDb2xvcigweEZGLCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMHhGRiwgMCwg
MCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnN0cm9rZVJlY3Qoc2VsZWN0aW9uUmVjdGFu
Z2xlLCAxKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCBkYmEyZDA1OGNh
NTkyNWMxMDhkMDNmOWY2ZWQ1OTgwYmMxMGE2ZDQwLi4xZDY5MDhiZTllZmI1OGRjZjNhZGM3MGEz
YTE5ZTVkMDcxNDNlZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTc5LDExICs3OSwxMSBA
QCB2b2lkIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TOjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZQogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHRleHRSZWN0
c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBtX3RleHRJbmRpY2F0b3ItPnRleHRSZWN0c0lu
Qm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMoKTsKICAgICBWZWN0b3I8UGF0aD4gcGF0aHMgPSBQYXRo
VXRpbGl0aWVzOjpwYXRoc1dpdGhTaHJpbmtXcmFwcGVkUmVjdHModGV4dFJlY3RzSW5Cb3VuZGlu
Z1JlY3RDb29yZGluYXRlcywgY29ybmVyUmFkaXVzKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGhpZ2hsaWdodENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgcGF0
aCA6IHBhdGhzKQogICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogCi0gICAgY29udGV4
dC5kcmF3SW1hZ2UoKmluZGljYXRvckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBvdmVybGF5
LmJvdW5kcygpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW5kaWNhdG9ySW1hZ2UsIG92ZXJs
YXkuYm91bmRzKCkpOwogfQogCiBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNh
dG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hv
dWxkQW5pbWF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQppbmRleCBiODIzYjhlOWYzMTdmNWY0ZGMzNDdmNTIyZGNjN2Y4ODFh
OTkyOGZhLi42N2Q2MjQ1N2UwMDljZjA2ZTY2ZWI3OTAzNTc4NjkxMTBlNmY5MzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC0yMjE5LDcgKzIyMTksNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbkluZm9ybWF0aQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUgYml0bWFwU2l6ZSA9IHNjYWxlZFNpemUu
d2lkdGgoKSA8IGltYWdlLT5zaXplKCkud2lkdGgoKSA/IHNjYWxlZFNpemUgOiBpbWFnZS0+c2l6
ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
SW50U2l6ZShiaXRtYXBTaXplKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBi
aXRtYXBTaXplLmhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRt
YXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQppbmRleCBlZWM2NWFiNDc1NDcyMzIyZDg4NmNkY2E3NWIzZjg0ZTM4
NDg1ZDkyLi4wYmYzNjRjMTQzN2UzNTYxZGExMWIyZGI2ZTJhY2UxYmExZTIyNDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAogICAgIFt2aWRlb0xheWVyIHNl
dFBvc2l0aW9uOkNHUG9pbnRNYWtlKDAsIDApXTsKLSAgICBbdmlkZW9MYXllciBzZXRCYWNrZ3Jv
dW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQsIFdlYkNv
cmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICBbdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5k
Q29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsKIAogICAg
IC8vIFNldCBhIHNjYWxlIGZhY3RvciBoZXJlIHRvIG1ha2UgY29udmVydFJlY3Q6dG9MYXllcjpu
aWwgdGFrZSBzY2FsZSBmYWN0b3IgaW50byBhY2NvdW50LiA8cmRhcjovL3Byb2JsZW0vMTgzMTY1
NDI+LgogICAgIC8vIFRoaXMgc2NhbGUgZmFjdG9yIGlzIGludmVydGVkIGluIHRoZSBob3N0aW5n
IHByb2Nlc3MuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264994</attachid>
            <date>2015-11-06 20:20:43 -0800</date>
            <delta_ts>2015-11-06 20:45:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150967-20151106202039.patch</filename>
            <type>text/plain</type>
            <size>322123</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzMDRmYTY1MDg1ODVm
ZTI5ZjViZjEwMTIzODVlZGIxNTg4ZGY2Mi4uNDY3OTAzODA0OWI2OTJiYjBhYjY5N2I0OGNjYjAz
MTk3Zjg0MTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NCBAQAorMjAxNS0xMS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29s
b3JTcGFjZSBhcmd1bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSAtd2Via2l0LWNvbG9y
LWNvcnJlY3Rpb24gQ1NTIHByb3BlcnR5IHdhcyByZW1vdmVkIGluIHIxODgyMDIsIGFuZCBDb2xv
clNwYWNlRGV2aWNlUkdCCisgICAgICAgIGFuZCBDb2xvclNwYWNlU1JHQiBhcmUgZnVuY3Rpb25h
bGx5IGVxdWl2YWxlbnQsIHdlIGNhbiByZW1vdmUgYWxsIHRoZSBDb2xvclNwYWNlIGFyZ3VtZW50
cyBwYXNzZWQKKyAgICAgICAgdG8gZHJhd2luZyBmdW5jdGlvbnMsIGFuZCByZW1vdmUgUmVuZGVy
U3R5bGU6OmNvbG9yU3BhY2UoKSwgd2hpY2ggd2FzIGhhcmRjb2RlZCB0byByZXR1cm4gQ29sb3JT
cGFjZVNSR0IuCisgICAgICAgIAorICAgICAgICBGaWxsIGFuZCBzdHJva2UgQ29sb3JTcGFjZXMg
YXJlIGFsc28gcmVtb3ZlIGZyb20gZ3JhcGhpY3Mgc3RhdGUsIHNpbXBsaWZ5aW5nIGNvbG9yIHNh
dmUvcmVzdG9yZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoX3BsYXRmb3JtQ29s
b3IpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZp
bGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3
SW1hZ2VJbnRvQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Ny
b2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZTo6ZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRy
YXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2Fj
eVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxDb2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3U2hhZG93QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVy
QW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YmVn
aW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjplbmRTaGFkb3dM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0
cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdS
ZXBhaW50Q291bnRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldENH
RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNG
b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lU
aWxlR3JpZFRpbGU6OnNob3dCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENv
bXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRD
b21wb3NpdGlvblVuZGVybGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCb3hTaGFkb3dGb3JC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0F4aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWlu
dFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVV
cGxvYWRJY29uRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9y
Rm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50TGF5b3V0OjpsYXlP
dXRTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlv
bkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnREZWJ1Z0JvcmRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGll
cjo6U2hhZG93QXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93
cyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUt
MTEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmlldyBvbiBhcHBsZS5jb20vY29udGFjdCB3aXRoIGFsbCB0ZXh0IHNlbGVjdGVkIHNob3dz
IGEgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTBiMGFkZDAzNWQxZTE5ODljZjI0ZWYzNzdiODYw
NjZkOWE2MzgwMi4uY2MyMmQ3NjhhMjBlM2Y2YmU2MWIwMmZhMmUyMTJiYTUxODIyNTQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFy
Z3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlv
biBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZp
Y2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZh
bGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAor
ICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29s
b3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1t
OgorCiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXhlZCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTE5MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NGUxODNhNDc5ZTczOTc1MTRjMjA3MGI0NzU1YzZkYWJiYWU4NWFmZC4uNDFkZmQzZDBjYjFhNjNl
NTFkNmFmZTNiZDBiNmYzZDE3ZjkxMjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBj
YWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQg
aW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3Bh
Y2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhl
IENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9u
cywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNv
ZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9u
dDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dFZpZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJO
b2RlSGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklu
ZGljYXRlTGF5ZXIubW06CisKIDIwMTUtMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0sxXSBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcgQmxpbmsg
bGF5b3V0IHRlc3QgZWRpdGluZy9pbnB1dC90ZXh0LWlucHV0LWNvbnRyb2xsZXItbm8tZWRpdGFi
bGUtbm8tY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhMGRkZDQ3MjQ2MmU5YTE0M2RiNTUzYmFh
NWQ1ZTQzZGRhMjhhZTQuLjk4MDQ5MDAxOTg3OGNiMWNkOWUwZjM4ZGYxYmRiNjQxMWJhZWQzNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNS0xMS0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JTcGFjZSBhcmd1
bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9Db250
ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6b2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0XSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250
cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0xMS0wNSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2aWV3IG9uIGFwcGxlLmNv
bS9jb250YWN0IHdpdGggYWxsIHRleHQgc2VsZWN0ZWQgc2hvd3MgYSBtYXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4
IDQxNzE5ODc0YzdkNjEwMWUyYzg2MDJmMzQ2NjA2ODQ1NmRkMTg0MjAuLmYzNzJhMTBlMDMzZWRl
YmZjNTM1OGRmM2ZkMTI0YWYyMGNiZTU2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTM0Nyw3ICsxMzQ3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxU
eXBlIGVxICJDb2xvciIpIHsKICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZUNHQ29sb3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6OmNh
Y2hlZENHQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsIC49ICIsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpIjsKKyAg
ICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
V2ViQ29yZTo6bnNDb2xvcigkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCmluZGV4IGJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0Yzc3MjYw
NjAyM2IuLjIzMWEzMmQ2YWE1MGIzNTFjNWEzYTA5NjI4ZGI2OWE1MDcwOTRlNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFn
ZSgpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBpbWFnZVJlY3QpOworICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3QpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
PiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAgICBm
aWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RGOjptb3ZlKHRleHR1cmUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYTcxZThiNWI5YjExMTJl
NWEzZGJkM2Q2ODVlZWZjZTQwNGUzZjg3Yi4uNmU0YjMxZWYzMzY4YjZlYmEzYTU5NzhhZGJkZDk2
ZGM4MmUxMWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE1NzAsNyArMTU3MCw2IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5v
ZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2Rl
LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCA9IG5v
ZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIApAQCAtMTU4MywxNyArMTU4MiwxNCBAQCB2b2lk
IENhcmV0QmFzZTo6cGFpbnRDYXJldChOb2RlKiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAgYXV0byBlbGVtZW50QkdDb2xvciA9IGVs
ZW1lbnRTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwogICAgICAgICAgICAgaWYgKGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChlbGVtZW50QkdD
b2xvciwgcm9vdEVkaXRhYmxlQkdDb2xvcikpIHsKICAgICAgICAgICAgICAgICBjYXJldENvbG9y
ID0gcm9vdEVkaXRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwotICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UgPSByb290RWRpdGFibGVTdHlsZS5jb2xv
clNwYWNlKCk7CiAgICAgICAgICAgICAgICAgc2V0VG9Sb290RWRpdGFibGVFbGVtZW50ID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRh
YmxlRWxlbWVudCkgeworICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRhYmxlRWxlbWVudCkKICAg
ICAgICAgICAgIGNhcmV0Q29sb3IgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAgICAgIGNvbG9yU3Bh
Y2UgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IsIGNvbG9y
U3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQzZDQ2
NWZiN2QwNDdkMzgyYTU1NWI4MjU2ZmI0ODAzMjgxZjNkOGUuLjc1ZGI3MWQ0MDE1OWQ5NDhhZmE4
MThjYWQ1NmU1N2Y4NDIxNzgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgTlNCdW5kbGUgKl93
ZWJLaXRCdW5kbGUoKQogCiBzdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENv
bG9yIGNvbG9yKQogewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0
ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBX
ZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKIH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0
Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAppbmRleCA1NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExLi5j
MGZiNDhiZmE0YmY2MWFmOGUzM2ZjNjcwNDlkMTFiZDZiZGRhN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAg
ICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJ
bnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGIxOWQ5
ZTBkYzcwM2Q1NTUzZjczMjYyMTMzYzIwYzk0ZjYyOGM3OWYuLmQyYmRkMGJjMjUyNDE1YTg2YzI4
NzE0OGI1Y2IxMmJlMzBhNjY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE1NCw3ICsxMTU0LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkg
ewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0gdHJ1ZTsKLSAgICAg
ICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNw
YXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lT
aGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgfQogICAgIGlm
IChzdGF0ZSgpLmdsb2JhbEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAt
MTMxOSw5ICsxMzE5LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hh
ZG93KCkKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkgewogICAgICAgICBmbG9hdCB3aWR0
aCA9IHN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9
IHN0YXRlKCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpOwotICAgICAgICBjLT5zZXRMZWdhY3lTaGFk
b3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5zaGFkb3dCbHVyLCBzdGF0ZSgp
LnNoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYy0+c2V0TGVnYWN5
U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkuc2hhZG93Qmx1ciwgc3Rh
dGUoKS5zaGFkb3dDb2xvcik7CiAgICAgfSBlbHNlCi0gICAgICAgIGMtPnNldExlZ2FjeVNoYWRv
dyhGbG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJh
bnNwYXJlbnQpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxkRHJh
d1NoYWRvd3MoKSBjb25zdApAQCAtMTQ0OCwxNyArMTQ0OCwxNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCwg
Y29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERz
dFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKKyAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBp
ZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAg
ICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAg
IGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1
MzYsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2Fu
dmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENv
bnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKLSAg
ICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOworICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52
YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0
ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xv
YmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBk
aWREcmF3KGRzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE2MTIsNyArMTYxMiw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8s
IGNvbnN0IEZsb2F0UmVjCiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAg
Yy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8tPnZpZGVvV2lkdGgoKSwg
dmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8t
PnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsK
ICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpAQCAtMTcyNiwyMSArMTcyNiwyMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7CiAg
ICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwogICAgIGMtPnJlc3RvcmUoKTsKLSAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0Lmxv
Y2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoYnVmZmVyLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
KTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBv
cCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKTsK
IApAQCAtMTc2Niw3ICsxNzY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAgICBidWZm
ZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9u
KCkueCgpLCAtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0LndpZHRoKCksIGNyb3BwZWRP
ZmZzZXQuaGVpZ2h0KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3Rp
dmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250
ZXh0KCksIHN0eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAogICAgIGNvbXBvc2l0
ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkBAIC0yNDQwLDggKzI0NDAsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICAgICAgICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICAgICAgICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgICAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgICAgICAgICAgYy0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAgICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZs
YXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7CkBAIC0yNDUwLDEyICsyNDQ5LDEyIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgICAgIHNoYWRvd09mZnNldCArPSBvZmZzZXQ7CiAK
LSAgICAgICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICAgICAgYy0+c2V0TGVn
YWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGMtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24gKyBvZmZz
ZXQsIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQpA
QCAtMjQ2Nyw5ICsyNDY2LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdU
ZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGZpbGwpCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAppbmRleCA4NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4NDE1OTQ1M2Q5Li5k
Njk5OWJmM2MzZmUwNmVjMjU3ZDA3MDVjYjkzMDA2ZDM3YzExODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0zNjcsNyArMzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZShUJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGQzNThhMjE3OTU4ODM5NmJmYjcwYTVmZDdjZWI1
MjgwMjRmZTM5MTkuLmI2ODNhMmVhNjk5ZWJhY2E4YTM2NTIxNzM2ZTdhMDg1MmQ3ZjFjMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0
IEFQSS4KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNv
bG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAg
IENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jbXlrYS0+YywgbV9jbXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+
YSk7CiAjZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NteWthLT5yZ2Jh
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jbXlrYS0+cmdiYSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29u
dGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215a2Et
PmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwogI2Vs
c2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY215a2EtPnJnYmEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jbXlrYS0+cmdi
YSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2
NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNjZmYwN2U1YmNjLi4zMzBjOTUwNGIwNzY5ZDk0
MDcyMzE3ZGRkMjk5M2QyOThiOWY5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE3Niw3ICsz
MTc2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJh
d0ltYWdlSW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGkKIAogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBidWYtPmNvbnRleHQo
KS5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICByZXR1cm4gYnVmLT5j
b3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3NDA4MDQw
NzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLjBlY2Y4M2Q5Njk3ZjY2ZDJhZmEzN2JmYmE3ZDFkOWE2
ODY0ZjdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmUKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7Ci0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgQ29sb3JTcGFjZVNSR0IpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgIGZvciAoYXV0byByZWN0IDogbV9yZWdp
b24tPnJlY3RzKCkpIHsKICAgICAKICAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhkaXJ0eVJl
Y3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEyMjk2NGE3OWVkYmJjNGViYTlk
OTcxM2FlYzUzODU3YjdmNjZlODMuLmI2ZjY5YjU5YTJjODBlMWFiYjM3Y2U1MWI5NzExNDYzMDY4
N2NiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM3MzYsNyArMzczNiw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tn
cm91bmRDb2xvcigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3NDksNyArMzc0OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJCiAg
ICAgaWYgKGJhci5pc0N1c3RvbVNjcm9sbGJhcigpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBJbnRSZWN0IHRvRmlsbCA9IGJhci5mcmFtZVJlY3QoKTsKICAgICAgICAgdG9G
aWxsLmludGVyc2VjdChyZWN0KTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAg
IFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKGNvbnRleHQsIGJhciwgcmVjdCk7CkBAIC00MDE3
LDcgKzQwMTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFJl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGZpbGxXaXRoUmVkKQotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCkp
OwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdTaXplQWRqdXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDI2Mzc1MTE0NDYwNzU4YWE2NzRh
OGIyMjIzN2NhNWFhMTNkYzllYmUuLjAzNDY4OWFjYjdmOTA5MWQ5MDM3MWQ3MzBkZjkxOWIxNzY0
ZGRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMzNyw3ICszMzcs
NyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1l
JiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VS
ZWN0cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAg
IC8vIEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1
KSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lk
dGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwpAQCAtMzU2
LDggKzM1Niw4IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJp
ZXMoRnJhbWUmIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyCiAgICAgICAgICAgICBpbnQgYm91
bmRhcnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOwogI2VuZGlmCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0xpbmUoSW50UG9pbnQoMCwgYm91bmRhcnlMaW5lWSksIEludFBvaW50KHBhZ2VXaWR0aCwgYm91
bmRhcnlMaW5lWSkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxNWEwYmIx
ZDBjMjRkZDMxZWNjMjkzZDQ3ODE2ZDI1YjRiY2FjODMyLi5kZGVkZTY1MWQ4ZDg0NTE3MWM2YjIw
MGU2ZGM2NjFhYjQ3OGY5OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0g
bV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQ
b2ludCA9IHBhcmVudCgpLT53aW5kb3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdD
UG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBpY29uR0NQb2lu
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgKaW5kZXggZTU0YzQ2YWExY2ZmMjY0NzQ5Yzc5ODQ0OGY1YjRjMDdjYzM5OWYzOS4uY2Fl
NTI5OTQzMmNmOGViODQ4YmMzMDAyZTdhNTU1ZTI5NDVkNTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0
UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9p
ZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQorICAgIHN0YXRpYyB2b2lkIGRlZmF1
bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDcyZjJh
NjM2ZGExOGMwMmI3YzZlY2E5NGY0MDY2NWE4MDBiMmRhN2YuLjQ2ZDllZTY3MmQzNzdmNTgyM2Rj
MTM3ZmYzMjNiNGEzNTlmY2Q1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSk7CiB9CiAKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVj
dChTY3JvbGxiYXImIHNjcm9sbGJhcikKQEAgLTI4MSwxMSArMjgxLDExIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAog
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKICAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgp
KQogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3Zlcmhh
bmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlKTsKICAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDM5MDYzNDJm
NTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQuLjE5MzRiMzU2NTMyNTFlMzgzZjQ4ODU5
YzExNzIwN2U2MmNmODk0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIC8vIERyYXcgYSBnZW5l
cmljIFdpcmVsZXNzIFBsYXliYWNrIGljb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5jcHAKaW5kZXggOGZjY2RjNWZmNTk4M2ExOGFkYzFkYTdlMTM2ODc4
ZTY4ZWQwNzU2OC4uMzE0ZWVkNTMxNTNhMTcwOTdmYTE5NmU5M2RjNzcwMjQ3MWY0ZWVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5h
bWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJh
Y2tTcmNTaXplKDMyLCAyNC4wMTYpOwogICAgIGZpdENvbnRleHRUb0JveChjb250ZXh0LCB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSwgcmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDAwNTMzYWYzOTdjNzg1OTVk
YmU0MjZiNzc5ODRiNjY0NTIxMmEzYmMuLjNlYTFiNWY4OTQ3OWMxNDQ4ZDIwZDhkNjI1NDllNjU3
MjMxYjhjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTYwNywxMyArNjA3LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0
QW5pbWF0aW9uKCkKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKLSAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKCFtX2NhY2hlZEltYWdlKSB7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LAogICAgICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2Ug
ZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhp
cyByZWxheW91dC4KICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAg
ICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgIH0K
IAogICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIG1fY2FjaGVkSW1h
Z2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDQwZmM3NGEzOTJkNGQ2Njg5
NzI5ODBiZmMxY2FlNDA5YmUwYzYzZWIuLjg5MWU4YzQyM2NjNTZiYWVkYzQ5Zjg5MzU5N2FkZjFj
YTg1NDJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlk
ZTsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKQEAgLTIw
MSwxMyArMjAxLDEzIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVy
YXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoV0lOR0RJKQogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpOwogI2VuZGlmCiAKICAgICBzaXplX3QgY3VycmVudEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IGQxZDRlNzI3NzAwZDllMjhjMGNmZGIzNTRlYmI5YzljYWY5ZDE4NzUuLmNm
MmY4MGJhOTQ3YjZlM2M1ZWFkNjRlYjg1ZjU3ZWQ0YjIyY2EyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGludCBkaWZmZXJl
bmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CiB1aW50MTZfdCBmYXN0RGl2
aWRlQnkyNTUodWludDE2X3QpOwogCiAjaWYgVVNFKENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiBp
bmxpbmUgUkdCQTo6UkdCQSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNDM2ODJiMGQ3
ZWU0NzI0OGUyNjRlNWU4YTZiMmQ0NWJlYTc4MjY4NC4uNTdlM2YxYTRmMTkwNmEyNjY5ZmZmZmRk
MjAxNTU5Y2IzZWI1Y2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIENvbXBvcwogCiAgICAgaWYgKHRhcmdldFNpemUgIT0gaW1h
Z2VTaXplKQogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh0YXJnZXRTaXplLndpZHRo
KCkgLyBpbWFnZVNpemUud2lkdGgoKSwgdGFyZ2V0U2l6ZS5oZWlnaHQoKSAvIGltYWdlU2l6ZS5o
ZWlnaHQoKSkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRQb2ludCgpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQo
KSk7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9
CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAgZHJh
d0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVm
ZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRl
eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9y
U3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaAppbmRleCA4MDI4MzQ0ODBiZWIzZjUwZTg4OGQwYTM5MzM4N2M1ZWI3YWZlZTg2
Li44YWViYmM1NzM3MTQ2MGNiN2RiMzM0MDg0ZjE0NGRkZGVkNDczMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAog
ICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0lt
YWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAppbmRleCBiMTAyM2IwYWQ5ZTUxMjg5YjUwYjUyYjU1YWZhODc0
ODA0MGRmOGMxLi4wYzAzOGQ5OTYyZjU0MWEwZTRlMjVhMGQ2ODJlZWFmMTNmYjM0YzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
QEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGUgPSAwOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGY1
Y2ViNzA1MzNhNjNlNThkNDdlOWEyYjlhNjVjYzdlNDUxY2EyN2UuLjM3MjY5MWE5YjJiNzVmZTkz
MWQ1MWZmY2RhMGIxYTQzOTAxOTRkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEdyYWRpZW50
SW1hZ2U6On5HcmFkaWVudEltYWdlKCkKIHsKIH0KIAotdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK3ZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50
IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXpl
IGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHMKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAK
ICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0
LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRl
cm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRl
eCAwNTgyOGY1YTg0OTY4OTk1NGRjYzM4YjY1NzQwMTc2YTU5YjM0ZDlkLi45MjUwOWZiMWVjNTJj
NGY3MzIxNDg3ZTQ4YjhlZmM2ODIzYzVlMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAg
ICAgR3JhZGllbnRJbWFnZShQYXNzUmVmUHRyPEdyYWRpZW50PiwgY29uc3QgRmxvYXRTaXplJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDIzMDlmNWRkNWRkNTZmNjhmMWUxZWU0NmU1Y2UxN2E0NzE2Njc3MWYu
LjM4ODg5YzQ3NDA1ZTMyNzExMmY0Zjk2MTk5Y2QzYWVmMzI4YThkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MTQyLDIwICsxNDIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFp
c2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29s
b3IsIENvbG9yU3BhY2UgZWxsaXBzZUNvbG9yU3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNhdmUoKTsKIAotICAgIHNldFN0cm9r
ZUNvbG9yKHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICBzZXRGaWxsQ29sb3Io
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHNldFN0cm9rZUNvbG9yKHNoYWRv
d0NvbG9yKTsKKyAgICBzZXRGaWxsQ29sb3Ioc2hhZG93Q29sb3IpOwogCiAgICAgZHJhd0VsbGlw
c2UoRmxvYXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIDEsIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogCi0gICAgc2V0U3Ryb2tlQ29sb3IoZWxsaXBzZUNvbG9yLCBlbGxpcHNlQ29s
b3JTcGFjZSk7Ci0gICAgc2V0RmlsbENvbG9yKGVsbGlwc2VDb2xvciwgZWxsaXBzZUNvbG9yU3Bh
Y2UpOworICAgIHNldFN0cm9rZUNvbG9yKGVsbGlwc2VDb2xvcik7CisgICAgc2V0RmlsbENvbG9y
KGVsbGlwc2VDb2xvcik7CiAKICAgICBkcmF3RWxsaXBzZShyZWN0KTsgIAogCkBAIC0xNzQsMzQg
KzE3NCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwot
ICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
bV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29s
b3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID0g
dHJ1ZTsKICNlbmRpZgotICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Is
IGNvbG9yU3BhY2UpOworICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQpAQCAtMjA5LDE2ICsy
MDYsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBtX3N0YXRl
LnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7
CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dD
b2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBjbGVhclBsYXRmb3JtU2hhZG93
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNv
bnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBm
bG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUu
c2hhZG93T2Zmc2V0OwogICAgIGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3Ig
PSBtX3N0YXRlLnNoYWRvd0NvbG9yOwotICAgIGNvbG9yU3BhY2UgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2U7CiAKICAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CkBAIC0yNDEsMTMgKzIzNiwx
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogfQog
I2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKLSAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQpAQCAtMzc4LDEyICsz
NzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMo
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0
aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkp
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qo
ZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
LnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
RmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5vcmlnaW5hbFNpemUoKSk7CkBA
IC0zOTEsMjkgKzM4NSwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdAogICAgIEZsb2F0UmVj
dCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAK
LSAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
RGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
LSAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJh
d1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCkBAIC00MjEsMzIgKzQxNSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAKICAgICBp
ZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRyYXdJbWFnZShp
bWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5kcmF3
VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5sb2dp
Y2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UubG9naWNhbFNpemUoKSks
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIEZsb2F0
UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNl
LCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxv
Z2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVy
cG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5k
cmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC01MDksMjkgKzUwMywy
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHBy
ZXZpb3VzT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7Ci0gICAgZmlsbFJlY3QocmVjdCwgY29sb3IsIHN0eWxl
Q29sb3JTcGFjZSk7CisgICAgZmlsbFJlY3QocmVjdCwgY29sb3IpOwogICAgIHNldENvbXBvc2l0
ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAg
IGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKLSAgICAgICAgcGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QocmVjdCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZpbGxSZWN0KHJlY3Qu
cmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9k
ZSk7CisgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29tcG9zaXRlT3BlcmF0
aW9uKCksIGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ2LDE1ICs1NDAs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIAogICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxl
ID0gZmlsbFJ1bGUoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAg
ICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKICAgICAK
ICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgIHNldEZpbGxDb2xvcihjb2xvciwg
Y29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBh
dGgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29s
b3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9s
ZEZpbGxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiOWRjMDIzMDlmNmMzNjYxZmIyNmQ2
NzJjMjVmM2UzMjY5MTk1NDM0Li5iZTIwYTczNzlmZDg0MjkwMDFjYzFjODY1OTM3YTMxNGZlZjYz
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHRfaAog
I2RlZmluZSBHcmFwaGljc0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCkBAIC0xNDgsMTAgKzE0Nyw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAg
IFdpbmRSdWxlIGZpbGxSdWxlIHsgUlVMRV9OT05aRVJPIH07CiAKLSAgICBDb2xvclNwYWNlIHN0
cm9rZUNvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0gICAgQ29sb3JTcGFjZSBm
aWxsQ29sb3JTcGFjZSB7IENvbG9yU3BhY2VEZXZpY2VSR0IgfTsKLSAgICBDb2xvclNwYWNlIHNo
YWRvd0NvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0KICAgICBmbG9hdCBhbHBo
YSB7IDEgfTsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBv
c2l0ZVNvdXJjZU92ZXIgfTsKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9y
bWFsIH07CkBAIC0yMTQsOSArMjA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Ryb2tlU3R5
bGUoU3Ryb2tlU3R5bGUpOwogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KLSAgICBDb2xvclNw
YWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9y
U3BhY2U7IH0KIAogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAg
ICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybi5nZXQoKTsgfQpAQCAtMjI3LDkgKzIyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVs
ZTsgfQogICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
UnVsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBDb2xvciYpOwogICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yU3BhY2U7IH0KIAogICAgIHZvaWQgc2V0RmlsbFBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQpAQCAtMjYxLDcgKzI1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICB2b2lkIGRyYXdQYXRoKGNv
bnN0IFBhdGgmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBjbGlw
VG9OYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgYnVmZmVyU2l6ZSk7CiAgICAgCkBAIC0yODgsNyArMjgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHZv
aWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKTsKICAgICB2b2lkIGRyYXdDb252ZXhQ
b2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFu
dGlhbGlhcyA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29u
c3QgUGF0aCYpOwpAQCAtMjk4LDI5ICsyOTEsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKTsK
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7Ci0gICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgdm9pZCBm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFn
ZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0g
ICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAor
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJ
bWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7IH0KQEAgLTM3NiwxMyArMzY5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgYm9vbCBpc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDAp
ICYmIHN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICAvLyBMZWdhY3kgc2hh
ZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRv
dy4KICAgICAvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLSAg
ICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0TGVnYWN5U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyU2hhZG93KCk7Ci0gICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxv
YXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGdldFNoYWRvdyhGbG9h
dFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CiAKICAgICBib29sIGhhc1Zpc2libGVTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0
YXRlLnNoYWRvd0NvbG9yLmFscGhhKCk7IH0KICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OyB9CkBAIC00NjMsOCArNDU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZyYW1lQ29udHJv
bChjb25zdCBJbnRSZWN0JiByZWN0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGF0ZSk7CiAg
ICAgdm9pZCBkcmF3Rm9jdXNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpOwogICAgIHZvaWQgcGFp
bnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwotICAgIHZv
aWQgZHJhd0JpdG1hcChTaGFyZWRCaXRtYXAqLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpOwotICAgIHZvaWQgZHJh
d0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0bWFwKiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdElu
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFNpemUmIG9yaWdTb3VyY2VT
aXplKTsKKyAgICB2b2lkIGRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiwgY29uc3QgSW50UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CisgICAgdm9pZCBkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRtYXAqLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6ZSk7CiAgICAg
dm9pZCBkcmF3SWNvbihISUNPTiBpY29uLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBVSU5UIGZs
YWdzKTsKICAgICB2b2lkIGRyYXdSb3VuZENvcm5lcihib29sIG5ld0NsaXAsIFJFQ1QgY2xpcFJl
Y3QsIFJFQ1QgcmVjdFdpbiwgSERDIGRjLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2Vsc2UK
QEAgLTUyOSwxNyArNTIyLDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBsYXRmb3JtVGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKIAotICAgIHZvaWQgc2V0UGxhdGZv
cm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1TdHJv
a2VTdHlsZShTdHJva2VTdHlsZSk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVz
cyhmbG9hdCk7CiAKLSAgICB2b2lkIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYp
OwogCiAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sKTsKICAgICB2b2lk
IHNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9y
bUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCi0gICAg
dm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIGNsZWFyUGxh
dGZvcm1TaGFkb3coKTsKIAogICAgIHZvaWQgc2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CkBAIC01
NTUsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wm
IHNob3VsZEFudGlhbGlhcywgQ29sb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRlM2Q2MTUyZjY1OGFhMDkwOWVlNzBiMjY5NzAzYmM1Mjhl
NjBjZDMuLjgxZmJiMGYxZTdhY2JmMmYwOGVlZTc1NDI4YjY1OTMxMTdhNmIwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc5LDIxICs3OSwyMSBA
QCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsK
ICAgICBpZiAoIWNvbG9yLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb21w
b3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY3R4dC5jb21wb3NpdGVPcGVyYXRpb24o
KTsKICAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0
LmZpbGxSZWN0KGRzdFJlY3QsIGNvbG9yLCBzdHlsZUNvbG9yU3BhY2UpOworICAgIGN0eHQuZmls
bFJlY3QoZHN0UmVjdCwgY29sb3IpOwogICAgIGN0eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xp
ZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFko
KGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgp
IC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbAogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0
KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9u
KG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0
aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RS
ZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRp
b24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNj
YWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICAgICAgZHJhdyhjdHh0LCB0b1JlY3QsIGZy
b21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnRUaWxlUmVjdC5zaGlmdFhFZGdlVG8ob25lVGlsZVJlY3QueCgp
KTsKICAgICAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbAogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFu
c2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwog
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsK
LSAgICBkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qs
IGJsZW5kTW9kZSk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxl
bmRNb2RlKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGFydEFuaW1hdGlvbihEb05vdENh
dGNoVXApOwpAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKIAog
Ly8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5j
ZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCiB2b2lkIElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgc29saWRDb2xv
cigpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0
eHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwgb3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvCiAgICAgICAg
IHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAog
ICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0
LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkc3RS
ZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
YXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wLCBkc3RSZWN0KTsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggYTViMWU0YWUzZGNmZTk3NjE2MzBhMzBhNTY0NTI4OGU2
ZDE0NjVjYS4uNDczNzliM2U5MmU5ZTY3NWI3NTkyMzUyMDg1NTZjMzAwYjk4N2RhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
ZGVmaW5lIEltYWdlX2gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTE1NCw3ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1h
Z2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlV2l0aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBvcmlnaW5hbEltYWdlLCBDb2xvclNwYWNl
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTcxLDcgKzE2OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKICAgICBGbG9hdFJlY3QgYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1w
bGluZyhjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNjYWxlZFNpemUp
IGNvbnN0OwpAQCAtMTg2LDE2ICsxODQsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElt
YWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgdm9pZCBmaWxsV2l0
aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAKLSAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQg
Zm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0K
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgLCBCbGVu
ZE1vZGUpOwotICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pID0gMDsKKyAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUs
IFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5n
IHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCmluZGV4IDM2NjAzYjc5ZjhkMGE3ZTkyNzA3YzI1YzQ2ZDI0ZmQzZDllNTA1
MzAuLjM2MGNlODY1OTUxOTdlZmEyMzJjYTkwZTY4NzIzNGVmYTBjNWEwYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTM0LDggKzEz
NCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAK
ICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBkMGJhZDMwZTkyNzJkZmM4MWFjNDc2ZjM2ODUxNjYw
YjNjMGRmMjg1Li5hMGY2NDM0ZTg5YTg4OGNiNjk3MDI2YzU2Yzg4YzhlNzczNjZlMDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZs
b2F0U2l6ZSYKICAgICBzZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi12b2lkIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICNpZiBV
U0UoTkVXX1RIRU1FKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICNlbmRp
ZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCB0cnVlKTsK
QEAgLTcyLDE0ICs3MiwxMyBAQCB2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogICAgIHBsYXRmb3Jt
VGhlbWUoKS0+ZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVj
dCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxl
IHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJh
d1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShzcmNS
ZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGF0dGVyblRyYW5zZm9ybSk7CiAgICAgVU5VU0VEX1BB
UkFNKHBoYXNlKTsKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0eWxlQ29sb3JTcGFjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwogICAgIFVOVVNF
RF9QQVJBTShjb21wb3NpdGVPcCk7CiAgICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDZmNGVjZDliNzJiNmMzZjM3Nzc1ZWMzYjkxZGUzMWMwY2Zi
N2E1Y2IuLmQ5ZjBhYzFmMzE2Yzg3NjNmYWI3NzgzNGRlMTI5MjI5NmIzZThhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CmluZGV4IDg1YWVlZWZmNzJlZTI3MGU3NjAwODBkYzYwZWViMmIwNWM4MTc0YTMuLjhhY2JkYTI4
N2FjMjNhZGI4ZmQ1MWRiYjllNWIzMzU1ZDcxMzBlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04NSwxNSArODUsMTQgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9h
dFNpemUmIGxheWVyU2l6ZSkKKyAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxv
YXRTaXplJiBsYXllclNpemUpCiAgICAgewotICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYm
IG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0
Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKKyAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBtX2xhc3RXYXNJbnNldCA9
IGZhbHNlOwogICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CiAgICAgICAgIG1fbGFzdENv
bG9yID0gY29sb3I7Ci0gICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAg
ICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKICAgICAgICAgbV9sYXN0UmFkaWkg
PSByYWRpaTsKICAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gbGF5ZXJTaXplOwpAQCAtMTAxLDE2
ICsxMDAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKLSAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0
ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9s
YXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5k
cyAmJiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFk
aWkpCisgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAm
JiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSB0
cnVlOwogICAgICAgICBtX2xhc3RJbnNldEJvdW5kcyA9IGJvdW5kczsKICAgICAgICAgbV9sYXN0
UmFkaXVzID0gcmFkaXVzOwogICAgICAgICBtX2xhc3RDb2xvciA9IGNvbG9yOwotICAgICAgICBt
X2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKICAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9
IHNoYWRvd1JlY3Q7CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAKQEAgLTE0Niw3ICsx
NDQsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwogICAgIEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOwogICAgIENvbG9yIG1fbGFzdENvbG9y
OwotICAgIENvbG9yU3BhY2UgbV9sYXN0Q29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9sYXN0
UmFkaXVzOwogICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CiAgICAgRmxvYXRTaXplIG1fbGFzdExh
eWVyU2l6ZTsKQEAgLTE3MSw5ICsxNjgsOCBAQCBzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lS
YWRpdXMoZmxvYXQgcmFkaXVzKQogfQogI2VuZGlmCiAKLVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK1NoYWRvd0JsdXI6OlNoYWRvd0Js
dXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgOiBtX2NvbG9yKGNvbG9yKQotICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJSYWRpdXMocmFkaXVzKQogICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQogICAgICwgbV9sYXllckltYWdlKDApCkBAIC0xODQsNyArMTgwLDYgQEAgU2hhZG93
Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQsIGNvbnN0IEMKIAogU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBtX2NvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQot
ICAgICwgbV9jb2xvclNwYWNlKHN0YXRlLnNoYWRvd0NvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJS
YWRpdXMoc3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKICAgICAsIG1fb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKICAgICAsIG1fbGF5ZXJJbWFnZSgwKQpAQCAtMjA2LDEyICsy
MDEsMTEgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cigpCiB7CiB9CiAKLXZvaWQgU2hhZG93Qmx1
cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJv
b2wgaWdub3JlVHJhbnNmb3JtcykKK3ZvaWQgU2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCiB7CiAgICAgbV9ibHVyUmFkaXVzID0g
cmFkaXVzOwogICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fY29sb3IgPSBjb2xvcjsKLSAg
ICBtX2NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgPSBpZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwpA
QCAtNDczLDcgKzQ2Nyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0J1ZmZlcihHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAoRmxvYXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJTaXplKSk7CiAgICAgfQogICAgIGdy
YXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qo
bV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKG1fY29sb3IpOwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CkBAIC01NzIsNyArNTY2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGMKICAgICBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdC5tb3ZlKG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVy
IGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgYm9vbCBy
ZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1
ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNp
emUpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCku
c2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJS
ZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsK
ICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CkBAIC01ODAsNyArNTc0LDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGMKICAgICAgICAgLy8gQWRkIGEgcGl4ZWwgdG8gYXZv
aWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQuCiAgICAgICAgIHNoYWRvd0NvbnRl
eHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9s
YXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQudHJhbnNsYXRl
KG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICBpZiAoc2hhZG93
ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBzaGFkb3dDb250ZXh0LmZpbGxS
ZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOwogICAgICAgICBlbHNlIHsKQEAgLTYxMCw3ICs2MDQs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdC5t
b3ZlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4g
dGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3Vy
IG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhv
bGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9s
ZVJlY3QsIGhvbGVSZWN0LnJhZGlpKCkpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0
KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dD
b250ZXh0KTsKQEAgLTYyNyw3ICs2MjEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAogICAgICAgICBzaGFkb3dD
b250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgIHNoYWRv
d0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICAgICAgYmx1clNoYWRvd0J1ZmZlcihleHBh
bmRlZEludFNpemUobV9sYXllclNpemUpKTsKQEAgLTY4MSwxNCArNjc1LDE0IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlSG9sZSA9IEZsb2F0UmVjdChl
ZGdlU2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkg
LSAyICogZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VT
aXplLmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZl
ciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wg
cmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRl
Qm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGJvb2wgcmVkcmF3
TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xl
LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8v
IERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7
CiAgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKICAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAg
ICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsK
QEAgLTcyNCw3ICs3MTgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRl
eHQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3Bh
Y2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQpAQCAtNzQ1LDE0ICs3MzksMTQgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICBGbG9hdFJlY3QgdGVtcGxhdGVTaGFkb3cgPSBG
bG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6
ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAt
IDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2Ny
YXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMK
LSAgICBib29sIHJlZHJhd05lZWRlZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFs
dWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywg
c2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRl
ZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgdGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7
CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIHRo
ZSBJbWFnZUJ1ZmZlci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0g
bV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc2hhZG93U3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKIAogICAgICAgICBzaGFkb3dDb250
ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBs
YXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAKICAgICAgICAgaWYgKHNoYWRv
d2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxs
UmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CkBAIC03OTgsMTQgKzc5MiwxNCBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZQogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93SW50ZXJpb3Ioc2hhZG93Qm91bmRz
LngoKSArIGxlZnRTbGljZSwgc2hhZG93Qm91bmRzLnkoKSArIHRvcFNsaWNlLCBjZW50ZXJXaWR0
aCwgY2VudGVySGVpZ2h0KTsKICAgICAgICAgaWYgKCFzaGFkb3dJbnRlcmlvci5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFw
aGljc0NvbnRleHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
X2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihtX2NvbG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRv
dygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHNoYWRvd0ludGVyaW9y
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKG1fY29sb3IpOwogICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAg
Ly8gTm90ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0
aW5nIGEgSW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKQEAgLTgxNiw0NiArODEwLDQ2IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNpZGUuCiAgICAgRmxvYXRSZWN0IHRpbGVS
ZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVtcGxhdGVTaWRlTGVuZ3RoLCB0b3BTbGlj
ZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJSZWN0LndpZHRoKCksIHRvcFNsaWNlKTsK
LSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAg
ICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAgdGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRv
bVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRlclJlY3QubWF4WSgpKTsKICAgICBkZXN0
UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRp
bGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1h
Z2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBMZWZ0IHNpZGUuCiAgICAgdGlsZVJl
Y3QgPSBGbG9hdFJlY3QoMCwgdG9wU2xpY2UsIGxlZnRTbGljZSwgdGVtcGxhdGVTaWRlTGVuZ3Ro
KTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRTbGljZSwg
Y2VudGVyUmVjdC55KCksIGxlZnRTbGljZSwgY2VudGVyUmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFJp
Z2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0
U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwogICAgIGRlc3RSZWN0
LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAgIGRlc3RSZWN0LnNldFdpZHRoKHJpZ2h0U2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwg
MCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVy
UmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGlj
ZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBn
cmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0
aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxv
YXRSZWN0KHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwg
dG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCByaWdodFNsaWNlLCB0b3BTbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJv
dHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXpl
LndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGlj
ZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNl
bnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0Lm1heFkoKSwgcmlnaHRTbGljZSwgYm90dG9tU2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qo
MCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9t
U2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNs
aWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIH0KIAogCkBAIC04
NzgsNyArODcyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKQogICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKICAgICBzaGFkb3dDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VJbik7Ci0gICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICBzaGFkb3dDb250ZXh0LmZpbGxSZWN0KEZsb2F0
UmVjdCgwLCAwLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7
CiB9CiAKQEAgLTg5NCw3ICs4ODgsNyBAQCBHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJl
Z2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogICAgIC8v
IFdlIHJlc2V0IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1ZXMgaGVyZSwgYmVjYXVzZSB0aGUgYnVm
ZmVyIHdpbGwgbm8gbG9uZ2VyIGNvbnRhaW4KICAgICAvLyBkYXRhIGZyb20gYW55IHByZXZpb3Vz
IHJlY3RhbmdsZSBvciBpbnNldCBzaGFkb3dzIGRyYXduIHZpYSB0aGUgdGlsaW5nIHBhdGguCiAg
ICAgYXV0byYgc2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpOwotICAg
IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkoKSwgbV9sYXllclNpemUpOworICAgIHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93
VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIEludFJlY3QoKSwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIG1fbGF5ZXJJbWFnZSA9IHNjcmF0Y2hC
dWZmZXIuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwpAQCAtOTE1
LDcgKzkwOSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNv
bnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChy
b3VuZGVkSW50UG9pbnQobV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV9sYXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qocm91
bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSk7CiAK
ICAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRv
bigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKaW5kZXggMjA1MGFiOWNkZmFmMzlmN2M2NjBhMTk3
ZmE1MmViYjBiNTI0OWM1ZC4uZWQxNjZjZmM0MmNkMDRjOTI3MDQzY2FmYTJjNWE3ZjM1ZGU0ZGYy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApA
QCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmx1clNoYWRvdwogICAgIH07CiAK
LSAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUm
IG9mZnNldCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0
IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3Im
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgU2hh
ZG93Qmx1cigpOwogCi0gICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIGJvb2wgaWdub3JlVHJhbnNm
b3JtcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9v
bCBpZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVU
cmFuc2Zvcm1zOyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KQEAgLTEwNCw3ICsxMDQsNiBAQCBw
cml2YXRlOgogICAgIFNoYWRvd1R5cGUgbV90eXBlOwogCiAgICAgQ29sb3IgbV9jb2xvcjsKLSAg
ICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9ibHVyUmFkaXVzOwog
ICAgIEZsb2F0U2l6ZSBtX29mZnNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTAz
YzRmYjAyYjljNGVhZGMwMGYzNzU0ZjUzNTA0M2ZlNDY5ZTdmYS4uNTViM2Q0N2U0NjYxYjllZjVi
MzY5N2M1MTkzNjYxODhhZGNhMTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC02NzAs
NyArNjcwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVlBsYXllckxheWVyKCkKIAogICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQ
bGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0UGxheWVy
Om1fYXZQbGF5ZXIuZ2V0KCldOwotICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9y
OmNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAg
W21fdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihDb2xvcjo6Ymxh
Y2spXTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fdmlkZW9MYXllciBzZXROYW1lOkAiTWVkaWFQ
bGF5ZXJQcml2YXRlIEFWUGxheWVyTGF5ZXIiXTsKICNlbmRpZgpAQCAtMjM0Nyw3ICsyMzQ3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRl
b091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRw
dXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CiAK
ICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwg
dHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBj
cmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRl
b091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0
cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCA4MDdlZTEzOTUyZjFkM2NhY2IwZjUwYWY5NTE0NjA2YTg1MTFjODY5Li5hZDc5ZTk1MzU3NDlj
Yzc4OTNhNWU4N2JmN2RkN2Y2MjBiYTQ0YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTk4Niw4ICs5
ODYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8g
dGhpcyBiZWNhdXNlIHRoZSBjYWxsIHRvCi0gICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0
aENvbG9yU3BhY2UoKSBiZWxvdyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCisg
ICAgICAgIC8vIEZJWE1FOiBwcm9iYWJseSBkb24ndCBuZWVkIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlIGF0IGFsbCBub3cuCiAgICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKaW5kZXggZjE4MDlmY2YyZGRiZTEwNTMwYThhOGVkZjkw
OGRlNGQ5MTI2YjM1Zi4uNjhiOTU2Mjg0MDVhZTBlMjE2ZTM0MTRmM2ExOGI5MTc2NGI0NGZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNw
cApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50
Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAKICAgICBpbnQg
cmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KHBsYXRm
b3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5ZXIoKS5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAgICAgIFBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxh
dGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3IobV9jb250cm9sbGVyLnRp
bGVEZWJ1Z0JvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCBwbGF0Zm9ybUNBTGF5ZXIsIHJlcGFpbnRDb3VudCwgY2FjaGVkQ0dDb2xvcihtX2NvbnRy
b2xsZXIudGlsZURlYnVnQm9yZGVyQ29sb3IoKSkpOwogCiAgICAgaWYgKG1fY29udHJvbGxlci5z
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsKICAgICAgICAgRmxvYXRSZWN0
IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS54KCksIHBsYXRmb3JtQ0FM
YXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLndp
ZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IDcyMTNiNWI1NzEwYWNm
NjFlZTExODdmM2I5NDU3YWE0MWEyZjY1M2EuLjQzY2Q5ZTQ3ZGQ1OTNmNDk1ZGVlOTdhNWE1MjUw
NDA1ZTVhMmYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRy
YXdSZXBhaW50Q291bnRlcnMoQ0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29uCiAgICAgaWYgKGJv
cmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ0FDRkxheWVyR2V0Qm9y
ZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQotICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBj
YWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCkpOwog
CiAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBvd25l
cigpLCBkcmF3Q291bnQsIGJhY2tncm91bmRDb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CmluZGV4IGY1ZTNkZTBlNTM0YjAxNmVkZjYxYjQwY2U0ZmExYTUyOTVkNGE3NzQuLmNkNTdlZTQ4
NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiAgICAgY2hlY2tGb3JT
b2xpZENvbG9yKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKK3ZvaWQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAogICAgIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0
aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29u
c3QgRmxvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0LCBzb2xpZENvbG9y
KCksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29u
dGV4dCwgZHN0LCBzb2xpZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGE0MmI1NGQzODJjNDkyYjUwNDg2MTkz
MzAwMGQzZmQyMTM0ZDg4NGIuLjMzYzgwMDY2MDJhOWIzYjdjYWM4ZWE2YTAxMGQ3NmJjNWFkNzA3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTIyNCw3ICsyMjQsNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIHBsYXRmb3Jt
Q29udGV4dCgpLT5zaGFkb3dCbHVyKCkuc2V0U2hhZG93VmFsdWVzKEZsb2F0U2l6ZShtX3N0YXRl
LnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5z
aGFkb3dDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7CiB9CiAKQEAgLTQ1MSw3ICs0NTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fp
cm9QYXRoKCp0aGlzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTcyNCwxMyArNzIzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUo
ZmxvYXQgeCwgZmxvYXQgeSkKICAgICBtX2RhdGEtPnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25z
dCBDb2xvciYpCiB7CiAgICAgLy8gQ2Fpcm8gY29udGV4dHMgY2FuJ3QgaG9sZCBzZXBhcmF0ZSBm
aWxsIGFuZCBzdHJva2UgY29sb3JzCiAgICAgLy8gc28gd2Ugc2V0IHRoZW0ganVzdCBiZWZvcmUg
d2UgYWN0dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKQogewogICAg
IC8vIENhaXJvIGNvbnRleHRzIGNhbid0IGhvbGQgc2VwYXJhdGUgZmlsbCBhbmQgc3Ryb2tlIGNv
bG9ycwogICAgIC8vIHNvIHdlIHNldCB0aGVtIGp1c3QgYmVmb3JlIHdlIGFjdHVhbGx5IGZpbGwg
b3Igc3Ryb2tlCkBAIC03OTgsNyArNzk3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBtX2RhdGEtPnNldENUTSh0
cmFuc2Zvcm0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3co
RmxvYXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29uc3QmLCBDb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYg
c2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0JikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC04MTMsNyArODEyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQsIENvbG9y
IGNvbnMKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLnNldFNoYWRvd1ZhbHVl
cyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2hhZG93T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2hhZG93Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCkBAIC0xMDE5LDcgKzEwMTcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgY2Fpcm9f
c2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwMzcsNyArMTAzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3Iu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDU5LDcgKzEwNTcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhh
dmUgYW4gaW1hZ2UgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAzZTUyMTNmODZkYTY1
MTJkZTYxZGZhNWJmOWY2NWFlNzFjODJlM2RmLi4yNTZkMWNjODMxM2JhOGIwNzE4N2M3NTBiMWM5
NjQ2NzJkZjhlMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDE5ICsxNjUsMTkg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbWFza1JlY3QpIGNvbnMKICAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgQmFja2lu
Z1N0b3JlQ29weSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/
IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3
SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3As
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlT
Y2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQorICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCiB7
CiAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RS
ZWN0KTsKKyAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3QpOwogfQogCiB2b2lkIElt
YWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4m
IGxvb2tVcFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCBlNGM2M2EzNDZlMjJkZmIzNGVjZWJiNzcyNjNi
NzRlMzc3N2IwZTk0Li4xMWU1N2I0YmQxYzA4NWVjNDE4NzA5ZGU0N2VmYTgyYjkyNzdhMjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUNhaXJvLmNwcApAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
LSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGNv
bnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGNv
bnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAgICAgaWYgKGltYWdlT2Jz
ZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cAppbmRleCA1OWE4Y2RiZGU2ZGE1MjllYzUxMWNjYzIyMGM0NzI4MDgxMDMyYmNjLi5iZjZmMjg2
OTM2ZmZhY2ExNDU1ZjRhNTg2MGU3MTBhNjM5ZDVjMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtMjAzLDcg
KzIwMyw3IEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFy
cmF5KCkKICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKIHsK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKQEAg
LTIyNiw3ICsyMjYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RS
ZWN0LCBzb2xpZENvbG9yKCksIGNvbXBvc2l0ZU9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGlt
YWdlU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGN0eHQuZHJhd05hdGl2ZUltYWdl
KGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigp
KQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDhhN2ZlYmVkNTQw
ODM3ZWQxMjMwMGQ3YjI4YjM3YmFiNzg2ZmZmMzUuLjlhNDhhMzMxZGYzMDgzNzBhM2NlMzM1ODZh
YzVlMjVmYzhhZGRlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCkBAIC05OSwyNiArOTksMjYgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JS
ZWYgY29sb3IpCiAgICAgbV92YWxpZCA9IHRydWU7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxl
YWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3Rh
dGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIENH
RmxvYXQgY29tcG9uZW50c1s0XTsKICAgICBjb2xvci5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNv
bXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwotICAgIHJldHVybiBD
R0NvbG9yQ3JlYXRlKGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgY29tcG9uZW50cyk7
CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50
cyk7CiB9CiAKLXRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitDR0NvbG9yUmVmIGNhY2hlZENH
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHN3aXRjaCAoY29sb3IucmdiKCkpIHsK
ICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDogewotICAgICAgICBzdGF0aWMgQ0dDb2xvclJl
ZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9y
KGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKICAgICB9CiAgICAg
Y2FzZSBDb2xvcjo6YmxhY2s6IHsKLSAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0Nv
bG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBzdGF0aWMgQ0dD
b2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgIHJldHVy
biBibGFja0NHQ29sb3I7CiAgICAgfQogICAgIGNhc2UgQ29sb3I6OndoaXRlOiB7Ci0gICAgICAg
IHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgd2hpdGVDR0NvbG9yID0gbGVha0NH
Q29sb3IoY29sb3IpOwogICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwogICAgIH0KICAgICB9
CkBAIC0xMzQsNyArMTM0LDcgQEAgdGVtcGxhdGU8Q29sb3JTcGFjZSBjb2xvclNwYWNlPiBzdGF0
aWMgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2wKICAgICAgICAgICAg
IHJldHVybiBjYWNoZWRDR0NvbG9yc1tpXS5nZXQoKTsKICAgICB9CiAKLSAgICBDR0NvbG9yUmVm
IG5ld0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CisgICAgQ0dDb2xv
clJlZiBuZXdDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogCiAgICAgc3RhdGljIHNpemVf
dCBjdXJzb3I7CiAgICAgY2FjaGVkUkdCQVZhbHVlc1tjdXJzb3JdID0gY29sb3IucmdiKCk7CkBA
IC0xNDUsMjAgKzE0NSw2IEBAIHRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGlj
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sCiAgICAgcmV0dXJuIG5l
d0NHQ29sb3I7CiB9CiAKLUNHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0Nv
bG9yPENvbG9yU3BhY2VEZXZpY2VSR0I+KGNvbG9yKTsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdC
OgotICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xvclNwYWNlU1JHQj4oY29sb3IpOwot
ICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29s
b3I8Q29sb3JTcGFjZUxpbmVhclJHQj4oY29sb3IpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
aW5kZXggOTRhYWFhOTMwNWIzZTBkNDZiZWI1OWQ4MjE2OTgxOGU2MTA0MmE3My4uMzdhNzI4OTkw
OTM4MTdjYjg5YTMxMWUwYzA5N2MzZmU0MmIwYjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
QEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQu
c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdl
SGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCks
IGltYWdlU2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDM2MGUzODdjYzgzMWE2MzA3
NzY0MzNiZjYxNWNjOGJjYzgzZThkNWYuLjJhYzk0YjJkNTEyN2ZkMDhlZjVmZmMyOWRiMTMxNzAw
ZmNjYjU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTYzLDE2ICs2MywxNyBAQCB1c2luZyBX
VEY6OkdlbmVyaWNIYXNoVHJhaXRzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2
b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENH
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgQ0dDb250ZXh0
U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9y
U3BhY2UpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2Fj
aGVkQ0dDb2xvcihjb2xvcikpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9yKENH
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3N0YXRpYyB2b2lkIHNldENHU3Ryb2tlQ29sb3IoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKSk7CisgICAgQ0dD
b250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xv
cikpOwogfQogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBzb29uLgogQ0dDb2xv
clNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQogewogICAgIHN0YXRpYyBDR0NvbG9y
U3BhY2VSZWYgZGV2aWNlU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKQEAg
LTgxLDkgKzgyLDYgQEAgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQog
CiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQogewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICByZXR1cm4gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKICAgICBzdGF0
aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gT3V0LW9mLWRh
dGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhp
cyBsb2dpYyBhdm9pZHMKQEAgLTkzLDcgKzkxLDYgQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xv
clNwYWNlUmVmKCkKICAgICAgICAgc1JHQlNwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gc1JHQlNwYWNlOwotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9T
KQpAQCAtMTI3LDggKzEyNCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQo
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCkKICAgICBzZXRQYWludGluZ0Rpc2FibGVkKCFjZ0NvbnRl
eHQpOwogICAgIGlmIChjZ0NvbnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250
ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgICAgICBzZXRQbGF0Zm9ybUZp
bGxDb2xvcihmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Ci0gICAgICAgIHNldFBsYXRm
b3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCkpOworICAgICAgICBzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZVRo
aWNrbmVzcyhzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJ
bnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIH0KQEAgLTE2Myw3
ICsxNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQog
ICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZShpbWFnZVB0cik7CiAKQEAgLTI1NCw5ICsyNTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxv
YXRTaQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBhZGp1c3RlZERlc3RS
ZWN0LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CiAK
LSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIGltYWdlID0gSW1hZ2U6OmltYWdl
V2l0aENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSk7Ci0KICAgICAvLyBE
cmF3IHRoZSBpbWFnZS4KICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWRE
ZXN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogfQpAQCAtMjgwLDcgKzI3NCw3IEBAIHN0YXRpYyB2b2lk
IHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghcGF0
dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwLDkg
KzMxNCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsK
ICAgICB9CiAKLSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIHN1YkltYWdlID0g
SW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2Uoc3ViSW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFj
ZSk7Ci0KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNh
dXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcs
CiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQg
bWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKQEAgLTM1MCw3
ICszNDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICBpZiAoIXBhdHRlcm4p
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsK
KyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKG51bGxwdHIpKTsKIAogICAgICAgICBDR0Zsb2F0
IGFscGhhID0gMTsKICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRD
RihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJuLmdl
dCgpLCAmYWxwaGEpKTsKQEAgLTM5NCw3ICszODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAg
ICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3RzIHRvIHNpbXVsYXRlIHRoZSBzdHJv
a2Ugb2YgYSBib3JkZXIuCiAgICAgICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigp
OwogICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkpCi0gICAgICAgICAg
ICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Ryb2tlQ29sb3IoKSk7
CiAgICAgICAgIENHUmVjdCByZWN0c1s0XSA9IHsKICAgICAgICAgICAgIEZsb2F0UmVjdChyZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKICAgICAgICAg
ICAgIEZsb2F0UmVjdChyZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBib3JkZXJUaGlja25lc3MsIHJl
Y3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKQEAgLTQwMyw3ICszOTQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpCiAgICAgICAgIH07CiAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0cyhjb250
ZXh0LCByZWN0cywgNCk7CiAgICAgICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gc3Ryb2tlQ29sb3Io
KSkKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgZmls
bENvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRG
aWxsQ29sb3IpOwogICAgIH0KIH0KIApAQCAtNDMyLDcgKzQyMyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50CiAgICAgaWYgKGRyYXdzRGFzaGVkTGluZSkgewogICAgICAgICAvLyBGaWd1cmUg
b3V0IGVuZCBwb2ludHMgdG8gZW5zdXJlIHdlIGFsd2F5cyBwYWludCBjb3JuZXJzLgogICAgICAg
ICBjb3JuZXJXaWR0aCA9IHN0cm9rZVN0eWxlID09IERvdHRlZFN0cm9rZSA/IHRoaWNrbmVzcyA6
IHN0ZDo6bWluKDIgKiB0aGlja25lc3MsIHN0ZDo6bWF4KHRoaWNrbmVzcywgc3Ryb2tlV2lkdGgg
LyAzKSk7Ci0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCksIHN0
cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9r
ZUNvbG9yKCkpOwogICAgICAgICBpZiAoaXNWZXJ0aWNhbExpbmUpIHsKICAgICAgICAgICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIEZsb2F0UmVjdChwb2ludDEueCgpLCBwb2ludDEueSgp
LCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRGaWxsUmVj
dChjb250ZXh0LCBGbG9hdFJlY3QocG9pbnQxLngoKSwgcG9pbnQyLnkoKSAtIGNvcm5lcldpZHRo
LCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CkBAIC02MDcsNyArNTk4LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJu
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBwYXR0
ZXJuU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCkpOworICAgIFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlUGF0dGVybihudWxscHRyKSk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3Bh
Y2UoY2dDb250ZXh0LCBwYXR0ZXJuU3BhY2UuZ2V0KCkpOwogCiAgICAgY29uc3QgQ0dGbG9hdCBw
YXR0ZXJuQWxwaGEgPSAxOwpAQCAtODM3LDE3ICs4MjgsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBDR0NvbnRleHRGaWxsUmVj
dChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAgICBDb2xv
clNwYWNlIG9sZENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwogCi0gICAgaWYgKG9sZEZp
bGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAg
IHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBpZiAob2xk
RmlsbENvbG9yICE9IGNvbG9yKQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xv
cik7CiAKICAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAm
JiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7
IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIENHQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBkcmF3T3duU2hhZG93KTsKQEAgLTg2NCwyMSAr
ODU0LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgaWYgKGRyYXdPd25TaGFkb3cp
CiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAh
PSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmls
bENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CisgICAgaWYgKG9s
ZEZpbGxDb2xvciAhPSBjb2xvcikKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xk
RmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENvbG9y
IG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwotICAgIENvbG9yU3BhY2Ugb2xkQ29sb3JTcGFj
ZSA9IGZpbGxDb2xvclNwYWNlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8
IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29u
dGV4dCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3Ip
CisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKIAogICAgIGJvb2wgZHJh
d093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3co
KSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRv
d0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIGRyYXdPd25TaGFkb3cpOwpAQCAtOTA2LDExICs4OTUsMTEgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJlY3QsIGNvbnMKICAgICBpZiAoZHJhd093blNoYWRvdykKICAgICAgICAgc3RhdGVTYXZl
ci5yZXN0b3JlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9y
U3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xk
RmlsbENvbG9yLCBvbGRDb2xvclNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9y
KQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDEw
ICs5MTYsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogCiAgICAgV2luZFJ1bGUgb2xkRmls
bFJ1bGUgPSBmaWxsUnVsZSgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigp
OwotICAgIENvbG9yU3BhY2Ugb2xkRmlsbENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwog
ICAgIAogICAgIHNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgc2V0RmlsbENvbG9yKGNv
bG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRGaWxsQ29sb3IoY29sb3IpOwogCiAgICAgLy8gZmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3QgYXJl
IGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3VuZCBp
bnNpZGUgdGhlIGhvbGUuCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRD
b250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOwpAQCAtOTQ5LDcgKzkzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAg
ICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZp
bGxSdWxlKTsKLSAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFj
ZSk7CisgICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNTksNyArMTA0Nyw3IEBA
IHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5OSw3ICsxMDg3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBi
bHVyLCBjb24KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgQ0dDb250ZXh0U2V0
U2hhZG93KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMp
OwogICAgIGVsc2UKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQs
IENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3Io
Y29sb3IsIGNvbG9yU3BhY2UpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hl
ZENHQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZv
cm1TaGFkb3coKQpAQCAtMTM5NiwxMiArMTM4NCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5
JgogICAgIH0KIAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAg
ICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGxvY2FsU3Ryb2tlQ29sb3Is
IHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBsb2NhbFN0cm9rZUNvbG9yKTsKIAogICAgIENHQ29udGV4dEZpbGxSZWN0cyhwbGF0
Zm9ybUNvbnRleHQoKSwgZGFzaEJvdW5kcy5kYXRhKCksIGRhc2hCb3VuZHMuc2l6ZSgpKTsKIAog
ICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAgICAgICAgc2V0Q0dG
aWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgp
KTsKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiBs
aW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKQEAgLTE1MDEsMTEgKzE0ODksMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5n
TW9kZUZsYWdzIG1vZGUpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgc2V0Q0dTdHJva2VDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgY29sb3IsIGNvbG9y
U3BhY2UpOworICAgIHNldENHU3Ryb2tlQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZs
b2F0IHRoaWNrbmVzcykKQEAgLTE1MTUsMTEgKzE1MDMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBDR0Nv
bnRleHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCksIHN0ZDo6bWF4KHRoaWNrbmVzcywg
MC5mKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENHRmlsbENv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvciwgY29sb3JTcGFjZSk7CisgICAgc2V0Q0dGaWxs
Q29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRl
eCAzMjIzMjAyYjcyNzg4MjcyZjE2ODAzMTY0YjYzYjE3YmRkYTI5YTBjLi43ZDMwZmFiM2RjOTI2
OWU5Y2I3OTZhNDUxMTRiZGQxYzAyYWQxZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMjI4LDExICsyMjgs
OCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9p
ZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIGJvb2wpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7Ci0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/
IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7Ci0KICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8
IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOyAvLyBEcmF3aW5nIGludG8gb3VyIG93biBi
dWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgpAQCAtMjQxLDEwICsyMzgsMTAgQEAgdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwKIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0
OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0
aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwg
bV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSht
X3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAtMjUyLDE0ICsyNDksMTQg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKICAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJh
dGVkQ29udGV4dCgpKSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSB8
fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBpZiAo
UmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAvLyBEcmF3
aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAgICAgICAg
ICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVj
dCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywg
b3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXJpbmcgPSBjb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICAgICAgICAgIGltYWdlRm9yUmVuZGVyaW5nLT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwg
ZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAg
ICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRl
c3RSZWN0LCBibGVuZE1vZGUpOworICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENv
bnRleHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggNzVhYmJmOGNkMTY0Y2Q1
Mzk1OGQ0ZmQ2NmNhMTNhOTQxODY5ODc0OS4uZjNkZDAyMmE5MDVhNjJlNGMxMTgzOWFkZDRjYTZm
MGIwOTM2MWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTQ1LDM1ICs0NSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZShDR0ltYWdl
UmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBDR0NvbG9y
U3BhY2VSZWYgb3JpZ2luYWxDb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2Uob3JpZ2lu
YWxJbWFnZSk7Ci0KLSAgICAvLyBJZiB0aGUgaW1hZ2UgYWxyZWFkeSBoYXMgYSAobm9uLWRldmlj
ZSkgY29sb3Igc3BhY2UsIHdlIGRvbid0IHdhbnQgdG8KLSAgICAvLyBvdmVycmlkZSBpdCwgc28g
cmV0dXJuLgotICAgIGlmICghb3JpZ2luYWxDb2xvclNwYWNlIHx8ICFDRkVxdWFsKG9yaWdpbmFs
Q29sb3JTcGFjZSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpKSkKLSAgICAgICAgcmV0dXJuIG9y
aWdpbmFsSW1hZ2U7Ci0KLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9y
U3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbEltYWdlOwotICAgIGNhc2Ug
Q29sb3JTcGFjZVNSR0I6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGVDb3B5
V2l0aENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSkpOwotICAg
IGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbEltYWdlLCBsaW5lYXJSR0JDb2xvclNw
YWNlUmVmKCkpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gb3JpZ2luYWxJbWFnZTsKLX0KLQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3R4dC5kcmF3UGF0dGVybigqdGhpcywgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2Us
IG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwg
YmxlbmRNb2RlKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggODJhM2E1YjRkZWE4
ZjRmNjYyNWEyZWFmNTQ3M2QzYWVkZWM2NGU1YS4uYmZjZWEyODg5ODc3OTk2YzBlNjhkMjdhOTY4
YTcxNzM1YjZkNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFtX2Rv
Y3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKG9wKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBkc3RSZWN0KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAppbmRl
eCA3ZmZkNjAzYjZmMWJmMzkwMzE1NTRjYjBkMDdlMzNmNWY5MmNkOGJmLi45YTRjMWU5ZTBiNTFl
MzlkNTBhNDRiMTliOTE1NTViZDliMDU2OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNp
emUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2Nh
ZGVDb2NvYS5tbQppbmRleCA4MzljYTAzZDkzNmY1MmQ2MzQwNWIyNWVlOTlmODk4MDZjZWJkNzIz
Li5kMWRjYmQ2NmVlYWVjMzZlZGExZjc4MmE1MjRjMGJjNTA1YjVkMmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRl
Q29jb2EubW0KQEAgLTMzMyw5ICszMzMsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAg
IEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xv
ciBzaGFkb3dDb2xvcjsKLSAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0gICAgQ29s
b3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKLSAgICBj
b250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CkBAIC0zNTIsMTQgKzM1MCwxNCBAQCB2b2lkIEZvbnRD
YXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgRwogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7CiAgICAgICAgIENvbG9yIHNoYWRv
d0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93
Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAy
NTUpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRv
d0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNl
dC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1z
LCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBk
b3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgPyAtMSA6IDEpOwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQo
c2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQp
CiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4
dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwg
Z2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0Vm
ZmVjdCkKQEAgLTM3MCw3ICszNjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAg
ICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGlj
Qm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2Vz
KGZyb20pKSwgbnVtR2x5cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAg
IGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Is
IHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogI2lmICFQTEFURk9STShJT1MpCiAjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGVk
ZWY1NzgwMTgyZmNjODBmZTU3OTUzOTEyZDRhZDk1YTM3NmEwM2MuLmZmOTExMWM0YjYwMzI1NDZk
NDc0M2MxYzRlZjA3ODViM2M0NjE0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNzUsOCArNzUsOCBAQCB2b2lk
IEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8
fCAhaW1hZ2VCdWZmZXIyKQogICAgICAgICByZXR1cm47CiAKLSAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRl
ckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2lj
YWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21v
ZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCA3OGZmZGNlNGQ1OTFh
ZDZhODEyMmZlNjM4ODIzOTNmZjU1MWFlNzcyLi42ODYwZDdkZGZlNmEwMTViZWY5ODQ2MGM4YmNi
N2ViY2M0ZmU1NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2
b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1
ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIGlmIChpbkJ1ZmZlcikK
LSAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0lt
YWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVz
dWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkpOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggOWExNTZmODk0ZGYxNDNlZThlMzg1ODY4NzhkMDcw
OTIyOGUxYmZlOS4uODg4ODQ2YWNjZWQwMjIyYjhlY2I4OTQ3MTRlMmJlMTZiNGUxZDEwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZF
Q09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjogewogICAgICAgICAvLyBBcHBsaWVzIG9u
bHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAgLTI5NCwyMSArMjk0LDIxIEBAIHZvaWQg
RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIEludFJlY3QgYWRq
dXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBhYnNvbHV0ZVBhaW50UmVj
dCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IGRlc3RpbmF0aW9u
UmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJl
Y3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3Qs
IHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwg
c291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291
cmNlMlJlY3QpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3Vy
Y2VJbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJB
VE9SX09VVDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0g
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+
bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBv
c2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1Ip
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcAppbmRleCBkY2U1YWFlMjVmMjk3YWE4OGI2ZjhhODNjYmMyZGE4NGIwMGNlOTZlLi5j
MGU4OTQyNDE1OTFmNzM0M2ZjNzZlNGVlOTQ2NWQzNDNiODJhYWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRkVE
cm9wU2hhZG93LmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRkVHYXVz
c2lhbkJsdXIuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKQEAgLTkzLDEwICs5MiwxMCBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgcmVzdWx0Q29udGV4dCA9IHJlc3Vs
dEltYWdlLT5jb250ZXh0KCk7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRBbHBoYShtX3NoYWRvd09w
YWNpdHkpOwotICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3Vs
dENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgZHJhd2luZ1JlZ2lvbldpdGhP
ZmZzZXQpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEoMSk7CiAKLSAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywg
b2Zmc2V0LCBtX3NoYWRvd0NvbG9yKTsKIAogICAgIC8vIFRPRE86IERpcmVjdCBwaXhlbCBhY2Nl
c3MgdG8gSW1hZ2VCdWZmZXIgd291bGQgYXZvaWQgY29weWluZyB0aGUgSW1hZ2VEYXRhLgogICAg
IEludFJlY3Qgc2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+aW50ZXJuYWxTaXpl
KCkpOwpAQCAtMTA3LDEwICsxMDYsMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShQcmVtdWx0aXBsaWVk
LCBzcmNQaXhlbEFycmF5LmdldCgpLCBzaGFkb3dBcmVhLnNpemUoKSwgc2hhZG93QXJlYSwgSW50
UG9pbnQoKSwgSW1hZ2VCdWZmZXI6OkJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0pOwogCiAg
ICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4p
OwotICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJz
b2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvcik7CiAgICAgcmVzdWx0
Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyKTsK
IAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3aW5nUmVnaW9uKTsK
IH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKaW5kZXggN2VkNDI5ZjAzMzk2
ZTgyYzg5NmI1MzY3MDIyNmQwMThhYjIzNzJhNC4uZThkYThkMzFmNDU1YmQ5ZWRkOGNiMDlhM2Ni
ZmUxOWM3YTQxMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgRkVGbG9vZDo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29s
b3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29sb3IoKS5yZ2IoKSwgZmxvb2RPcGFj
aXR5KCkpOwotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBjb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxsUmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yKTsKIH0K
IAogdm9pZCBGRUZsb29kOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4IGEwMmQ5ZmRhZTI0NWE1ZmVkYzUx
OWM4MzAwYzAzMzFkMGQ3MjFiZTcuLjMyY2YyNTRkNWVjYWQzMTQ2M2JhNTNkZGE0Mjg2NTk5NDZj
NDU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZFTWVyZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoaSk7CiAgICAgICAgIGlm
IChJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpKQotICAgICAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIs
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVPZmZzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU9mZnNldC5jcHAKaW5kZXggMThhMmU3OTFkNTgzYmFjZGNkMWM3YmU2ZDA1N2Y1MGI5
YjUxOTFjYS4uZGRlZjU4NzkxY2ZhMjQ4NThjYWZhNmI0MjAzYzBjZDI0NWNlMWQ4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNl
dC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5hcHBseUhvcml6b250
YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGljYWxTY2FsZShtX2R5KSk7Ci0gICAgcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRy
YXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFT2Zm
c2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcAppbmRleCBhMTg3Yjc0ZmZmZmRkNWE5NzQ0ZGM2OTdjY2M1ZWVhYzIw
ZWRmMzAyLi5jNzA0NGEwMjcxYTRiZTJlNmQ5YmNhYTJlMDBlZTYyNWU3MmRjOWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250
ZXh0KCk7CiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRp
b24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwotICAgIHRpbGVJbWFnZUNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CisgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsK
IAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXgg
MWUzYjkxYTIyNDQ4ZjE4Y2FhNDE2ZmIxMDZhMjg0MGEwMDJhMzFiYi4uNzI0ODkzYmFhMDU4MjFm
MWJlNTlhZTc2ZjVlNmQxZWNmZDUwOGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTU4LDggKzU4
LDggQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVj
dCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBv
aW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgIGZpbHRlckNvbnRleHQuZmlsbFJl
Y3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2spOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7
CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXgg
ZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2NTlkNmNkMzMwMGViYi4uNjFiYjFiOGJjOTI1Mzc2
Njc1MWY2NjNhNDQ3Yzk1NWMxZmZlMTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4
dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIEludFBvaW50KCkpOwogfQogCiB2b2lk
IFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDBlMDU1ZTRiZmYyYjQzMmU5YTBiZmRmMDFj
MDJkY2NhNDIzODg1Y2QuLjBlY2Q2YzI2YmZmNzc4YzFkNzI3NTA4ZDczMWM3MzNmZGZiOWI2MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxJbWFn
ZSo+KGdzdEltYWdlLT5pbWFnZSgpLmdldCgpKSkKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
KmltYWdlLCBDb2xvclNwYWNlU1JHQiwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRl
Q29weSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2Ut
PnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IGJlMzUwNzYwOTMwY2FhYmNjMWNmZWYz
YmEyNGMyMTQyOTA3MTA2OWUuLjIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDliODFkOWQ3
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoSW50ZXJwb2xhdGlvbkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdl
KG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNy
Y1JlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCA2OTgyODU0ODY5MWEwNTg4
MTllZWM3NmY0Mjk3ZWY1NmMyNjhkYzY3Li4wNjQyNDNiNGI5YmYxY2Y3YTQ4YzAwOTliMjBkYWM3
OThiNWIxYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBtX3JlY3QsIG1fcmVjdCk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KG1faW1hZ2UsIG1fcmVjdCwgbV9yZWN0KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBk
YXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCBmZTI4MTUxMjFhNTcwNDQ2NzYxMGE0NTA2
NjRkMTk0OGQ4MTNmOGZkLi5kYjg2Zjk1MTgyYTAwMjA1ZWMxYWNhZmI0ODAyZWQyMTRlNjcwNGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKG1fc3VwcG9ydHNBbHBoYSkgewogICAgICAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9zaXpl
KSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX3NpemUpLCBDb2xv
cjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBhMjdhMmVmNmZl
Y2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1MjU2MWFmY2E2Li5kYmJmYzZiZGNlNDUyODY3NmJlNTg3MjYz
ZmRhZDBkODMzZTQzNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTgzLDE3ICsxODMsMTUgQEAgdm9pZCBGb250Q2Fz
Y2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
Rm9udCYgZm9udCwKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRv
d0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xv
clNwYWNlOwotICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAog
ICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9k
ZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0Js
dXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFw
aGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7
CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hh
ZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lk
IGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5j
bGVhclNoYWRvdygpOwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQu
ZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGlj
c0NvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9y
KHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVl
KCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dD
b2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dG
aWxsQ29sb3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHRyYW5z
bGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hh
ZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhl
IFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KICAgICAgICAgZmxv
YXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRv
d09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSA/IC0xIDogMSk7CkBAIC0yMDMsNyArMjAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9u
dCwKICAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50
LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQu
c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhz
V2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNf
Y2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBo
cyk7CiAgICAgICAgIH0KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxs
Q29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
Z0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSArIHRy
YW5zbGF0aW9uLmhlaWdodCgpKTsKQEAgLTIxNCw3ICsyMTIsNyBAQCB2b2lkIEZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250
JiBmb250LAogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKICAgICB3a1Jlc3RvcmVG
b250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggMjc0MjI3Yjk2YWVkZjA4YTM0MWI0YzIzMDgx
Y2MwM2I4YjZlNDE3OC4uYTg3M2Q4MzFhZGJhNTU3NWEwZDQwMjg5ZDExM2U1OTdiNTZmYmFmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC04Miw4ICs4Miw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKICAgICBzZXRQ
YWludGluZ0Rpc2FibGVkKCFtX2RhdGEtPm1fY2dDb250ZXh0KTsKICAgICBpZiAobV9kYXRhLT5t
X2NnQ29udGV4dCkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGlu
IHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxD
b2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xv
cihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRQbGF0Zm9y
bUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CisgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Io
c3Ryb2tlQ29sb3IoKSk7CiAgICAgfQogfQogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
aW50IHdpZHRoLCBpbnQKIAogICAgIGZsb2F0IHJhZGl1cyA9ICh3aWR0aCAtIDEpIC8gMi4wZjsK
ICAgICBvZmZzZXQgKz0gcmFkaXVzOwotICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5p
c1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSA6IDA7
CisgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29s
b3IoY29sb3IpIDogbnVsbHB0cjsKIAogICAgIENHTXV0YWJsZVBhdGhSZWYgZm9jdXNSaW5nUGF0
aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0
cy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAppbmRleCAzZThmNzdkMGNm
MWY3MGY3Y2Y3ZWM3YTY2NzZmMTE0MjhkOWM1ZGMyLi4yZmNiNzYzYjg1MTkyNmU3ZjhhYTViMzli
OTZhMDY0NTU0OWQ3MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKQEAgLTg1
LDggKzg1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChIREMgZGMsIGJv
b2wgaGFzQWxwaGEpCiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRz
IGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZp
bGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VD
b2xvcihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRQbGF0
Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CisgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29s
b3Ioc3Ryb2tlQ29sb3IoKSk7CiAgICAgfQogICAgIGlmIChjcikKICAgICAgICAgY2Fpcm9fZGVz
dHJveShjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKaW5kZXggMDgzNDcwN2RhOWJhZjcxMWNiZjcyODE3MzZmMjUyMmY3ZjEx
YTc2NS4uNjJkNDk4MDIyYzFmNjgyZTJkNGIzZjY4ZjFkZWQ5ZGQ4NDM4MzU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApA
QCAtNzYsOSArNzYsOSBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9
IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0
aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUs
IENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNv
cHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAg
ICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVhc2UoY2dDb250ZXh0KTsKQEAgLTg2
LDcgKzg2LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJt
cCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2
b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1Np
emUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFtZXMg
PSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwCmluZGV4IGM0MzQ4MGIzYjJkNWFiZjQyYmZjOTI2YWE3YmY4ODUyNjY1ODYy
YjYuLjI5YTIwMjNkYjYzYTkxNDM0YzM5NDhlYWE1NTIzYmI2MWZlODEwNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5j
cHAKQEAgLTc5LDkgKzc5LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShI
QklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKIAogICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQotICAgICAgICBkcmF3RnJh
bWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29t
cG9zaXRlQ29weSk7CisgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpz
aXplLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3Np
dGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
IAogICAgIC8vIERvIGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC04
OSw3ICs4OSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBi
bXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsKICAgICBzaXplX3QgZnJhbWVz
ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kp
IHsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogICAgICAgICBp
ZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndp
ZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJh
bWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0
eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1Np
emUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNy
Y1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJl
bnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJh
dyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCks
IGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXgg
YTcxYjgyOTk0Njg1OGI5N2Y2Y2U5N2I0Y2IzNzAxY2MwYmFiYzY4My4uZDhkMTA1NThiMmZkMzUx
YjZkNDFiNjI4ODNmYzA5MzY3OWFlMjg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBMZWdhY3lU
aWxlQ2FjaGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZnJhbWUub3JpZ2luLngsIGZyYW1lLm9y
aWdpbi55KTsKLSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQs
IGNhY2hlZENHQ29sb3IoY29sb3JGb3JHcmlkVGlsZUJvcmRlcihbbGF5ZXIgdGlsZUdyaWRdKSwg
Q29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRo
Q29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvckZvckdyaWRUaWxlQm9yZGVyKFtsYXll
ciB0aWxlR3JpZF0pKSk7CiAgICAgICAgIAogICAgICAgICBDR1JlY3QgbGFiZWxCb3VuZHMgPSBb
bGF5ZXIgYm91bmRzXTsKICAgICAgICAgbGFiZWxCb3VuZHMuc2l6ZS53aWR0aCA9IDEwICsgMTIg
KiBzdHJsZW4odGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUdyaWRUaWxlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVHcmlkVGlsZS5tbQppbmRleCAyYTlhNWZjYWRiZGI2MWQ5YmFmMDVjN2Q1MTA3YzljZmJi
YTliYmJjLi4zMGE3ZGJjYjk2Y2Q2NDZlMWM1YTk2Mzc4OGRmZWUwMDNlNTk1ZGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0KQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIExlZ2FjeVRpbGVHcmlkVGlsZTo6c2hvd0JvcmRlcihib29s
IGZsYWcpCiB7CiAgICAgTGVnYWN5VGlsZUxheWVyKiBsYXllciA9IG1fdGlsZUxheWVyLmdldCgp
OwogICAgIGlmIChmbGFnKSB7Ci0gICAgICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRD
R0NvbG9yKG1fdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmNvbG9yRm9yR3JpZFRpbGVCb3JkZXIobV90
aWxlR3JpZCksIENvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICAgICAgW2xheWVyIHNldEJvcmRl
ckNvbG9yOmNhY2hlZENHQ29sb3IobV90aWxlR3JpZC0+dGlsZUNhY2hlKCkuY29sb3JGb3JHcmlk
VGlsZUJvcmRlcihtX3RpbGVHcmlkKSldOwogICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyV2lkdGg6
MC41Zl07CiAgICAgfSBlbHNlIHsKICAgICAgICAgW2xheWVyIHNldEJvcmRlckNvbG9yOm5pbF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBmNmVjOTA5ZThiMjJjZGVhNzBl
YWU0ODFlN2M2ODRkMjJkMjZiZDAxLi4zZTJhOGQ2MjJhOWM1NTcwN2QyOTIyMmQ5NjJmNTNjOGMz
NjUzZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE2NSw3ICsxNjUs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1
bGxzY3JlZW4oKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJUaHJlYWRS
dW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7Ci0gICAgICAgIFt2
aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJD
b3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsK
KyAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRD
R0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogICAgICAgICBtX21vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CiAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCA1ZmIwNTJk
NDU2N2RhMDBiZDgyZGUyMWM5YWQ2OTAxMDU1ZDVkOTE5Li40MTZkNWRkOTU1Njc5YmI4MzZlNDI5
MjExODgwYzJhYjcxMTA5NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
SW1hZ2VNYWMubW0KQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3QXRQb2ludChO
U1N0cmluZyAqc3RyaW5nLCBOU1BvaW50IHBvaW50LCBOU0ZvbnQgKmZvbnQsIE5TQ29sb3IgKgog
ICAgICAgICBDR0Zsb2F0IGJsdWU7CiAgICAgICAgIENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtb
dGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2Vd
IGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVl
biAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUs
IGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSkpOwogICAgICAgICAKICAgICAg
ICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQo
cG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
CmluZGV4IGU5M2Q4NzJlMzY2YTM3NTIzMjZkMDJjY2ZiODJmMDE2NDM4YWQ1MDYuLjljZmQwNDg5
OTMyY2ZlNTY4MWZjMWFiMDBiNzAzNDFhMTM3NWJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQoQ0FMYXll
ciAqbGF5ZXIsIGNvbnN0IENvbG9yJgogICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNhY2hlZExpbmVu
QmFja2dyb3VuZENvbG9yID0gbGluZW5CYWNrZ3JvdW5kQ29sb3IoKS5sZWFrUmVmKCk7CiAgICAg
Ly8gV2Ugb3BlcmF0ZSBvbiB0aGUgQ0FMYXllciBkaXJlY3RseSBoZXJlLCBzaW5jZSBHcmFwaGlj
c0xheWVyIGRvZXNuJ3QgaGF2ZSB0aGUgY29uY2VwdAogICAgIC8vIG9mIHBhdHRlcm4gaW1hZ2Vz
LCBhbmQgd2Uga25vdyB0aGF0IFdlYkNvcmUgd29uJ3QgdG91Y2ggdGhpcyBsYXllci4KLSAgICBs
YXllci5iYWNrZ3JvdW5kQ29sb3IgPSBjdXN0b21CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpID8g
Y2FjaGVkQ0dDb2xvcihjdXN0b21CYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
IDogY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3I7CisgICAgbGF5ZXIuYmFja2dyb3VuZENvbG9y
ID0gY3VzdG9tQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29sb3IoY3VzdG9t
QmFja2dyb3VuZENvbG9yKSA6IGNhY2hlZExpbmVuQmFja2dyb3VuZENvbG9yOwogfQogCiB2b2lk
IFNjcm9sbGJhclRoZW1lTWFjOjpyZW1vdmVPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIg
KmxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IGU3NTkx
YmVkYmY0ZDVlMGQ2OWU3MGQ3M2U3MDQyOWVkZjgxYmExNWIuLmYxZTIxMTNjZjdhYTUxMTExZTBj
NGZlNzcwMWM3MTQ1MTkxYTFjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KQEAgLTY5Miw3ICs2OTIsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNS
aW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdyYXBoaWNzQ29udAogICAgICAg
ICAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpKTsKICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IGRyYXdDZWxsT3JGb2N1
c1JpbmdJbnRvUmVjdFdpdGhWaWV3KGNlbGwsIGltYWdlQnVmZmVyRHJhd1JlY3QsIHZpZXcsIGRy
YXdCdXR0b25DZWxsLCBkcmF3Rm9jdXNSaW5nKTsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VTUkdCLCByZWN0LmxvY2F0
aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgpKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCByZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAgICAgcmV0dXJu
IG5lZWRzUmVwYWludDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAKaW5kZXggYjA1M2M0MmJhYTlmYTFkNDZiZmJjOTJkODc5MzBiZjIwZjlkMzk4Ni4u
NmI2NTY2ODhlZTkwMGQ3Y2JhYTc5MWM2YTc5MjczNDIzYjM0ZGNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7
CiAgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgICAgIEludFJl
Y3QgcGFpbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBhaW50UmVjdCwgQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChwYWlu
dFJlY3QsIENvbG9yOjpibGFjayk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggOTk1NDQ3YjU2ODAx
MDM4Y2ZmZTMzMTU4OWM3NzY0MGJjZmZjODE0YS4uOWFkNzU3ZjNlYmE1NzI2YjFkMjFjNWFkNGVk
Y2RjMTk5YjY4ZDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
Y3JvbGxiYXJUaGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIGludCBTY3JvbGxiYXJU
aGVtZU1vY2s6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSkKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xs
YmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9s
bGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogQ29sb3IoMHhGRkUwRTBFMCkpOwog
fQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3Qp
CiB7CiAgICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QodGh1bWJSZWN0LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCA3
ZjNmZTM0NjFmMzZmMjE0YzE2ODVmYTQ2YzgzNWUxN2Q1MjA0MTQ1Li44ZTRjZDg5ZDZkOWJlYmMy
MjhmOGMzMjcxYTI5ZjdiOGU0N2QyMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRS
ZW5kZXJpCiAgICAgc3RhdGljIGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcigxNDAsIDE0MCwg
MTQwKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERy
YWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVjdCByZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNrZ3JvdW5k
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNr
Z3JvdW5kQ29sb3IpOwogIAogICAgIC8vIERyYXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3Qg
Q29sb3IgdG9wQ29sb3IoMCwgMCwgMCwgMjU1KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IGVlZGY2
ZmM2ZjM1ZmVkNGY0YjQyOGQ4OThkOWRmMjI4YzFkM2I4NDAuLjUzNDkxY2I3ZWEwNzdlMjA0ZTAw
OGZkNWY0YWY1MWJhZmJmN2M4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
b3B1cE1lbnVXaW4uY3BwCkBAIC02MzIsMTggKzYzMiwxOCBAQCB2b2lkIFBvcHVwTWVudVdpbjo6
cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIAogICAgICAgICAvLyBE
cmF3IHRoZSBiYWNrZ3JvdW5kIGZvciB0aGlzIG1lbnUgaXRlbQogICAgICAgICBpZiAoaXRlbVN0
eWxlLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChpdGVtUmVjdCwg
b3B0aW9uQmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoaXRlbVJlY3QsIG9wdGlvbkJhY2tncm91bmRDb2xvcik7CiAKICAg
ICAgICAgaWYgKGNsaWVudCgpLT5pdGVtSXNTZXBhcmF0b3IoaW5kZXgpKSB7CiAgICAgICAgICAg
ICBJbnRSZWN0IHNlcGFyYXRvclJlY3QoaXRlbVJlY3QueCgpICsgc2VwYXJhdG9yUGFkZGluZywg
aXRlbVJlY3QueSgpICsgKGl0ZW1SZWN0LmhlaWdodCgpIC0gc2VwYXJhdG9ySGVpZ2h0KSAvIDIs
IGl0ZW1SZWN0LndpZHRoKCkgLSAyICogc2VwYXJhdG9yUGFkZGluZywgc2VwYXJhdG9ySGVpZ2h0
KTsKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2VwYXJhdG9yUmVjdCwgb3B0aW9uVGV4
dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3Qoc2VwYXJhdG9yUmVjdCwgb3B0aW9uVGV4dENvbG9yKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nIGl0ZW1UZXh0ID0gY2xpZW50KCktPml0ZW1U
ZXh0KGluZGV4KTsKIAogICAgICAgICBUZXh0UnVuIHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFs
bG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHls
ZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKG9wdGlvblRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKG9wdGlvblRleHRDb2xvcik7CiAgICAgICAgIAogICAgICAgICBGb250
Q2FzY2FkZSBpdGVtRm9udCA9IGNsaWVudCgpLT5tZW51U3R5bGUoKS5mb250KCk7CiAgICAgICAg
IGlmIChjbGllbnQoKS0+aXRlbUlzTGFiZWwoaW5kZXgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKaW5kZXggZGY1N2U1YTNl
NmQ5MjcyYTBhOWMyZWY5ODcxMjk5M2VlOGFmMzlmMi4uZjFjZWYwOWY1Yzc4MTg4MTY4NmU5NDNm
NTY3YTUxZjBhNTk0YzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBk
b0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29ucwogewogICAgIFRleHRSdW4gcnVuKHRleHQpOwogCi0gICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGNvbG9yKTsKICAgICBpZiAoaXNPbmVMZWZ0VG9SaWdodFJ1bihydW4pKQogICAgICAg
ICBmb250LmRyYXdUZXh0KGNvbnRleHQsIHJ1biwgcG9pbnQpOwogICAgIGVsc2UKQEAgLTcxLDcg
KzcxLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKICAgICAgICAgSW50UG9pbnQgdW5kZXJs
aW5lUG9pbnQocG9pbnQpOwogICAgICAgICB1bmRlcmxpbmVQb2ludC5tb3ZlKGJlZm9yZVdpZHRo
LCAxKTsKIAotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAg
ICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHVuZGVybGluZVBvaW50LCB1bmRlcmxpbmVkV2lk
dGgsIGZhbHNlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcAppbmRleCAyZThmZDBiYjBhMmUwYmE0M2I2ZWM1NTYwYTQzNGQ2YmZmZmRiNWJmLi4zNjg1
Y2JlMTJiYmYxMjllNTAyNzNmZWI1ZjFiMTkwMzkxMDM1NWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTQ2LDExICs0NiwxMSBAQCB2b2lkIEVsbGlwc2lz
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBMYQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5l
U3R5bGUoKTsKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CiAgICAgaWYgKHRleHRDb2xv
ciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0
ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcih0ZXh0Q29sb3IpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYg
KGxpbmVTdHlsZS50ZXh0U2hhZG93KCkpIHsKICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coTGF5
b3V0U2l6ZShsaW5lU3R5bGUudGV4dFNoYWRvdygpLT54KCksIGxpbmVTdHlsZS50ZXh0U2hhZG93
KCktPnkoKSksCi0gICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5yYWRpdXMoKSwg
bGluZVN0eWxlLnRleHRTaGFkb3coKS0+Y29sb3IoKSwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5yYWRpdXMoKSwgbGluZVN0eWxl
LnRleHRTaGFkb3coKS0+Y29sb3IoKSk7CiAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7CiAgICAg
fQogCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgICAgIC8v
IFNlbGVjdCB0aGUgY29ycmVjdCBjb2xvciBmb3IgcGFpbnRpbmcgdGhlIHRleHQuCiAgICAgICAg
IENvbG9yIGZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSA/IHBhaW50SW5m
by5mb3JjZWRUZXh0Q29sb3IoKSA6IGJsb2NrRmxvdygpLnNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpOwogICAgICAgICBpZiAoZm9yZWdyb3VuZC5pc1ZhbGlkKCkgJiYgZm9yZWdyb3VuZCAhPSB0
ZXh0Q29sb3IpCi0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmb3JlZ3JvdW5kLCBs
aW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KGZvcmVncm91bmQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMg
TFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgpAQCAtNjks
NyArNjksNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYQogCiAgICAgLy8gUmVzdG9yZSB0aGUg
cmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC5maWxsQ29s
b3IoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUu
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yKTsK
IAogICAgIGlmIChzZXRTaGFkb3cpCiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgIExheW91dFJlY3Qg
c2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBw
YWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgpLCAwLCByb290Qm94LnNlbGVj
dGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxlLCBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0
aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBp
eGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0
aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBmZDUw
OWU4ZWFkNTk2OTdkNDYwZDM4ZDMxM2UzZTA0MTZmYTY1ODc3Li42NTAyOTljNDgwZmZlNTRhZDgz
MmU4MTU5M2IxZTkwYTJkNzEwNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTQyOSwxMCArNDI5LDggQEAgdm9pZCBGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkMKICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLT5vdXRwdXRS
ZWN0KCk7CiAgICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWludE9mZnNl
dC55KCkpOwogCi0gICAgaWYgKEltYWdlQnVmZmVyKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXItPm91
dHB1dCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm91
dHB1dEJ1ZmZlciwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwKLSAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3QsIG1fcmVuZGVy
TGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7Ci0gICAg
fQorICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0cHV0QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkK
KyAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0QnVmZmVy
LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJl
cigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgZmlsdGVyLT5jbGVh
ckludGVybWVkaWF0ZVJlc3VsdHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcAppbmRleCAwMjFhMWFiNjY5MWRiYjExN2FlMjAzZTM2MjEyNDgzOGZlN2Uz
OWJiLi5jNzhiMmNhZTYwMzgxODQ2ZWU2OTAwM2NlMjMwZWUyMDIxODc5ODViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC02OTcsNyArNjk3LDcgQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICAgICAgYyA9IENvbG9yKDB4ZmYgLSBjLnJlZCgp
LCAweGZmIC0gYy5ncmVlbigpLCAweGZmIC0gYy5ibHVlKCkpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjLCBzdHlsZS5jb2xvclNwYWNlKCkpKTsgLy8g
RG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4
dCwgVGV4dFBhaW50U3R5bGUoYykpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgIAog
ICAgIC8vIElmIHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgbGV0IHRoZSB0aGluZyBiZWluZyBwYWlu
dGVkIGluIHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMgb3duIGhpZ2hsaWdodC4KQEAg
LTcyNCw3ICs3MjQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYgogCiAgICAgTGF5b3V0UmVj
dCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgp
IC0gZGVsdGFZLCBtX2xvZ2ljYWxXaWR0aCwgc2VsZWN0aW9uSGVpZ2h0KTsKICAgICBmb250LmFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQ
b3MpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0
aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVj
dGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CiAgICAgVU5VU0VEX1BBUkFNKGJveE9yaWdpbik7CkBAIC03NDUsMTMgKzc0NSwxMyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIENvbG9yIGNvbXBvc2l0aW9uQ29sb3IgPSBDb2xvcjo6
Y29tcG9zaXRpb25GaWxsOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0
UGFpbnRTdHlsZShjb21wb3NpdGlvbkNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpKTsgLy8gRG9u
J3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwg
VGV4dFBhaW50U3R5bGUoY29tcG9zaXRpb25Db2xvcikpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQg
YWxsIQogCiAgICAgTGF5b3V0VW5pdCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlw
cGVkTGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9t
KCkgOiBsb2dpY2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0
YVksIDAsIHNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1
Y3RUZXh0UnVuKHN0eWxlLCBmb250KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JU
ZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgIGNvbnRleHQuZmls
bFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlv
blJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVu
Lmx0cigpKSwgY29tcG9zaXRpb25Db2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250
ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihz
ZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwg
dGV4dFJ1bi5sdHIoKSksIGNvbXBvc2l0aW9uQ29sb3IpOwogfQogCiBzdGF0aWMgU3Ryb2tlU3R5
bGUgdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSBk
ZWNvcmF0aW9uU3R5bGUpCkBAIC05NDksNyArOTQ5LDYgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50
JgogICAgICAgICBzZXRDbGlwID0gdHJ1ZTsKICAgICB9CiAKLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpOwogICAgIGJvb2wgc2V0U2hh
ZG93ID0gZmFsc2U7CiAKICAgICBkbyB7CkBAIC05NjEsNyArOTYwLDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW50IHNoYWRvd1ggPSBpc0hv
cml6b250YWwoKSA/IHNoYWRvdy0+eCgpIDogc2hhZG93LT55KCk7CiAgICAgICAgICAgICBpbnQg
c2hhZG93WSA9IGlzSG9yaXpvbnRhbCgpID8gc2hhZG93LT55KCkgOiAtc2hhZG93LT54KCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93WCwgc2hhZG93WSAt
IGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBjb2xvclNw
YWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dYLCBz
aGFkb3dZIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCkp
OwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRvdyA9IHNo
YWRvdy0+bmV4dCgpOwogICAgICAgICB9CkBAIC05NzAsNyArOTY5LDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JgogCiAgICAgICAgIC8vIFRoZXNlIGRlY29yYXRpb25zIHNob3VsZCBtYXRjaCB0
aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRp
b25zKCkKICAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkg
ewotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmVDb2xvciwgY29s
b3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZUNv
bG9yKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25T
dHlsZVRvU3Ryb2tlU3R5bGUodW5kZXJsaW5lU3R5bGUpKTsKICAgICAgICAgICAgIGNvbnN0IGlu
dCB1bmRlcmxpbmVPZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHlsZS50ZXh0
VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIHRoaXMsIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKTsKIApAQCAtOTk0LDcgKzk5Myw3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3Iob3ZlcmxpbmVDb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lQ29sb3IpOwogICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShvdmVybGluZVN0eWxl
KSk7CiAgICAgICAgICAgICBzd2l0Y2ggKG92ZXJsaW5lU3R5bGUpIHsKICAgICAgICAgICAgIGNh
c2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKQEAgLTEwMTUsNyArMTAxNCw3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAo
ZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpIHsKLSAgICAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2hDb2xvciwgY29sb3JTcGFjZSk7CisgICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoQ29sb3IpOwogICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VT
dHlsZShsaW5ldGhyb3VnaFN0eWxlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGxpbmV0aHJvdWdo
U3R5bGUpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKQEAg
LTExMjcsNyArMTEyNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAKICAgICBDb2xvciBj
b2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIoKS50aGVtZSgpLnBsYXRmb3Jt
QWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRoZW1lKCkucGxh
dGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICB1cGRhdGVHcmFwaGljc0Nv
bnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSkp
OyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQorICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChj
b250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb2xvcikpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxs
IQogCiAgICAgLy8gVXNlIHNhbWUgeSBwb3NpdGlvbmluZyBhbmQgaGVpZ2h0IGFzIGZvciBzZWxl
Y3Rpb24sIHNvIHRoYXQgd2hlbiB0aGUgc2VsZWN0aW9uIGFuZCB0aGlzIGhpZ2hsaWdodCBhcmUg
b24KICAgICAvLyB0aGUgc2FtZSB3b3JkIHRoZXJlIGFyZSBubyBwaWVjZXMgc3RpY2tpbmcgb3V0
LgpAQCAtMTE0Miw3ICsxMTQxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRj
aE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG8KICAgICBpZiAo
c2VsZWN0aW9uUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRleHQu
ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVj
dGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4u
bHRyKCkpLCBjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwg
Y29sb3IpOwogfQogICAgIAogdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2Vy
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBi
YWNrZ3JvdW5kKQpAQCAtMTI2MSw3ICsxMjYwLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmwK
ICAgICBzdGFydCArPSAxOwogICAgIHdpZHRoIC09IDI7CiAKLSAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKHVuZGVybGluZS5jb2xvciwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUuY29sb3IpOwogICAgIGNvbnRl
eHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwogICAgIGNvbnRleHQuZHJhd0xp
bmVGb3JUZXh0KEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgp
ICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRoLCByZW5kZXJlcigpLmRv
Y3VtZW50KCkucHJpbnRpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCA3MzFhMGExNTY3NjVlMGE2NjNkODgxOTY2ZDdhOWMxYWU4NmIxN2FhLi45
M2M3MDZjMDcwNDViYjZiYjllNTRjODk1YzY1ZDAzNjk2MWY1ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE5NzMsNyArMTk3Myw3IEBAIExheW91dFJl
Y3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ss
IGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9n
aWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRS
ZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQp
KTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxs
UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0x
OTkwLDcgKzE5OTAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVj
dGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVj
dCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJs
b2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAg
ICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICByZXR1cm4g
Z2FwUmVjdDsKIH0KIApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9j
azo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0
IEwKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5
c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qocm9vdEJsb2Nr
TG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCwg
bG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggMmUwYzc2MjY0NDJjMjBiZTQ3ZGI3OGJjN2VmMWIxMDc5ZmRiMzU2
ZS4uMzU3M2MxM2M4YTMxZDFkNDhhNjQ3Yzk5NjVmYjczMzlmN2NjNWVlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludENsaXBwaW5nTWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRS
ZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIENvbG9yOjpibGFjaywg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNrKTsKIH0KIAogdm9pZCBSZW5k
ZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UmVjdCYgcGFpbnRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZDY5YzI3YjQyNDcyYzg0OWQxOGI1ZmJmNDA5
YjkyNzVmMWRiNmZmMC4uODM4ZGE4NTQ3ODdmYmEyNjIwNzdiMzU0NzU2MmNlNjUxN2ZiMDI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCkBAIC01ODksOSArNTg5LDkgQEAgc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHMKIAogICAgIEZs
b2F0U2l6ZSBzaGFkb3dPZmZzZXQoYm94U2hhZG93LT54KCksIGJveFNoYWRvdy0+eSgpKTsKICAg
ICBpZiAoIWJveFNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgY29udGV4dC5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNv
bG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSk7CiAg
ICAgZWxzZQotICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJv
eFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hh
ZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFn
ZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5
b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCkBAIC02ODAsMTUgKzY4MCwxNSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBw
ZWRCb3JkZXIgPSBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsCiAgICAgICAgICAg
ICAgICAgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKS5waXhlbFNuYXBwZWRSb3Vu
ZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChw
aXhlbFNuYXBwZWRCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4
ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2F2ZSgpOwogICAgICAgICAgICAgICAgIGNsaXBSb3VuZGVkSW5uZXJS
ZWN0KGNvbnRleHQsIHBpeGVsU25hcHBlZFJlY3QsIHBpeGVsU25hcHBlZEJvcmRlcik7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5m
aWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IsIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxT
bmFwcGVkUmVjdCwgYmdDb2xvcik7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgxNywx
MCArODE3LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAgaWYg
KCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQogICAgICAgICAgICAgICAgICAg
ICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7CiAKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmFzZUNvbG9yLCBDb21w
b3NpdGVDb3B5KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBi
Z0NvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJh
Y2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBv
cGVyYXRpb24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJl
Y3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAgICB9CkBAIC04MzUsMTIgKzgz
NSwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+
Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1h
c2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVtaW5hbmNlKTsKICAgICAgICAg
ICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShj
b250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAg
ICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBn
ZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2Uo
KSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobWFza0ltYWdl
ICYmIGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewotICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqbWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwg
Q29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptYXNrSW1hZ2UsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKICAgICAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KQEAgLTE2OTEsNyArMTY5
MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJl
Y3QocGl4ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2Vd
LmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCkpOwogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9IApAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1
bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNp
YmxlRWRnZV0uY29sb3IoKSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgo
cGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE3NTIsNyArMTc1Miw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERP
VFRFRDoKICAgICBjYXNlIERBU0hFRDogewotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAKICAgICAgICAgLy8gVGhlIHN0cm9rZSBpcyBk
b3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBpcyB0aGUgCiAgICAgICAgIC8v
IG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhlIHN0cm9rZSBpcyBjbGlwcGVk
IG9mZi4gCkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpk
cmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LAogICAg
IH0KIAogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICBncmFwaGljc0Nv
bnRleHQuZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIApAQCAtMjI2NSw5ICsyMjY1LDkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGZpbGxSZWN0Lm1vdmUoZXh0cmFPZmZz
ZXQpOwogCiAgICAgICAgICAgICBpZiAoc2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpKQotICAg
ICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hh
ZG93Q29sb3IpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogCiAgICAgICAgICAgICBGbG9hdFJvdW5k
ZWRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQ
YWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0
IHBpeGVsU25hcHBlZEZpbGxSZWN0ID0gZmlsbFJlY3QucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0yMjg1LDEyICsyMjg1LDEyIEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgaW5mbHVlbmNlUmVjdC5leHBh
bmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJlYWQpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGluZmx1ZW5jZVJlY3QsIGluZm8u
cmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVk
RmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVj
dCgpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJs
ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0
UmFkaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4
ZWxTbmFwcGVkRmlsbFJlY3QsIENvbG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmls
bFJlY3QsIENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5u
ZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKQEAg
LTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hh
ZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ss
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChw
aXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzE3
LDkgKzIzMTcsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAo
cGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhh
c0JvcmRlclJhZGl1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJl
Y3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdCwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25h
cHBlZEJvcmRlclJlY3QsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5y
ZWN0KCksIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpLCBzaGFk
b3dDb2xvcik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAg
LTIzNTYsMTEgKzIzNTYsMTEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hT
aGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAg
IHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+
aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsK
IAotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShwaXhlbFNuYXBw
ZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KHBpeGVsU25hcHBlZE91dGVyUmVjdCwgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xv
cik7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggYjUzZjJhZjRmZWU1ZGJmMWYzOTA4ZDg0MjNi
NDNlYTk1NDE1MjQ4MS4uNWM2NmI3NzZjNjliOWQzMzY2Mzg2YWE1Yjc1NTg2OTI2MTcxYTk2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xv
cihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGJveE9yaWdpbi5tb3ZlKGJvcmRlckxlZnQoKSAr
IHBhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxQYXRoKGdldFBhdGgoYm94T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZTcwMDM4ZTkyZjZjN2I0NjFmYzA0
OWFkM2EzM2FhZGYxYzdlMTFlYS4uOGMyZWEwOGY3MWRlNjlmMmQ0OGU1MWFmY2MzNGZjYzQ0MDI5
ZTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAt
MTgyMCw3ICsxODIwLDYgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICBpZiAoYm9yZGVy
U3R5bGUgPT0gRE9VQkxFICYmICh0aGlja25lc3MgKiBkZXZpY2VTY2FsZUZhY3RvcikgPCAzKQog
ICAgICAgICBib3JkZXJTdHlsZSA9IFNPTElEOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlID0gdGhpcy0+c3R5bGUoKTsKICAgICBzd2l0Y2ggKGJvcmRlclN0eWxlKSB7CiAgICAgY2Fz
ZSBCTk9ORToKICAgICBjYXNlIEJISURERU46CkBAIC0xODMwLDcgKzE4MjksNyBAQCB2b2lkIFJl
bmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRgogICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3ND
b250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICBTdHJva2VTdHlsZSBvbGRTdHJva2VT
dHlsZSA9IGdyYXBoaWNzQ29udGV4dC5zdHJva2VTdHlsZSgpOwogICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7Ci0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpOwogICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tl
IDogRG90dGVkU3Ryb2tlKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKHJvdW5k
UG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh4MSwgeTEpLCBkZXZpY2VTY2FsZUZhY3Rv
ciksIHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh4MiwgeTIpLCBkZXZpY2VT
Y2FsZUZhY3RvcikpOwpAQCAtMTg0NSw3ICsxODQ0LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpk
cmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEYKICAgICAgICAgaWYgKCFhZGphY2VudFdpZHRoMSAmJiAhYWRqYWNlbnRXaWR0aDIpIHsKICAg
ICAgICAgICAgIFN0cm9rZVN0eWxlIG9sZFN0cm9rZVN0eWxlID0gZ3JhcGhpY3NDb250ZXh0LnN0
cm9rZVN0eWxlKCk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoY29sb3IpOwogCiAgICAgICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3Jh
cGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhhbnRpYWxpYXMpOwpAQCAtMTk5Niw3ICsxOTk1LDcgQEAg
dm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgICAgIC8vIFR1cm4gb2ZmIGFudGlhbGlh
c2luZyB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgZHJhd0NvbnZleFBvbHlnb24oKTsKICAgICAg
ICAgICAgIC8vIHRoaXMgbWF0dGVycyBmb3IgcmVjdHMgaW4gdHJhbnNmb3JtZWQgY29udGV4dHMu
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwot
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IpOwogICAgICAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5z
aG91bGRBbnRpYWxpYXMoKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRB
bnRpYWxpYXMoYW50aWFsaWFzKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3UmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKQEAgLTIwNDAsNyArMjAzOSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGCiAgICAgICAgIH0KIAogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KGNvbG9yKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdDb252ZXhQb2x5Z29uKDQsIHF1
YWQsIGFudGlhbGlhcyk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShv
bGRTdHJva2VTdHlsZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwOCw3ICsyMTA3LDcgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFJlY3QmIHBhaW50UmUKICAgICAgICAgICAgIHBhdGguYWRkUmVjdChvdXRlcik7CiAg
ICAgICAgICAgICBwYXRoLmFkZFJlY3QoaW5uZXIpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKG91dGxpbmVDb2xvciwgc3R5bGVUb1VzZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihvdXRsaW5lQ29sb3IpOwog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBhM2Y4ODkxZmQ5OTdlOGMyY2E4NmY1MGNiNWZmZjZj
MWIwMDU3ZWQ5Li4xMzZlMTBiNGEyOWIxZGVlN2RlYTMyNzM1NjYyNDk1M2MxMGEwZDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
QEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBz
aG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAg
ICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dR
dWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVh
bGl0eVNjYWxpbmcpKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250
ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgY29udGV4dC5j
bGlwKGNvbnRlbnRSZWN0KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxl
UGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVz
c2VkQ29sb3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRD
b2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpKTsKICAgICBjb250ZXh0
LmZpbGxQYXRoKGJhY2tncm91bmQpOwogCiAgICAgUGF0aCBzdHJva2VQYXRoOwpAQCAtMzIwLDIx
ICszMjAsMjEgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICBzdHJva2VSZWN0LmluZmxh
dGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChzdHJva2VSZWN0LCBGbG9hdFNp
emUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAxLCByZXBsYWNlbWVudFRleHRS
b3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5h
dmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcih1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCkpOwog
ICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgIGNvbnRleHQuc3Ryb2tlUGF0
aChzdHJva2VQYXRoKTsKIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZv
bnQuZm9udE1ldHJpY3MoKTsKICAgICBmbG9hdCBsYWJlbFggPSByb3VuZGYocmVwbGFjZW1lbnRU
ZXh0UmVjdC5sb2NhdGlvbigpLngoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0TGVmdFRl
eHRNYXJnaW4pOwogICAgIGZsb2F0IGxhYmVsWSA9IHJvdW5kZihyZXBsYWNlbWVudFRleHRSZWN0
LmxvY2F0aW9uKCkueSgpICsgKHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpLmhlaWdodCgpIC0g
Zm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMiArIGZvbnRNZXRyaWNzLmFzY2VudCgpICsgcmVwbGFj
ZW1lbnRUZXh0Um91bmRlZFJlY3RUb3BUZXh0TWFyZ2luKTsKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSk7CiAgICAgY29udGV4
dC5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxhYmVsWCwgbGFiZWxZKSk7CiAK
ICAgICBpZiAoc2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24oZG9jdW1lbnQo
KSwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikpIHsKICAgICAgICAgYXJyb3dSZWN0Lmlu
ZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nKTsKIAogICAgICAgICBjb250ZXh0
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpKTsKICAgICAgICAg
Y29udGV4dC5maWxsRWxsaXBzZShhcnJvd1JlY3QpOwogCiAgICAgICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IDY0ZWNhY2IwNmVj
ZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEuLmZkMTEzYzRmOGUyMjA5M2ExMGNhNjVhZmQy
NGI4ZTI3YTdmMzhhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2luCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRZID0gYmFzZWxpbmVQ
b3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIERyYXcgdGhlIGZpbGVuYW1lCiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJvdW5kVG9J
bnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMmY4MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4
ZDIyZmE4MGE2YS4uNjNjYTZkYWRmNzhmMTgxYWZjNDY2OTk4MjRiYTcwMmUzMGM3MzU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05MSwxNCAr
OTEsMTMgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QKICAgICAKICAgICAvLyBGaWxsIGZpcnN0
LgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xvclNwYWNlKCk7Ci0gICAgY29u
dGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xv
cigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmls
bFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6
IGJvcmRlckZpbGxDb2xvcigpKTsKICAgICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBi
dXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBh
IGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAg
ICAgaWYgKGJvcmRlclJlY3Qud2lkdGgoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwg
Ym9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lm1heFgoKSAtIDEsIGJvcmRlclJlY3Qu
eSgpKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0
aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lm1heFgo
KSAtIDEsIGJvcmRlclJlY3QueSgpKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJFbmRF
ZGdlQ29sb3IoKSk7CiAgICAgfQogfQogCkBAIC0xMTEsMTQgKzExMCwxMyBAQCB2b2lkIFJlbmRl
ckZyYW1lU2V0OjpwYWludFJvd0JvcmRlcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgYgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRl
clJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxs
Q29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBm
cmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCkp
OwogCiAgICAgLy8gTm93IHN0cm9rZSB0aGUgZWRnZXMgYnV0IG9ubHkgaWYgd2UgaGF2ZSBlbm91
Z2ggcm9vbSB0byBwYWludCBib3RoIGVkZ2VzIHdpdGggYSBsaXR0bGUKICAgICAvLyBiaXQgb2Yg
dGhlIGZpbGwgY29sb3Igc2hvd2luZyB0aHJvdWdoLgogICAgIGlmIChib3JkZXJSZWN0LmhlaWdo
dCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3Qu
bG9jYXRpb24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCks
IGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQo
Ym9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChJ
bnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJ
bnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMWQ0NzhiZjZmZmM4
N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNy4uMTRjN2EwMjMwMmMxMzZiZjYwNzc1ZDU5NTVl
ZmFmNTczODU1MWExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC0zOTIsOCArMzkyLDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgICAgICAg
ICAgLy8gRHJhdyBhbiBvdXRsaW5lIHJlY3Qgd2hlcmUgdGhlIGltYWdlIHNob3VsZCBiZS4KICAg
ICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6bGlnaHRHcmF5LCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnQsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJv
cmRlciArIGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dp
ZHRoLCBjSGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CiAKICAgICAg
ICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKQEAgLTQyNCwxMyArNDI0LDEz
IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRB
VElPTikKICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3Jp
ZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zm
c2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRp
b24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RU
b0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdl
U2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAg
ICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBT
dHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyht
X2FsdFRleHQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgICAgICAgICAgICAgIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3Mo
KTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2Vu
dCgpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3Qo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNl
dEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRp
ZgotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0
LAorICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHJlY3QsCiAgICAgICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRmZTE2YjcyNzZhNWJjNzQwOWMwMjkxYTk2
YWJjMDY5YzhmN2E0ZWEuLjZlMjE3YTcxYmZmNDkzZjg3YzM5MzMzNDk2MDAwYWQwZWM1NGEyMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTgyMSw3ICsx
ODIxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclAKICNlbmRpZgogCiAjaWZkZWYgUkVWRUFM
X1RSQU5TUEFSRU5DWV9MQVlFUlMKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
KDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpKTsKICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQ2xpcFJlY3QpOwogI2VuZGlmCiAg
ICAgfQpAQCAtMzYwOCw5ICszNjA4LDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxv
d0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQKIAogdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
CiB7Ci0gICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKLSAgICBBU1NFUlQoYm94KTsK
LQogICAgIEludFJlY3QgYWJzUmVjdCA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBhYnNSZWN0
Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdl
UmVjdCkpCkBAIC0zNjI5LDcgKzM2MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9s
bENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQgd2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9s
bGJhcnMsIHNpbmNlIHdlIG5lZWQKICAgICAvLyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAg
ICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xsYmFycygpKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KGFic1JlY3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoYWJzUmVjdCwgQ29sb3I6OndoaXRlKTsKIH0KIAogdm9pZCBS
ZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCkBAIC0zNjUyLDcgKzM2
NDksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShyZXNpemVyQ29ybmVyUmVjdC54KCkgKyBjb3JuZXJSZXNpemVyU2l6ZS53aWR0aCgpLCByZXNp
emVyQ29ybmVyUmVjdC55KCkgKyByZXNpemVyQ29ybmVyUmVjdC5oZWlnaHQoKSAtIGNvcm5lclJl
c2l6ZXJTaXplLmhlaWdodCgpKTsKICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoLTEu
MCwgMS4wKSk7CiAgICAgICAgIGlmIChyZXNpemVDb3JuZXJJbWFnZSkKLSAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsK
KyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKICAgICAgICAgY29udGV4dC5y
ZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjYwLDcgKzM2NTcsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgIGlmICghcmVzaXplQ29ybmVySW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gc25hcFJlY3RUb0RldmljZVBp
eGVscyhMYXlvdXRSZWN0KHJlc2l6ZXJDb3JuZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkgLSBjb3Ju
ZXJSZXNpemVyU2l6ZSwgY29ybmVyUmVzaXplclNpemUpLCByZW5kZXJlcigpLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnJlc2l6ZUNvcm5l
ckltYWdlLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgaW1hZ2VSZWN0KTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0KQpAQCAtMzY5NSw5ICszNjkyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAg
ICAgY29udGV4dC5jbGlwKGFic1JlY3QpOwogICAgICAgICBMYXlvdXRSZWN0IGxhcmdlckNvcm5l
ciA9IGFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKExheW91dFNpemUobGFy
Z2VyQ29ybmVyLndpZHRoKCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSksIGxhcmdlckNvcm5l
ci5oZWlnaHQoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgxKSkpOwotICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdC
KDIxNywgMjE3LCAyMTcpKSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEu
MGYpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOwogICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxh
cmdlckNvcm5lcikpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAppbmRleCBlNTczZDUwMDRmYjViNTkxMDkyMDMxNjkwNDI3NDAwMDBiNjEzZGE1
Li41NTMxNzBhZGM0NDFmZDk5NTNiODg5NGFhNGNmM2Y4N2JiMjc4MjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zOTYsOCArMzk2LDcgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgQ29s
b3JTcGFjZSBjb2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGNvbG9yU3BhY2UpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7CiAKICAgICBUZXh0UnVu
IHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHls
ZS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShpdGVtU3R5bGUudW5pY29kZUJpZGkoKSksIHRydWUs
IFRleHRSdW46Ok5vUm91bmRpbmcpOwogICAgIEZvbnRDYXNjYWRlIGl0ZW1Gb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwpAQCAtNDMyLDEwICs0MzEsOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JgogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBsaXN0IGJveCBpdGVt
CiAgICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgIT0gSElEREVOKSB7Ci0gICAgICAgIENv
bG9yU3BhY2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS5jb2xvclNwYWNlKCk7CiAgICAgICAgIExh
eW91dFJlY3QgaXRlbVJlY3QgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHBhaW50T2Zmc2V0LCBsaXN0
SW5kZXgpOwogICAgICAgICBpdGVtUmVjdC5pbnRlcnNlY3QoY29udHJvbENsaXBSZWN0KHBhaW50
T2Zmc2V0KSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZElu
dFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9y
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAppbmRleCBmNmUzNDZkMzdiMDViYTQ2YTlmNjYwODA2MjA1YjQyNTFjN2IzNTE5Li40
NzZlOWM0NzJiMTE0OTBmZDYyNmRkY2M5ODc5Mjc5ZjgxZTMwM2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk4LDExICsxMTk4LDEx
IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBpZiAoaXNJbWFnZSgpKSB7CiAgICAg
ICAgIGlmIChSZWZQdHI8SW1hZ2U+IG1hcmtlckltYWdlID0gbV9pbWFnZS0+aW1hZ2UodGhpcywg
bWFya2VyLnNpemUoKSkpCi0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbWFya2VySW1h
Z2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOworICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoKm1hcmtlckltYWdlLCBtYXJrZXIpOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3Rh
dGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3Qg
PSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9y
aWdpbik7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJl
Y3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNl
bFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIxMCwxNCArMTIxMCwxNCBAQCB2b2lkIFJl
bmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5v
bmUpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7
CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5maWxs
UmVjdChzbmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKGNvbG9yKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxp
c3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEyMjUsNyArMTIyNSw3IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNl
KG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ2lyY2xlOgotICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlcik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgU3F1YXJlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggMzRiNTVmMjkyM2Q5MWFjY2RiNDEy
MmUxNTBkZmRhZTJkMDdkYWYxMi4uODRkNDRiMTI1MjRkNDQyZWIwNTA3ZDY4MTNjY2ZmODI5NDky
NzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoZHJhd1Nl
bGVjdGlvblRpbnQpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25QYWludGluZ1JlY3Qg
PSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsZWN0aW9uUGFpbnRpbmdSZWN0Lm1v
dmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5m
aWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVj
dCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IGFmOTYx
MTgwYWRlZTE1ZWRhZDJiYTdiNmY5ZmYyZGMzOGE4YzY4ODYuLjU0ZmVhMGMxNmVlOGMyOTUwOTM1
NjQ0NjZiOTA2YmI3ZjQwMDFkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmRpZFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgU2Nyb2xsYmFyCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBj
b3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgY29udGV4dC5maWxs
UmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlKTsKIH0KIAogdm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCBlYzQyYzYy
YzgxMjdjZWQzOGU1NjE2ODRkODdlOGI1MDlmMTliM2M1Li5lOGI4ZjBmYjRiZjM1Zjc4MDZhNTU1
NTlmZjFmNWJmMWNiN2M0N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAg
b3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmlt
YWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2Us
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
b3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhv
cmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCiBDdXJz
b3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAxYWFmMzY5MGVlOWI3ZGYxNzdjMTA3
MTdiZjkxOGZlMjMxNTk4MDlhLi5lNWE4NWNmMTRhYzJjZjBmNmQxOTExNjNjMTRiNDZkYmYwYzcw
YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEwMzYs
NyArMTAzNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgfQogICAgIFJlZjxIVE1M
Q29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwotICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5v
ZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRp
b25FbGVtZW50Pigqbm9kZSkpOwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxl
bWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBhNGQ4ZjhmZDBlMDQzNjllMDdh
ZDhlOWU2NWQzNzVhMjBmMmQ4NmFhLi44MDZhZmY5ZWJjYTk4Mzc3M2QxYzA2OWMwNTYzYmU3OTcw
YTIxNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAK
QEAgLTE1MzMsNyArMTUzMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlk
ZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mCiAgICAgICAgIHJh
bmdlUmVjdC5zZXRXaWR0aChsZW5ndGhSYXRpbyAqIHRvdGFsVHJhY2tXaWR0aCk7CiAgICAgICAg
IGlmIChpbmRleCkKICAgICAgICAgICAgIHJhbmdlUmVjdC5tb3ZlKHN0YXJ0UmF0aW8gKiB0b3Rh
bFRyYWNrV2lkdGgsIDApOwotICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJh
bmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICB9CiAKICAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKQEAgLTE1NDMsNyArMTU0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVk
aWFTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mCiBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAg
ICBSZW5kZXJTdHlsZSYgc3R5bGUgPSBvLnN0eWxlKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRpaUZyb21TdHls
ZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciks
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBz
dHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMTU3Myw4ICsxNTczLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6
cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWMKICAgICB2b2x1bWVSZWN0Lm1vdmUoMCwgcmVjdEhlaWdodCAtIHRyYWNrSGVpZ2h0KTsKICAg
ICB2b2x1bWVSZWN0LnNldEhlaWdodChjZWlsKHRyYWNrSGVpZ2h0KSk7CiAKLSAgICBjb250ZXh0
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlp
RnJvbVN0eWxlKHN0eWxlKSksCi0gICAgICAgIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0
eWxlKHN0eWxlKSksIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggMWJmMjA1MjVlZTBjYzM0
MDM5ODM4MjUwN2U4OTM2YWQ1NTQ0MTQ4Yy4uMGQ1YjVlZjY4OGUyNGUzMTNkZTYwOThkYzNhZGI3
NjE5MDBmMTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIENHRnVuY3Rpb25SZWYgZ2V0U2hhcmVkRnVu
Y3Rpb25SZWYoSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIEludGVycG9sYXRpb24KIAogc3RhdGlj
IHZvaWQgZHJhd0F4aWFsR3JhZGllbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElPU0dyYWRpZW50
UmVmIGdyYWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBjb25zdCBGbG9hdFBv
aW50JiBzdG9wUG9pbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlh
bChkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIHN0YXJ0UG9pbnQsIHN0b3BQb2ludCwgZ2V0U2hh
cmVkRnVuY3Rpb25SZWYoZ3JhZGllbnQsIGludGVycG9sYXRpb24pLCBmYWxzZSwgZmFsc2UpKTsK
KyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdD
cmVhdGVBeGlhbChzUkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdG9wUG9pbnQsIGdl
dFNoYXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZhbHNl
KSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZy5nZXQoKSk7CiB9
CiAKIHN0YXRpYyB2b2lkIGRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYgY29udGV4dCwg
SU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIGZs
b2F0IHN0YXJ0UmFkaXVzLCBjb25zdCBGbG9hdFBvaW50JiBzdG9wUG9pbnQsIGZsb2F0IHN0b3BS
YWRpdXMsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBSZXRhaW5QdHI8Q0dT
aGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoZGV2aWNl
UkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdGFydFJhZGl1cywgc3RvcFBvaW50LCBz
dG9wUmFkaXVzLCBnZXRTaGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiks
IGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHNoYWRpbmcgPSBh
ZG9wdENGKENHU2hhZGluZ0NyZWF0ZVJhZGlhbChkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkgLyog
RklYTUUgKi8sIHN0YXJ0UG9pbnQsIHN0YXJ0UmFkaXVzLCBzdG9wUG9pbnQsIHN0b3BSYWRpdXMs
IGdldFNoYXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZh
bHNlKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZy5nZXQoKSk7
CiB9CiAKQEAgLTM5MiwxMiArMzkyLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hl
Y2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpCiAgICAg
ICAgIH07CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
bGluZVdpZHRoKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihD
b2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwg
MC4wZiwgMC43ZikpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0pvaW5lZExp
bmVzKHNoYWRvdywgMywgdHJ1ZSwga0NHTGluZUNhcFNxdWFyZSk7CiAKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBj
bGlwLmhlaWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpKTsKIAogICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsK
ICAgICB9IGVsc2UgewpAQCAtNDU4LDcgKzQ1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50UmFkaW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJ
CiAgICAgICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAqIElubmVySW52ZXJzZVJhdGlv
KTsKICAgICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQoKSAqIElubmVySW52ZXJzZVJh
dGlvKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNlKGNs
aXAsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgc2hhZG93Q29sb3IoKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNl
ZEVsbGlwc2UoY2xpcCwgQ29sb3I6OndoaXRlLCBzaGFkb3dDb2xvcigpKTsKIAogICAgICAgICBG
bG9hdFNpemUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAuaGVpZ2h0KCkgLyAyLjBm
KTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChjbGlwLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKQEAgLTY0OCw3
ICs2NDgsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgICAgICBGbG9hdFNpemUo
MCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1
cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3Qu
aGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksCiAgICAgICAgICAgICBGbG9hdFNp
emUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdo
dFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0
KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSkpKTsKIAotICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KGJ1dHRvbkNsaXAsIHN0eWxlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChidXR0b25DbGlw
LCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikp
OwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFt
ZShpc0ZvY3VzZWQoYm94KSAmJiAhaXNSZWFkT25seUNvbnRyb2woYm94KSA/IENvbmNhdmVHcmFk
aWVudCA6IENvbnZleEdyYWRpZW50KSwgYnV0dG9uQ2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50
KGJ1dHRvbkNsaXAueCgpLCBidXR0b25DbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24p
OwogICAgIH0KQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAg
ICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAueCgpICsgKGJ1dHRvbkNsaXAud2lkdGgo
KSAtIGNvdW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBhZGRpbmcpIC8gMi4wLCBidXR0b25DbGlw
Lm1heFkoKSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFp
c2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29s
b3I6OndoaXRlLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjVmKSk7CiAgICAgICAgICAgICBl
bGxpcHNlLm1vdmUoc2l6ZSArIHBhZGRpbmcsIDApOwogICAgICAgICB9CiAgICAgfSAgZWxzZSB7
CkBAIC02ODIsMTIgKzY4MiwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0
QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIHNo
YWRvd1syXSA9IEZsb2F0UG9pbnQoYXJyb3dbMl0ueCgpLCBhcnJvd1syXS55KCkgKyAxLjBmKTsK
IAogICAgICAgICBmbG9hdCBvcGFjaXR5ID0gaXNSZWFkT25seUNvbnRyb2woYm94KSA/IDAuMiA6
IDAuNTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIG9wYWNpdHkpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Q29udmV4
UG9seWdvbigzLCBzaGFkb3csIHRydWUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xv
cihDb2xvcjo6d2hpdGUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xv
cihDb2xvcjo6d2hpdGUpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQ
b2x5Z29uKDMsIGFycm93LCB0cnVlKTsKICAgICB9CiAKQEAgLTc3Miw5ICs3NzIsOSBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgYm94
LCBjb25zdCBQYWludEluZm8mCiAKICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgIGlmIChyZWFkb25s
eSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MTc4LCAxNzgsIDE3OCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Io
Q29sb3IoNzYsIDc2LCA3NiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcig3NiwgNzYsIDc2KSk7CiAKICAg
ICAgICAgUmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IHJvdW5kZWRSZWN0UGF0aCA9IGFkb3B0
Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICAgICAgQ0dQYXRoQWRkUm91bmRlZFJlY3Qo
cm91bmRlZFJlY3RQYXRoLmdldCgpLCAwLCB0cmFja0NsaXAsIGNvcm5lcldpZHRoLCBjb3JuZXJI
ZWlnaHQpOwpAQCAtODU5LDggKzg1OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJv
Z3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAg
c3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDB4OGQsIDB4OGQsIDB4OGQp
KTsKICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KHN0cm9rZUdyYWRpZW50LnJlbGVhc2VO
b25OdWxsKCkpOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gcmVuZGVyZXIuc3R5bGUo
KS5jb2xvclNwYWNlKCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUs
IDI1NSksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwg
MjU1LCAyNTUpKTsKIAogICAgIFBhdGggdHJhY2tQYXRoOwogICAgIEZsb2F0UmVjdCB0cmFja1Jl
Y3QocmVjdC54KCkgKyAwLjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgcmVj
dC53aWR0aCgpIC0gMC41LCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7CkBAIC0xMDI0LDggKzEw
MjMsOCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUgogCiAgICAgICAgIC8vIEJhY2tncm91bmQg
cGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJhY2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQg
bWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAgICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3Ig
PSBDb2xvcihidXR0b25SZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFt
ZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBw
aWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3QodGh1bWJuYWlsUmVjdCwgYmFja2dyb3VuZEltYWdlQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNv
cm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJh
bWVDb2xvcik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QodGh1bWJuYWls
UmVjdCwgYmFja2dyb3VuZEltYWdlQ29sb3IpOwogICAgICAgICB7CiAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCk7CkBAIC0xMDQ1LDcgKzEwNDQsNyBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUgogICAgIH0KIAogICAgIC8vIEZvcmVncm91bmQgcGljdHVyZSBmcmFtZSBhbmQgaWNv
bi4KLSAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNv
cm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXpl
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IpOwogICAgIGljb24t
PnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHRodW1ibmFpbFJlY3QpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4
IDkyYWYwY2Y1YWM1YTgzZjgwYjc2MTA3ZTQ1ZmVmZjY2ZWRjYWYzYmQuLjdmOGRjMjQyMTkwZjll
MGQwOTYxNTMxM2Y4YjIyNjdjOWJlYWUzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KQEAgLTExNTYsNyArMTE1Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNv
bnN0IFBhCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAx
KSk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBp
bmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMzAx
LDcgKzEzMDEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVj
b3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAKICAgICBGbG9hdFBvaW50
IGFycm93MVszXTsKQEAgLTEzMzAsMTEgKzEzMzAsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIs
IGMKICAgICAvLyBEcmF3IHRoZSBzZXBhcmF0b3IgdG8gdGhlIGxlZnQgb2YgdGhlIGFycm93cwog
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAvLyBEZWxpYmVy
YXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4u
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
Q29sb3IobGVmdFNlcGFyYXRvckNvbG9yKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3Vu
ZHMubWF4WSgpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHJp
Z2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvcik7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2Vw
YXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5t
YXhZKCkpKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAg
fHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxl
KCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29t
cG9zaXRlU291cmNlT3Zlcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMTg0LDcgKzIx
ODQsNyBAQCBzdGF0aWMgTlNDb2xvciAqdGl0bGVUZXh0Q29sb3JGb3JBdHRhY2htZW50KGNvbnN0
IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgaWYgKGF0dGFjaG1lbnQuc2VsZWN0
aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgaWYg
KGF0dGFjaG1lbnQuZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAg
ICAgICAgICAgIHJldHVybiBbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29s
b3JdOyAgICAKLSAgICAgICAgcmV0dXJuIChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2ht
ZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgcmV0dXJuIChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2htZW50VGl0bGVJbmFjdGl2
ZVRleHRDb2xvcigpKTsKICAgICB9CiAKICAgICByZXR1cm4gW05TQ29sb3IgYmxhY2tDb2xvcl07
CkBAIC0yMjk0LDcgKzIyOTQsNyBAQCB2b2lkIEF0dGFjaG1lbnRMYXlvdXQ6OmxheU91dFN1YnRp
dGxlKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgUmV0YWluUHRyPENU
Rm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NU
Rm9udFVJRm9udFN5c3RlbSwgYXR0YWNobWVudFN1YnRpdGxlRm9udFNpemUsIGxhbmd1YWdlKSk7
CiAgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAgICAgIChpZClrQ1RG
b250QXR0cmlidXRlTmFtZTogKGlkKWZvbnQuZ2V0KCksCi0gICAgICAgIChpZClrQ1RGb3JlZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNobWVu
dFN1YnRpdGxlVGV4dENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpCisgICAgICAgIChpZClr
Q1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3Io
YXR0YWNobWVudFN1YnRpdGxlVGV4dENvbG9yKCkpCiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNB
dHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3VidGl0bGVUZXh0ID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VidGl0bGVUZXh0IGF0dHJpYnV0
ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKICAgICBzdWJ0aXRsZUxpbmUgPSBhZG9wdENGKENUTGluZUNy
ZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRl
ZFN1YnRpdGxlVGV4dC5nZXQoKSkpOwpAQCAtMjM1NSw3ICsyMzU1LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYsIEdy
YXBoaWNzQ29udGUKICAgICBpZiAocGFpbnRCb3JkZXIpCiAgICAgICAgIGJhY2tncm91bmRSZWN0
LmluZmxhdGUoLWF0dGFjaG1lbnRJY29uU2VsZWN0aW9uQm9yZGVyVGhpY2tuZXNzKTsKIAotICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYmFja2dyb3VuZFJlY3Qs
IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cykp
LCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJhY2tncm91bmRS
ZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRp
dXMpKSwgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAKICAgICBpZiAocGFpbnRC
b3JkZXIpIHsKICAgICAgICAgRmxvYXRSZWN0IGJvcmRlclJlY3QgPSBsYXlvdXQuaWNvbkJhY2tn
cm91bmRSZWN0OwpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2ht
ZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYsIEdyYXBoaWNzQ29udGUK
ICAgICAgICAgRmxvYXRTaXplIGljb25CYWNrZ3JvdW5kUmFkaXVzU2l6ZShhdHRhY2htZW50SWNv
bkJhY2tncm91bmRSYWRpdXMsIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyk7CiAgICAg
ICAgIFBhdGggYm9yZGVyUGF0aDsKICAgICAgICAgYm9yZGVyUGF0aC5hZGRSb3VuZGVkUmVjdChi
b3JkZXJSZWN0LCBpY29uQmFja2dyb3VuZFJhZGl1c1NpemUpOwotICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYXR0YWNobWVudEljb25Cb3Jk
ZXJDb2xvcigpKTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYXR0YWNobWVu
dEljb25TZWxlY3Rpb25Cb3JkZXJUaGlja25lc3MpOwogICAgICAgICBjb250ZXh0LnN0cm9rZVBh
dGgoYm9yZGVyUGF0aCk7CiAgICAgfQpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIEcKICAgICBlbHNlCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGF0dGFjaG1l
bnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yKCk7CiAKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvcik7CiAKICAgICBQYXRoIGJhY2tncm91bmRQYXRo
ID0gUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHMoYmFja2dyb3VuZFJl
Y3RzLCBhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUmFkaXVzKTsKICAgICBjb250ZXh0LmZpbGxQ
YXRoKGJhY2tncm91bmRQYXRoKTsKQEAgLTI0NDcsNyArMjQ0Nyw3IEBAIHN0YXRpYyB2b2lkIHBh
aW50QXR0YWNobWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQs
IEdyYXBoaWNzCiAgICAgYmFja2dyb3VuZFJlY3QuaW5mbGF0ZSgtYXR0YWNobWVudFByb2dyZXNz
QmFyQm9yZGVyV2lkdGggLyAyKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYmFja2dyb3VuZFJv
dW5kZWRSZWN0KGJhY2tncm91bmRSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShiYWNrZ3Jv
dW5kUmVjdC5oZWlnaHQoKSAvIDIpKTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChiYWNr
Z3JvdW5kUm91bmRlZFJlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcigp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChiYWNr
Z3JvdW5kUm91bmRlZFJlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcigp
KTsKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU2F2ZXIo
Y29udGV4dCk7CkBAIC0yNDU3LDEzICsyNDU3LDEzIEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNo
bWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEdyYXBoaWNz
CiAgICAgICAgIHByb2dyZXNzUmVjdC5zZXRXaWR0aChwcm9ncmVzc1JlY3Qud2lkdGgoKSAqIHBy
b2dyZXNzKTsKICAgICAgICAgcHJvZ3Jlc3NSZWN0ID0gZW5jbG9zZVJlY3RUb0RldmljZVBpeGVs
cyhwcm9ncmVzc1JlY3QsIGF0dGFjaG1lbnQuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKIAotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHByb2dyZXNzUmVjdCwgYXR0YWNobWVudFBy
b2dyZXNzQmFyRmlsbENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KHByb2dyZXNzUmVjdCwgYXR0YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9y
KCkpOwogICAgIH0KIAogICAgIFBhdGggYm9yZGVyUGF0aDsKICAgICBmbG9hdCBib3JkZXJSYWRp
dXMgPSBib3JkZXJSZWN0LmhlaWdodCgpIC8gMjsKICAgICBib3JkZXJQYXRoLmFkZFJvdW5kZWRS
ZWN0KGJvcmRlclJlY3QsIEZsb2F0U2l6ZShib3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1cykpOwot
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29s
b3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihh
dHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJDb2xvcigpKTsKICAgICBjb250ZXh0LnNldFN0cm9r
ZVRoaWNrbmVzcyhhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJXaWR0aCk7CiAgICAgY29udGV4
dC5zdHJva2VQYXRoKGJvcmRlclBhdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCmluZGV4IDkwMjk1Y2IxYWM5NWU0MDljNDQ5ZjkwOTViOTNmZDg2ZTRkNzFkNTcu
LjJkMTU0ZGUyMTQwNzRlODkyMGM5NjYyNWFjN2EyY2FjMWRiYjQ1MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIFJlbmRl
clZpZXc6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAKICAgICAvLyBUaGlzIGF2b2lkcyBwYWludGluZyBnYXJiYWdlIGJldHdlZW4g
Y29sdW1ucyBpZiB0aGVyZSBpcyBhIGNvbHVtbiBnYXAuCiAgICAgaWYgKGZyYW1lVmlldygpLnBh
Z2luYXRpb24oKS5tb2RlICE9IFBhZ2luYXRpb246OlVucGFnaW5hdGVkICYmIHBhaW50SW5mby5z
aG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpKQotICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9y
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCkp
OwogCiAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CkBAIC02MTAs
NyArNjEwLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgIGlmIChiYWNrZ3JvdW5k
Q29sb3IuYWxwaGEoKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNP
cGVyYXRvciA9IHBhaW50SW5mby5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJ
bmZvLnJlY3QsIGJhY2tncm91bmRDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgYmFja2dy
b3VuZENvbG9yKTsKICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuY2xlYXJSZWN0KHBhaW50SW5mby5yZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggNDU0MWU5MGM4ZjA0YzhkZTc3
MzhkZjBlYmUwNWVhYzU3ZmQ1YjcxNi4uY2M5YjhjZTQyYzQ5NzE1MTMxNzRiYjhlOTBiNDU2YmUw
NGNmZWUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAg
LTI5MCw3ICsyOTAsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAvLyBQYWludCBhIHBh
cnRpYWxseSB0cmFuc3BhcmVudCB3YXNoIG92ZXIgc2VsZWN0ZWQgd2lkZ2V0cy4KICAgICBpZiAo
aXNTZWxlY3RlZCgpICYmICFkb2N1bWVudCgpLnByaW50aW5nKCkpIHsKICAgICAgICAgLy8gRklY
TUU6IHNlbGVjdGlvblJlY3QoKSBpcyBpbiBhYnNvbHV0ZSwgbm90IHBhaW50aW5nIGNvb3JkaW5h
dGVzLgotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0
KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBl
ZEludFJlY3Qoc2VsZWN0aW9uUmVjdCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwog
ICAgIH0KIAogICAgIGlmIChoYXNMYXllcigpICYmIGxheWVyKCktPmNhblJlc2l6ZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGNmZGE1Y2ZiZDQ4
NDhjNWQ1NGRmMTk4NzU0NWExYjgzOGVhMWMzNjYuLmM5MThhNmMxODVkZTg1OTgyZGJjYzEyYzJl
OTRlYTJhMWNmNmQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94OjpsaW5lU2Vs
ZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQogICAgICAg
ICAgICAgICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5
c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGxvZ2ljYWxSZWN0KTsKICAgICAg
ICAgICAgICAgICBpZiAoaXNQcmV2aW91c0JveFNlbGVjdGVkICYmIGdhcFJlY3Qud2lkdGgoKSA+
IDAgJiYgZ2FwUmVjdC5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBh
aW50SW5mbyAmJiBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQo
KS5maWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZp
bGxSZWN0KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIG1h
eSBiZSBub24tY29udGlndW91cywgc2VlIGNvbW1lbnQgYWJvdmUuCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC51bml0ZUNlbnRlcihnYXBSZWN0KTsKICAgICAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKaW5kZXggNjU2YzdkNDI5YjE4ODhiMjE2YTgzZWE3ZDU1NTk3ZmM4YjRiN2M3Yy4uMzIy
YzFiMmU5NTJkMjY1OTNhZGVjMmY3ZTczOGZjNWE4ZmVmMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAt
NTcsOCArNTcsOCBAQCBzdGF0aWMgdm9pZCBwYWludERlYnVnQm9yZGVycyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIExheW91dFJlY3QgYm9yZGVyUmVjdCwgYwogICAgIGlmIChzbmFwcGVkUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xv
cigwLCAyNTUsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRl
eHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSk7CisgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBwZWRS
ZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAK
aW5kZXggMjIyNmVjZGY2OWU1M2JiZjZiYzg5ZGU5ZGJlYmM3MzYwMzk1NmEzMS4uZTFkZWJiYjdk
YzQ1ZGQ5Y2EyM2Q2MzZjY2U4NThlM2M0MjRiYjcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCkBAIC0zOSwyNyArMzksMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1UZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSBj
b2xvclNwYWNlKQotICAgIDogY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAgICwgc3Ryb2tlV2lk
dGgoMCkKLSNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgLCB1c2VMZXR0ZXJwcmVzc0VmZmVj
dChmYWxzZSkKLSNlbmRpZgotewotfQotCi1UZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUo
Q29sb3IgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLSAgICA6IGNvbG9yU3BhY2UoY29s
b3JTcGFjZSkKLSAgICAsIGZpbGxDb2xvcihjb2xvcikKK1RleHRQYWludFN0eWxlOjpUZXh0UGFp
bnRTdHlsZShjb25zdCBDb2xvciYgY29sb3IpCisgICAgOiBmaWxsQ29sb3IoY29sb3IpCiAgICAg
LCBzdHJva2VDb2xvcihjb2xvcikKLSAgICAsIHN0cm9rZVdpZHRoKDApCi0jaWYgRU5BQkxFKExF
VFRFUlBSRVNTKQotICAgICwgdXNlTGV0dGVycHJlc3NFZmZlY3QoZmFsc2UpCi0jZW5kaWYKIHsK
IH0KIAotc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dyb3VuZChD
b2xvciB0ZXh0Q29sb3IsIENvbG9yIGJhY2tncm91bmRDb2xvcikKK3N0YXRpYyBDb2xvciBhZGp1
c3RDb2xvckZvclZpc2liaWxpdHlPbkJhY2tncm91bmQoY29uc3QgQ29sb3ImIHRleHRDb2xvciwg
Y29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKIHsKICAgICBpbnQgZCA9IGRpZmZlcmVuY2VT
cXVhcmVkKHRleHRDb2xvciwgYmFja2dyb3VuZENvbG9yKTsKICAgICAvLyBTZW1pLWFyYml0cmFy
aWx5IGNob3NlIDY1MDI1ICgyNTVeMikgdmFsdWUgaGVyZSBhZnRlciBhIGZldyB0ZXN0cy4KQEAg
LTc2LDcgKzYyLDcgQEAgc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFj
a2dyb3VuZChDb2xvciB0ZXh0Q29sb3IsIENvbG9yIGJhY2tncm8KIAogVGV4dFBhaW50U3R5bGUg
Y29tcHV0ZVRleHRQYWludFN0eWxlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVuZGVyU3R5
bGUmIGxpbmVTdHlsZSwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiB7Ci0gICAgVGV4dFBh
aW50U3R5bGUgcGFpbnRTdHlsZShsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBUZXh0UGFp
bnRTdHlsZSBwYWludFN0eWxlOwogCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIHBhaW50
U3R5bGUudXNlTGV0dGVycHJlc3NFZmZlY3QgPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25zSW5F
ZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uTGV0dGVycHJlc3M7CkBAIC0xOTgsMTIgKzE4NCwxMiBA
QCB2b2lkIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFRleHRQYWludFN0eWxlJiBwYWludAogICAgIH0KIAogICAgIENvbG9yIGZpbGxDb2xvciA9
IGZpbGxDb2xvclR5cGUgPT0gVXNlRW1waGFzaXNNYXJrQ29sb3IgPyBwYWludFN0eWxlLmVtcGhh
c2lzTWFya0NvbG9yIDogcGFpbnRTdHlsZS5maWxsQ29sb3I7Ci0gICAgaWYgKG1vZGUgJiBUZXh0
TW9kZUZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpIHx8IHBhaW50U3R5
bGUuY29sb3JTcGFjZSAhPSBjb250ZXh0LmZpbGxDb2xvclNwYWNlKCkpKQotICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIHBhaW50U3R5bGUuY29sb3JTcGFjZSk7CisgICAg
aWYgKG1vZGUgJiBUZXh0TW9kZUZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xv
cigpKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIAogICAgIGlm
IChtb2RlICYgVGV4dE1vZGVTdHJva2UpIHsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tl
Q29sb3IgIT0gY29udGV4dC5zdHJva2VDb2xvcigpKQotICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihwYWludFN0eWxlLnN0cm9rZUNvbG9yLCBwYWludFN0eWxlLmNvbG9yU3BhY2Up
OworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihwYWludFN0eWxlLnN0cm9rZUNv
bG9yKTsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggIT0gY29udGV4dC5zdHJv
a2VUaGlja25lc3MoKSkKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKHBh
aW50U3R5bGUuc3Ryb2tlV2lkdGgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludFN0eWxlLmgKaW5kZXggOTk0ZTQ1ZGNmNGU4YTQ4OTg4NGNkY2JjMjNiMWMyMDZiNzBh
OTgwNi4uZjBjYmViYjlmODQ3YzVhNTdlNjhhMDE1NGZkNDQ3MGQ2YWFhZDZmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTM5LDE2ICszOSwxNSBAQCBj
bGFzcyBTaGFkb3dEYXRhOwogc3RydWN0IFBhaW50SW5mbzsKIAogc3RydWN0IFRleHRQYWludFN0
eWxlIHsKLSAgICBUZXh0UGFpbnRTdHlsZShDb2xvclNwYWNlKTsKLSAgICBUZXh0UGFpbnRTdHls
ZShDb2xvciwgQ29sb3JTcGFjZSk7CisgICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0
UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwog
ICAgIENvbG9yIGZpbGxDb2xvcjsKICAgICBDb2xvciBzdHJva2VDb2xvcjsKICAgICBDb2xvciBl
bXBoYXNpc01hcmtDb2xvcjsKLSAgICBmbG9hdCBzdHJva2VXaWR0aDsKKyAgICBmbG9hdCBzdHJv
a2VXaWR0aCB7IDAgfTsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgYm9vbCB1c2VMZXR0
ZXJwcmVzc0VmZmVjdDsKKyAgICBib29sIHVzZUxldHRlcnByZXNzRWZmZWN0IHsgZmFsc2UgfTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKaW5k
ZXggZTQyODZjMDQxMDNjY2I3OWI0ZTZlNjZiN2JiYjU0MjZmYzJkNjg3My4uZWMyMzAyY2NlZWU2
MWI2MzQzZTE2NDlmN2YyNjZhZGJlNTRlODdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgU2hhZG93QXBwbGllcjo6U2hhZG93
QXBwbGllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dywKICAgICB9CiAKICAgICBpZiAoIW1fYXZvaWREcmF3aW5nU2hhZG93KQotICAgICAgICBjb250
ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIGNv
bnRleHQuZmlsbENvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiB9CiAKIFNoYWRvd0FwcGxpZXI6
On5TaGFkb3dBcHBsaWVyKCkKQEAgLTExOCwxMSArMTE4LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50
VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvCiAgICAgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wg
aG9yaXpvbnRhbCkKIHsKICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LmZpbGxDb2xvcigp
OwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LmZpbGxDb2xvclNwYWNl
KCk7CiAgICAgYm9vbCBvcGFxdWUgPSAhZmlsbENvbG9yLmhhc0FscGhhKCk7CiAgICAgYm9vbCBs
YXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQgPSAhc3Ryb2tlZCAmJiBvcGFxdWU7CiAg
ICAgaWYgKCFvcGFxdWUpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
YmxhY2spOwogCiAgICAgZG8gewogICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIo
Y29udGV4dCwgc2hhZG93LCBib3hSZWN0LCBsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1Rl
eHQsIG9wYXF1ZSwgaG9yaXpvbnRhbCA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CkBAIC0xMzMs
NyArMTMyLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm8KIAogICAgICAgICBJbnRTaXplIGV4
dHJhT2Zmc2V0ID0gcm91bmRlZEludFNpemUoc2hhZG93QXBwbGllci5leHRyYU9mZnNldCgpKTsK
ICAgICAgICAgaWYgKCFzaGFkb3cgJiYgIW9wYXF1ZSkKLSAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIAogICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPD0g
ZW5kT2Zmc2V0KQogICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29udGV4dCwg
Zm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRPcmln
aW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4
IGI2ZGU3OWU4YjI0NjU5OWZkMmE0NTkyNGM3Njk0YTIxN2E4OGIxOTcuLjkwYzU5Y2U5NTQxMDEz
M2RjNWE5OWRhZTExOThmMTVjNjVmOTk1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlVGhpY2tuZXNzKDEuMGYpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNv
bGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAw
LCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUo
YWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBw
aXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwogICAg
IGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
ICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpLCBJ
bnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRo
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkp
KTsKQEAgLTExMywxMyArMTEzLDEzIEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIAogICAg
IGludCB0b3BTdGFydCA9IHBhZGRpbmdUb3AoKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQoKS5z
ZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5m
by5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSk7CiAgICAgCiAgICAg
aW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCks
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpICsgdG9wU3RhcnQpKTsKICAgICAKICAgICBpbnQgYmFzZWxpbmUgPSByb3VuZFRv
SW50KGJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFs
TGluZSkpOwogICAgIAotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDI1
NSwgMCwgMCksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcigyNTUsIDAsIDApKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA1MTliYjM4ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3
ZjA2NWQyZDdiLi45MmUyMTgyNTA1MTg5N2MxZGNiOGFiY2Y4MTM2YmFjMDk4ZGQzZDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rp
b246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
CiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNr
bmVzcyk7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvcikpOwogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRP
ZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIGRlbm9taW5hdG9yV3JhcHBlci0+b2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNl
dC55KCkpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKaW5kZXggYjg2ZTM2MjlhNmI3OGU0MDRhNWZi
YWRlNDQ3OGQyZTQ3NDU0NzY5MS4uZTllNTM0YzQzZDU0N2ZlYmQzYmViYjYzMzc5YjAxY2RlZjk2
MmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNZW5jbG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
aW5mby5jb250ZXh0KCkpOwogICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25l
c3MoMSk7CiAgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKLSAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgICAgIC8vIFRPRE8gYWRkIHN1cHBv
cnQgZm9yIG5vdGF0aW9uIHZhbHVlIHVwZGlhZ29uYWxhcnJvdyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDY2CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbm90YXRpb25hbFZhbHVlU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAobm90YXRpb25W
YWx1ZXNbaV0gPT0gInVwZGlhZ29uYWxzdHJpa2UiKQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgICAgICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tp
XSA9PSAiaG9yaXpvbnRhbHN0cmlrZSIpCiAgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCku
ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgaGFsZmJveEhlaWdodCksIEludFBvaW50KGxl
ZnQgKyBib3hXaWR0aCwgdG9wICsgaGFsZmJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImNpcmNsZSIpIHsKLSAgICAgICAgICAgICAgICBpbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3RWxs
aXBzZShyZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0g
ImxvbmdkaXYiKQogICAgICAgICAgICAgICAgIGlzRGVmYXVsdExvbmdEaXYgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmNwcAppbmRleCAzY2ZlYjIxY2E4ZDI1N2YzZWZlNTBhYTFlOWNkYzE3ZTQ5MjJjMWFj
Li42NjAyMTBmMzRjZjYwY2NiZjc3NmY1MWJkMDBmMTM2N2RiY2JlZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcApAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFp
bnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGlu
Zm8uY29udGV4dCgpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRh
Lm1vZGUoKSA9PSBEcmF3U2l6ZVZhcmlhbnQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RyZXRjaHlE
YXRhLnZhcmlhbnQoKS5nbHlwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXgg
NjkyNWE3OWQ1NTlkNjFiZWRkOTRjYzg1ZDdkMDdlNzQyMzRlOWJiNS4uMTgwODI5ZGYwOTEwNzQ0
M2I3MTFlNjUwZjQ0MmI0ZWQyODI5YjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpw
YWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAKICAgICBpbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICog
c3R5bGUoKS5mb250U2l6ZSgpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRM
aW5lSm9pbihNaXRlckpvaW4pOwogICAgIGluZm8uY29udGV4dCgpLnNldE1pdGVyTGltaXQoc3R5
bGUoKS5mb250U2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggYWM0YTE1ZGQ4NGE0OTM0NDJmMzQ1OWM1
YTQ1MDIxMzE0YTAxNzVlNi4uYzI0M2QyMGU4YTdiMmEwODc3ZDUwOTMxMzFlNGY4YmUyODA5YWM2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvb3QuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290Ojpw
YWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAog
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOwog
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvcikpOwogCiAgICAgLy8gVGhlIHByZWZlcnJlZCB3aWR0aCBvZiB0aGUgcmFkaWNhbCBp
cyBzb21ldGltZXMgaW5jb3JyZWN0LCBzbyB3ZSBkcmF3IGEgc2xpZ2h0bHkgbG9uZ2VyIGxpbmUg
dG8gZW5zdXJlIGl0IHRvdWNoZXMgdGhlIHJhZGljYWwgc3ltYm9sIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzI2KS4KICAgICBMYXlvdXRVbml0IHNpemVFcnJv
ciA9IHJhZGljYWwtPnRyYWlsaW5nU3BhY2VFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCBlMGNhZWFjOWNkODAxYTFiOGI3MzBiOGY0YjlkN2E2
ZDcxN2ViYWFkLi5mY2M4YjdhODg5MzU0YzIyYTU2MGRkOWEyOWZiODFlYTYzYjk3Mjk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTg1LDcgKzE4NSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdl
KiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKICAgICAgICAgaWYgKGltYWdlKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VSZWN0LnNpemUoKSkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAg
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5n
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6
ZSgpKSk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5s
ZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5l
UGllY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuY3BwCmluZGV4IGM5MzlhZTc1ZDFkZmJiOTNjMjAwZDk0MGNhNmQ0YTI5YTc2YTZiZDAu
LjVkZWRiNTU2MmI4MzQxYTdhZTY3NTk5Mzg2ZDBiOTEwZjhlYzMzNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcApAQCAtMjA5LDIw
ICsyMDksMTggQEAgdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmQKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZS5jb2xvclNw
YWNlKCk7Ci0KICAgICBmb3IgKEltYWdlUGllY2UgcGllY2UgPSBNaW5QaWVjZTsgcGllY2UgPCBN
YXhQaWVjZTsgKytwaWVjZSkgewogICAgICAgICBpZiAoKHBpZWNlID09IE1pZGRsZVBpZWNlICYm
ICFmaWxsKCkpIHx8IGlzRW1wdHlQaWVjZVJlY3QocGllY2UsIGRlc3RpbmF0aW9uUmVjdHMsIHNv
dXJjZVJlY3RzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpc0Nvcm5l
clBpZWNlKHBpZWNlKSkgewotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1tw
aWVjZV0sIG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdl
LCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCBvcCk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSA9IGlzSG9yaXpvbnRhbFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpUaWxl
UnVsZT4oaG9yaXpvbnRhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7CiAgICAgICAgIElt
YWdlOjpUaWxlUnVsZSB2UnVsZSA9IGlzVmVydGljYWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2Fz
dDxJbWFnZTo6VGlsZVJ1bGU+KHZlcnRpY2FsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgY29sb3JTcGFj
ZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxl
c1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d1RpbGVkSW1hZ2UoKmltYWdlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNb
cGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDJi
NjQ1MDc3NjcwODY4ODIwY2NlOTdmMDA0YTU0NTU5NzJmMGViMjcuLmJmMWMyMTkwMmQyZjRmMDc0
MGU2N2NkZTFlMTQzNzZmYjM2MDA5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCkBAIC05MDIsNyArOTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0VGV4dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KExheW91dFVuaXQmIGxvZ2ljYWxUb3As
IExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93QmxvY2tEaXJlY3Rp
b25FeHRlbnQodGV4dFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAg
ICAgZmxvYXQgdGV4dFN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTdHJva2VXaWR0aDsgfQotICAgIHN0YXRpYyBDb2xvclNwYWNlIGNvbG9yU3BhY2Uo
KSB7IHJldHVybiBDb2xvclNwYWNlU1JHQjsgfSAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGFkZGlu
ZyBjb2xvciBzcGFjZSBoYW5kbGluZyBpbnRvIHRoZSBDb2xvciBjbGFzcy4KICAgICBmbG9hdCBv
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHk7IH0K
ICAgICBDb250cm9sUGFydCBhcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29udHJvbFBhcnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UpOyB9CiAgICAg
QXNwZWN0UmF0aW9UeXBlIGFzcGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEFzcGVjdFJhdGlvVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9U
eXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcAppbmRleCBlZjc1N2U3MzYzZjM0OGRiZGZmYTUyZmNjZGU4YWQyY2MwMmI3MzU2Li5lYTQw
MjA3MjkwN2Q2NDhhYzM4ZDUxYWE2NWMzYjUwY2EwNWIxOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBA
IHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5m
bykKIAogICAgIGltYWdlRWxlbWVudCgpLnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1S
ZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0lt
YWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3Qp
OwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5k
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmlu
ZGV4IDFkMDEzYWQ3YzFlMGU4YzQwMTQwMDg2OGEyNzI1OTNhYmFjYTJkMDUuLjI5NGNiNDYyM2Rk
NzgxM2RiNjc4ODM3NWZkNmVhMjZkM2JkNjVlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9p
ZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgZWxz
ZSBpZiAoUGF0dGVybiogcGF0dGVybiA9IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpKQogICAgICAg
ICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKICAgICBlbHNlCi0gICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKGNvbnRleHQuc3Ryb2tlQ29sb3IoKSwgY29udGV4dC5zdHJva2VD
b2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb250ZXh0LnN0cm9r
ZUNvbG9yKCkpOwogfQogCiB2b2lkIFJlbmRlclNWR1BhdGg6OnN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNGYzYmQ3ODgyN2M1
NjIwZDE1Yjc2MjdmMjZmNjVlYTRhNzBjZjFhMy4uMTZhZWRiNzMyNjZkYmZmZjdjOTkzYWZiOWY1
OGFkZDg3ZDY3ZDZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRl
ckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7CiAKICAgICAgICAg
ICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0
ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVz
b2x1dGlvbigpLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIoKnJlc3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgbGFzdEVmZmVj
dC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoKnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1
dGlvbigpKTsKIAogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNo
ZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAppbmRleCBm
Yjg4ZmM4YjRiMjhiNzg1OWRkOGYyMTViOTAyNTFkN2UwZDI4M2U3Li40YjIwZGE1OGY5ZTVjM2Vj
OTA1ZjllYTM2Y2YzOGRmNmQ3NjNjYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCkBAIC00
Miw3ICs0Miw2IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291
cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSCiAgICAgQVNTRVJUKHJlc291cmNl
TW9kZSAhPSBBcHBseVRvRGVmYXVsdE1vZGUpOwogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUm
IHN2Z1N0eWxlID0gc3R5bGUuc3ZnU3R5bGUoKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2Ug
PSBzdHlsZS5jb2xvclNwYWNlKCk7CiAKICAgICBib29sIGlzUmVuZGVyaW5nTWFzayA9IHJlbmRl
cmVyLnZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yUmVu
ZGVyaW5nU1ZHTWFzazsKIApAQCAtNTEsNyArNTAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
U29saWRDb2xvcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3Qg
UgogICAgICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3ZnU3R5bGUuZmlsbE9wYWNpdHkoKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKDEpOwotICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICAgICAgaWYgKCFpc1JlbmRlcmluZ01h
c2spCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgp
KTsKIApAQCAtNjEsNyArNjAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6
YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUgogICAgICAgICAv
LyBXaGVuIHJlbmRlcmluZyB0aGUgbWFzayBmb3IgYSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIs
IHRoZSBzdHJva2UgY29kZSBwYXRoIGlzIG5ldmVyIGhpdC4KICAgICAgICAgQVNTRVJUKCFpc1Jl
bmRlcmluZ01hc2spOwogICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5zdHJva2VP
cGFjaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jb2xvcik7CiAKICAg
ICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0
LCBzdHlsZSwgcmVuZGVyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA2OWYyOTYwNmM2Y2NmMTA0MGQ1YTA5YTM1ZmQz
YjI0M2M4OTY2ZjY4Li42ZTVkZjMwM2UyMmQwODhjNjFmYTJmMzAwZGQ0NWEzMzRkZDU5YzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAKQEAgLTIyNSw4ICsyMjUsOCBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0
aW9uQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKICAgICAgICAgaWYgKCFmcmFnbWVu
dFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmNvbmNhdENUTShmcmFnbWVudFRyYW5zZm9ybSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0
RnJhZ21lbnQoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3Np
dGlvbiwgJnN0eWxlKSwgYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0
RnJhZ21lbnQoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3Np
dGlvbiwgJnN0eWxlKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAgICAgICBtX3BhaW50aW5nUmVz
b3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQwMmVl
NTBiZDZjYTM3ZTYwYTUyZWQ0ZjY4MDQ2ZWZmOTA4MWE4YmMuLjZjOTkwNTUyZjgxY2ExNDkwMDg3
OTE4OGMxNjE0ZTE3ZjEzYzUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgUGFpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hhZG93KSB7Ci0g
ICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJvdW5k
VG9JbnQoc2hhZG93LT54KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+cmFk
aXVzKCksIHNoYWRvdy0+Y29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAg
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFk
b3ctPngoKSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hh
ZG93LT5jb2xvcigpKTsKICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5U
cmFuc3BhcmVuY3lMYXllcigxKTsKICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gRW5k
U2hhZG93TGF5ZXI7CiAgICAgICAgIH0KQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiYgaW1hZ2VCdQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgYm91bmRpbmdCb3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYm91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKaW5kZXggZGU4YTIy
YmFkMmI1YWM3ZmU5NDkxYzE3ODAzMjkxODE3MmQwYTc2Yi4uYzZiNDk1OGI3MWVmNTQzMjBkNGMy
YWQ0MmIzMThmOTViMTRlOTNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9y
LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIGZsb2F0
IGFscGhhID0gYW5pbWF0ZWRDb2xvci5hbHBoYSgpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tQ29sb3Iu
YWxwaGEoKSwgdG9Db2xvci5hbHBoYSgpLCB0b0F0RW5kT2ZEdXJhdGlvbkNvbG9yLmFscGhhKCks
IGFscGhhKTsKIAotICAgIGFuaW1hdGVkQ29sb3IgPSB7IHsgcm91bmRBbmRDbGFtcENvbG9yQ2hh
bm5lbChyZWQpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGdyZWVuKSwgcm91bmRBbmRDbGFt
cENvbG9yQ2hhbm5lbChibHVlKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSkgfSwg
Q29sb3JTcGFjZVNSR0IgfTsKKyAgICBhbmltYXRlZENvbG9yID0geyByb3VuZEFuZENsYW1wQ29s
b3JDaGFubmVsKHJlZCksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoZ3JlZW4pLCByb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKGJsdWUpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGFscGhh
KSB9OwogfQogCiBmbG9hdCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDc1NDRhNzZmMzVmMzVk
YTNhYTU5ZGIyNzU4YTFhNjJhOWEyOWZmOTIuLjc2OWM1NGVhNmJmOGRmOTdhZWYxY2Y1MDZmODBm
ZDMzMGYzMjIwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApA
QCAtMTM5LDcgKzEzOSw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNvbnRhaW5lclNpemUoKSBjb25z
dAogfQogCiB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUg
Y29udGFpCiAgICAgYWRqdXN0ZWRTcmNTaXplLnNjYWxlKHJvdW5kZWRDb250YWluZXJTaXplLndp
ZHRoKCkgLyBjb250YWluZXJTaXplLndpZHRoKCksIHJvdW5kZWRDb250YWluZXJTaXplLmhlaWdo
dCgpIC8gY29udGFpbmVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgc2NhbGVkU3JjLnNldFNpemUoYWRq
dXN0ZWRTcmNTaXplKTsKIAotICAgIGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSk7CisgICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIHNl
dEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogfQpAQCAtMTc5LDcgKzE3OSw3IEBAIFBhc3NOYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIGlm
ICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVj
dCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAgICAgLy8gRklYTUU6IFdLKEJ1ZyAxMTM2NTcp
OiBXZSBzaG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhlcmUuCiAgICAgcmV0dXJuIGJ1
ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogI2VuZGlmCiAKIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIEZsb2F0UmVjdCB6b29t
ZWRDb250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29udGFpbmVyU2l6ZSk7
CiAgICAgem9vbWVkQ29udGFpbmVyUmVjdC5zY2FsZSh6b29tKTsKQEAgLTIwNCw3ICsyMDQsNyBA
QCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJ
bnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
b250ZXh0LCB0cnVlKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1
ZmZlci4KICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250
ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFp
bmVyUmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlTm9ybWFsKTsKKyAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250
YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgaWYgKGNvbnRleHQuZHJh
d0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAKQEAgLTIxOSwxMCArMjE5LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAg
dW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLnNjYWxlKDEgLyBpbWFnZUJ1ZmZlclNjYWxlLndpZHRo
KCksIDEgLyBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAogICAgIGNvbnRleHQuc2V0RHJh
d0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBz
Y2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZS0+
ZHJhd1BhdHRlcm4oY29udGV4dCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9
CiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCAx
YWJhOTJhZTg3OTNhNGNlNGViODM2NzU4ODY2NzVkOGEwYTE0ZTFiLi43OTgwMzE0ZTg3OTlmNzA5
NDBlYjRhMDk3Y2Q5ODQ0NDgyNWYyMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaApAQCAtOTMsOSArOTMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkdW1w
KFRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFNWR0ltYWdlKEltYWdlT2JzZXJ2
ZXImLCBjb25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3Rm9yQ29u
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsCisgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9t
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCog
cm9vdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDVhMzgzNTExNjUwOGQ3ZDBkZmNiYTBl
NDM2MGU2NWNmNTMxMDc0MzAuLjRlMTYxZTNmMGQ0NGE2YWE2ZWE2YzAzZjVlZDlhYmMxOWViYWVh
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcApAQCAtMzUsMTUgKzM1LDE1IEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6c2l6ZSgpIGNvbnN0CiB9CiAKIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0g
ICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKQogewotICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4
dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2Us
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIo
Y29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29s
b3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgbV9pbWFnZS0+
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20s
IHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwg
ZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAogUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9y
Q29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDZhYmJiYzZk
MDIyZTAwYmNjOWIxODZmYTU5ODg4YjlhZDdlZWE1ZjMuLmRlOThmZjIxNjYxZTNkNDQyMTNjYjJl
NzZkMWYzMmQ0Y2NmYzMxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGlu
dHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgRmxvYXRTaXplJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVy
YXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFs
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHAKaW5kZXggNjYxOGNmNTQ4NGU0OWVlMjFjY2NmNjc4OTRkMDAyZjYwZTE3ZTgwNi4u
N2Y3YTljMzJkZjg1ZjFiMWU4NDE2MDc1ZThjYjgxOGVlZWQ2NzZjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
bV9pbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHJl
c3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCptX2ltYWdlLCBkZXN0UmVjdCwgc3JjUmVj
dCk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKaW5kZXggNjFmMTliZjE2NTAxYTlkZmYxNmQ3
YjllODk4MjA0ODRlMjExMTVkOC4uY2JjMzg1NjM3MTNiZjdlN2RiOTY4ZDE3ZmViOTY5MzEwOTI1
MmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xp
ZW50LmNwcApAQCAtODcsMTAgKzg3LDEwIEBAIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojpk
cmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBjb250CiAgICAg
RmxvYXRSZWN0IGluc2V0UmVjdCA9IG92ZXJsYXkuYm91bmRzKCk7CiAKICAgICBpZiAob3Zlcmxh
eS5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpIHsK
LSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAy
NTUsIDApKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTUwKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAs
IDI1NSkpOwogICAgICAgICBpbnNldFJlY3QuaW5mbGF0ZSgtMjApOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IGYxZTc0OTkzYWM3ODQy
MGU1MTU2OTgwMTQxNzgwOGU4YWVkYmEzNmMuLjUxOTJmYjgxOWI4MzkwMTllY2M5ZWYwOTllMGY2
ZGIwZWMzYTVhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERG
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1Mu
bW0KQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0
aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxwaGEpCiAgICAgQ0dDb250ZXh0
U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICBDR0Zsb2F0IGhlaWdodCA9IFdlYktpdExpbmtlZE9u
T3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0ZMSVBQRURfU0hBRE9XUykgPyAyLjBm
IDogLTIuMGY7CiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6
ZU1ha2UoMC4wZiwgaGVpZ2h0KSwgMy4wZiwgW1tzZWxmIGNsYXNzXSBzaGFkb3dDb2xvcl0pOwot
ICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9y
KENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIENHQ29udGV4dFNldEZp
bGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSkpOwog
ICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHBhZ2VSZWN0KTsKICAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNvbnRleHQpOyAgICAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9X
ZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tCmluZGV4IDFlMGUwN2M0Zjk3ZmVlNGFhNDIwMTNi
MTUxNmNiNGM5MzhkOTk4ZDIuLjkwNzcyMjA2MzFjYTU4YWJkODIyYzEyYzkzNmFkYzExZDA1YjU5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5t
bQpAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpZHJh
d1JlY3Q6KE5TUmVjdClyZWN0CiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBXS0dldEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29s
b3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVk
Q0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKICAgICBXS1JlY3RGaWxsKGNvbnRleHQsIFtzZWxmIGJv
dW5kc10pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4
dHJhcy5tbQppbmRleCAwMDI1YWUyOTMwMjE3YTJhZTY2MmZmMDRkNmEwYjY0YzliNGJkZGFkLi5j
Zjc4ZGIzM2I3ZjJlN2FlNjAwMGM3NzlkNmNiYjcxMDRmNzZiZmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KQEAgLTEwMCw3ICsxMDAsNyBA
QCBzdGF0aWMgQk9PTCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29uc3QgVW5pQ2hhciAqYnVmZmVyLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIENHRmxvYXQgYmx1ZTsKICAgICAgICAgQ0dGbG9hdCBh
bHBoYTsKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2
aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxw
aGE6JmFscGhhXTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdC
QShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1h
a2VSR0JBKHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSk7
CiAKICAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZs
b2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGln
aGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGln
aGxpZ2h0Vmlldy5tbQppbmRleCBkYjA1YjM0ZGJlYjk0ZDY4ZTY2ZTJkYmZiYzI5MjdjMjZmNWZj
MTBiLi4zOGFiYmI0ZDQxNjE2ODlmZWI2ODJmMDcwODJiZWFhM2E5NjJkNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3
Lm1tCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxh
eWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAgICAgRmxvYXRRdWFkIHBh
ZGRpbmdRdWFkID0gaGlnaGxpZ2h0LT5xdWFkc1syXTsKICAgICBGbG9hdFF1YWQgY29udGVudFF1
YWQgPSBoaWdobGlnaHQtPnF1YWRzWzNdOwogCi0gICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0g
Y2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPm1hcmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICBib3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+
Ym9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhZGRpbmdMYXllci5maWxs
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+cGFkZGluZ0NvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvciho
aWdobGlnaHQtPmNvbnRlbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgbWFyZ2lu
TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPm1hcmdpbkNvbG9yKTsK
KyAgICBib3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Ym9y
ZGVyQ29sb3IpOworICAgIHBhZGRpbmdMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhp
Z2hsaWdodC0+cGFkZGluZ0NvbG9yKTsKKyAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2Fj
aGVkQ0dDb2xvcihoaWdobGlnaHQtPmNvbnRlbnRDb2xvcik7CiAKICAgICBsYXllclBhdGhXaXRo
SG9sZShtYXJnaW5MYXllciwgbWFyZ2luUXVhZCwgYm9yZGVyUXVhZCk7CiAgICAgbGF5ZXJQYXRo
V2l0aEhvbGUoYm9yZGVyTGF5ZXIsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkKTsKQEAgLTMwMSw3
ICszMDEsNyBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29u
c3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAKICAgICBbc2VsZiBfYXR0YWNoOnBhcmVudExheWVy
IG51bUxheWVyczpudW1MYXllcnNdOwogCi0gICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBj
YWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Y29udGVudENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0
LT5jb250ZW50Q29sb3IpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVy
czsgKytpKSB7CiAgICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBbX2xheWVycyBvYmplY3RB
dEluZGV4OmldOwogICAgICAgICBsYXllci5maWxsQ29sb3IgPSBjb250ZW50Q29sb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBjNWM3ZTdkMWFjN2VkMzQyYWU3ODY4
ZGU1ZTgwMWE2NTIzNTQ2NTFkLi5mMjE5MDYwZWFhNjdhMTQ0N2RjYzAwODEwM2NiMWU2YmQ5MmU4
N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEwMjksNyArMTAy
OSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExv
YWRlciogbG9hZGVyKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIG5zQ29sb3IoY29s
b3IpOwogI2Vsc2UKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggMWM3ZmE0YTQ4
OWIzOTFhYzBkN2NjOGZlZjIxY2IwYzc5MWYzN2MxMy4uYWMwZTc3MjRmY2MxMTZhZDdhOTY5OTVk
ZDQxMmFiMmViOWM2Yjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZp
ZXcubW0KQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9t
Q2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbAogICAgICAg
ICAgICAgTlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICAgICAgQ0dDb250ZXh0
U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hp
dGUpKTsKICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCByZWN0KTsKICNlbmRpZgog
ICAgICAgICB9CkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVz
RnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICAg
ICAgICAgICAgIE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xv
cihDb2xvcjo6Y3lhbiwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6
Y3lhbikpOwogICAgICAgICAgICAgV0tSZWN0RmlsbChjZ0NvbnRleHQsIHJlY3QpOwogI2VuZGlm
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5k
aWNhdGVMYXllci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXll
ci5tbQppbmRleCA1ZWQ4NGJjNzM4MmU4ZjcyMDRiYzNlMThlMjllMTViZGM4N2Y0MDA2Li5mOTQ0
NGRjMzc0ZTA0MmI2ZDA1MDc3MGEyNjA3MmUxZTdiZTEyYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiAgICAgLy8gQmx1ZSBoaWdobGlnaHQgY29sb3IuCiAgICAg
c3RhdGljIENvbG9yIGhpZ2hsaWdodENvbG9yKDExMS4wZiAvIDI1NS4wZiwgMTY4LjBmIC8gMjU1
LjBmLCAyMjAuMGYgLyAyNTUuMGYsIDAuNjZmKTsKLSAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9
IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IHNlbGYuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHRDb2xvcik7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCAxYTRmNzUyMTE2NTk5ODg0ZWZkMjY0NTMxOGE0YzVjYzE0N2MxMjg3Li4wODA1MjIxMjljMWNj
NDBkZmNmMDA2MDIwN2MzMjcyM2UzNGNhYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC04ODgsNyArODg4LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdh
bWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIF9wcml2
YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBh
bHBoYToxXSByZXRhaW5dOwogI2Vsc2UKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0g
Q0dDb2xvclJldGFpbihjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yUmV0YWluKGNh
Y2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7CiAjZW5kaWYKICAgICBfcHJpdmF0ZS0+aW5jbHVk
ZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXAgPSBZRVM7CiAK
QEAgLTExODcsNyArMTE4Nyw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFk
UHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gW3ByZWZl
cmVuY2VzIHJldGFpbl07CiAgICAgX3ByaXZhdGUtPm1haW5GcmFtZURvY3VtZW50UmVhZHkgPSBO
TzsKICAgICBfcHJpdmF0ZS0+ZHJhd3NCYWNrZ3JvdW5kID0gWUVTOwotICAgIF9wcml2YXRlLT5i
YWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yUmV0YWluKGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRl
LCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9
IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKIAogICAgIFdlYkZy
YW1lVmlldyAqZnJhbWVWaWV3ID0gbmlsOwogICAgIGZyYW1lVmlldyA9IFtbV2ViRnJhbWVWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOiBDR1JlY3RNYWtlKDAsMCxmcmFtZS5zaXplLndpZHRoLGZy
YW1lLnNpemUuaGVpZ2h0KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0lt
YWdlQ0cuY3BwCmluZGV4IDk5YzIzZmU4OWIwYjMyMzNiYTkxMjE3MTFkMDU0NzVmZDQxODNkMzIu
LmJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01Nyw2ICs1Nyw2IEBAIFdL
SW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdL
SW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFn
ZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIEZsb2F0UmVjdCByZWN0
KEZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVh
clJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VS
ZWYsIGltYWdlU2l6ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQiwgcmVjdCwgcmVjdCk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6
ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51
Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4
dERhdGEuY3BwCmluZGV4IGViODc2NzM4ZGVkODcyOGQ5MWQ1OTcwOWY5ODM5OTYyNTg0ZjBiNjgu
LmI1NDU0ZjQ3MmY0MDY0MzAyNmRlZGU3MmU5NzE2YjgyNmI2NzFkMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKIAogICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0
IHRoZSByb3VuZGluZyBzdGFydGVneSBmb3IgU2hhcmVhYmxlQml0bWFwLgogICAgIG1fY29udHJv
bGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFn
ZS0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBtX2NvbnRy
b2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZSgqaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAgIG1fY29udHJvbGxlZEltYWdlLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgSW50UG9pbnQoKSk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCBmMGUyNjM2MmU1MWI3MDkzYmVmNGIwZjE5N2QwYjNlMjllOWQ2MmIwLi4z
OWRmN2ZiMWFlYTliNjAwYjIwNjE3YzBhMmM3MzZmNmI5NDRhNDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzQyLDcgKzc0Miw3
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlCiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShBcmd1
bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRT
aXplKGltYWdlLnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAg
Yml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQppbmRleCAyY2NiYWM3ZmM3ZjI3MDljMGZhYzJlMjBlZWM5OWY0MGNiYWY5ZmM1Li5jN2Jj
NjEwMWRhNGMzNDFmMDZmNzk4NjIyNjc4YWZhYjUzYjJlZWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTI3NSw3
ICsyNzUsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogCiAjaWZuZGVmIE5ERUJVRwogICAg
IGlmIChtX2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNjYWxlZExheWVyQm91
bmRzLCBDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywgQ29sb3IoMjU1LCAwLCAwKSk7CiAjZW5k
aWYKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBlMGJhYjM3M2VjZWFhODM5ZGY4YzE2ZDIwYTA5ZjYyYjRhY2Y5NWU4Li5lN2VmZjJm
MGQxYmJmODE5ZDE5M2E1MDI2YjZhMmZmNmRlZWNlZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk0LDcgKzg5NCw3IEBAIHN0
YXRpYyBXZWJDb3JlOjpDb2xvciBzY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKFdLV2ViVmlldyAq
d2ViVmlldykKIAogICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAKLSAg
ICBhdXRvIHVpQmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRX
aXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNl
UkdCKV0pOworICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBh
bGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXSk7CiAgICAgW19zY3Jv
bGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CiAKICAg
ICAvLyBVcGRhdGUgdGhlIGluZGljYXRvciBzdHlsZSBiYXNlZCBvbiB0aGUgbGlnaHRuZXNzL2Rh
cmtuZXNzIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KaW5kZXggMzZjZGFiYTNjZGZm
OTc2OTRjODQ0NjMwMTJlYTM5NWUxMjA2NmY5Zi4uNWVlNTVhNWU2ZDcxNGQ4MDFhY2I1YjM4ODE5
YjgwNmZhN2IwNTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW5z
cGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tJ
bnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0yMjksMTAgKzIyOSwxMCBAQCBzdGF0aWMgdm9p
ZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1
YWQpCiAgICAgRmxvYXRRdWFkIHBhZGRpbmdRdWFkID0gaGlnaGxpZ2h0LnF1YWRzW29mZnNldCAr
IDJdOwogICAgIEZsb2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hsaWdodC5xdWFkc1tvZmZzZXQg
KyAzXTsKIAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxp
Z2h0Lm1hcmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBib3JkZXJMYXllci5m
aWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5ib3JkZXJDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3Io
aGlnaGxpZ2h0LnBhZGRpbmdDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGVu
dExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVk
Q0dDb2xvcihoaWdobGlnaHQubWFyZ2luQ29sb3IpOworICAgIGJvcmRlckxheWVyLmZpbGxDb2xv
ciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yKTsKKyAgICBwYWRkaW5nTGF5
ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQucGFkZGluZ0NvbG9yKTsKKyAg
ICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVu
dENvbG9yKTsKIAogICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxheWVyLCBtYXJnaW5RdWFk
LCBib3JkZXJRdWFkKTsKICAgICBsYXllclBhdGhXaXRoSG9sZShib3JkZXJMYXllciwgYm9yZGVy
UXVhZCwgcGFkZGluZ1F1YWQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyB2b2lkIGxheWVy
UGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIAog
ICAgIFtzZWxmIF9jcmVhdGVMYXllcnM6bnVtTGF5ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29u
dGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29s
b3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvcik7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgbnVtTGF5ZXJzOyArK2kpIHsKICAgICAgICAgQ0FTaGFwZUxheWVyICpsYXllciA9IFtfbGF5
ZXJzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAgIGxheWVyLmZpbGxDb2xvciA9IGNvbnRlbnRD
b2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1
cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMmY0OGRiYjFkNDQxY2U3NWQ0NjQ4NzY5YzZlNTNh
NjZkOTkyYmMyMy4uNmY5MTE3NjU0MGJkZWNiNTMxMGI3YmQ5NjRiNjlkNjU2ZTZiMzAzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJJT1MubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlv
bgogICAgICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250ZW50cyA9IHNuYXBzaG90
LT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgQ29sb3IgY29yZUNvbG9yID0gc25hcHNob3Qt
PmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29yZUNvbG9yLmlzVmFsaWQoKSkKLSAg
ICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0
V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
XSk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxv
Y10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29yZUNvbG9yKV0pOwogICAgIH0KIAog
ICAgIFttX3NuYXBzaG90VmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6YmFja2dyb3VuZENvbG9yLmdl
dCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOGVlNmE3YTk4ZjAyOGRiYzNlMGQ4Y2Q4YWJhZTVl
NGM0MWQ5MGJmMS4uYzQzZWYzYTFlMTc1MzM3NWU5NGJlNmQxMzFiYmM3NzBkMWZiNzljOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTc4OSw3ICs3ODksNyBAQCBzdGF0aWMgTlNWYWx1ZSAqbnNTaXpl
Rm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFkaXVzKFdlYkNvcmU6OkludFNpemUgYm9yZGVyUmFkaXVz
LAogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIFJldGFpblB0cjxVSUNvbG9yPiBo
aWdobGlnaHRVSUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dD
b2xvcjpjYWNoZWRDR0NvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5jb2xvciwgV2ViQ29y
ZTo6Q29sb3JTcGFjZURldmljZVJHQildKTsKKyAgICAgICAgUmV0YWluUHRyPFVJQ29sb3I+IGhp
Z2hsaWdodFVJS2l0Q29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0Nv
bG9yOmNhY2hlZENHQ29sb3IoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yKV0pOwogICAg
ICAgICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6aGlnaGxpZ2h0VUlLaXRDb2xvci5nZXQoKV07
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDQwYjRmN2FlMDUxOGFiNTJjZmQ3YWVlNGY2
NDg1YzdkNDkyMzcxZjQuLjY2YzhiMGY5ZGM5OTc1YmYyZjVkZjcwNWM1ZGVjZmFkZGNiNDkwMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyTWFjLm1tCkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0KIAogICAgICAgICBDb2xvciBjb3JlQ29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENv
bG9yKCk7CiAgICAgICAgIGlmIChjb3JlQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgYmFj
a2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihjb3JlQ29s
b3IpOwogICAgICAgICBtX2N1cnJlbnRTd2lwZVNuYXBzaG90ID0gc25hcHNob3Q7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAppbmRleCAzMDNlMWI3MzM2YmExNTdjODBiNjM2MTcyMDgzYzM5NTcxMmQ1MzYzLi44
YTc2MzFlMTEyODI3NjNmYTM5MzcwOTQ0YWRlNDBmYjliOWM5ODA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTQ2
MCwxMyArNDYwLDEzIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgVmVjdG9yPEludFJl
Y3Q+IHJlY3RzID0gcmVjdHNGb3JUZXh0TWF0Y2hlc0luUmVjdChib3JkZXJJbmZsYXRlZERpcnR5
UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kLgotICAgIGdyYXBoaWNzQ29udGV4
dC5maWxsUmVjdChkaXJ0eVJlY3QsIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VT
UkdCKTsKKyAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0LCBvdmVybGF5QmFj
a2dyb3VuZENvbG9yKTsKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSksIHNoYWRv
d0JsdXJSYWRpdXMsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIHNoYWRvd0NvbG9yQWxwaGEpLCBD
b2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlU1JHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
aGFkb3coRmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkpLCBzaGFkb3dCbHVy
UmFkaXVzLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dDb2xvckFscGhhKSk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKIAogICAgICAg
ICAvLyBEcmF3IHdoaXRlIGZyYW1lcyBhcm91bmQgdGhlIGhvbGVzLgogICAgICAgICBmb3IgKGF1
dG8mIHJlY3QgOiByZWN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggMjUwYjQyYjlkYzdlZWRmNGE0ODBkMDBkMzM0YmMzMTk5MTRj
ZWY4NS4uMDhiODdkMTM0YzU4OGY1YTY0NDM2NDIyNjczZWU2MzM4ZjM4Mjk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04NDgsNyAr
ODQ4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxl
Y3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRT
bmFwc2hvdC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IgPSBjb3JlRnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGdy
YXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VT
Y2FsZUZhY3RvcikpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpzbmFw
c2hvdCwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRQb2ludCgpKTsKKyAgICBncmFwaGljc0Nv
bnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqc25hcHNob3QsIEZsb2F0UG9pbnQoKSk7CiAKICAgICBy
ZXR1cm4gc2hhcmVkU25hcHNob3QucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA1NTYwOThhYTAyMGU0MTlkNDhkNmM2
Mjk2NzJmMWIwZDhkMTQwMTcuLjQzMjcxNDgwNzQ5MzRhNzI3OGI4N2Y5YWE1ZjQwZGUyZTQzNWQ0
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTE3ODAsNyArMTc4MCw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBz
aG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAKICAgICBDb2xv
ciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5k
Q29sb3IoKTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoY29yZUZyYW1lLT5zZXR0aW5n
cygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkgJiYgZG9jdW1lbnRCYWNrZ3Jv
dW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3
LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNpemUpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBiaXRtYXBTaXplKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmICghKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpKSB7CiAgICAgICAg
IGRvdWJsZSBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCk7CkBAIC0xODAzLDcgKzE4MDMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpz
bmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogCiAgICAg
aWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSkgewog
ICAgICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gbV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKTsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigweEZGLCAwLCAwKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMHhG
RiwgMCwgMCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnN0cm9rZVJlY3Qoc2VsZWN0aW9u
UmVjdGFuZ2xlLCAxKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCBkYmEy
ZDA1OGNhNTkyNWMxMDhkMDNmOWY2ZWQ1OTgwYmMxMGE2ZDQwLi4xZDY5MDhiZTllZmI1OGRjZjNh
ZGM3MGEzYTE5ZTVkMDcxNDNlZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTc5LDExICs3
OSwxMSBAQCB2b2lkIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TOjpkcmF3UmVjdChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZQogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHRl
eHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBtX3RleHRJbmRpY2F0b3ItPnRleHRS
ZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMoKTsKICAgICBWZWN0b3I8UGF0aD4gcGF0aHMg
PSBQYXRoVXRpbGl0aWVzOjpwYXRoc1dpdGhTaHJpbmtXcmFwcGVkUmVjdHModGV4dFJlY3RzSW5C
b3VuZGluZ1JlY3RDb29yZGluYXRlcywgY29ybmVyUmFkaXVzKTsKIAotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKGhpZ2hsaWdodENvbG9yKCkpOwogICAgIGZvciAoY29uc3QgYXV0
byYgcGF0aCA6IHBhdGhzKQogICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogCi0gICAg
Y29udGV4dC5kcmF3SW1hZ2UoKmluZGljYXRvckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBv
dmVybGF5LmJvdW5kcygpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW5kaWNhdG9ySW1hZ2Us
IG92ZXJsYXkuYm91bmRzKCkpOwogfQogCiBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5k
SW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJv
b2wgc2hvdWxkQW5pbWF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiODIzYjhlOWYzMTdmNWY0ZGMzNDdmNTIyZGNj
N2Y4ODFhOTkyOGZhLi42N2Q2MjQ1N2UwMDljZjA2ZTY2ZWI3OTAzNTc4NjkxMTBlNmY5MzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0yMjE5LDcgKzIyMTksNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5m
b3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbkluZm9ybWF0aQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUgYml0bWFwU2l6ZSA9IHNjYWxl
ZFNpemUud2lkdGgoKSA8IGltYWdlLT5zaXplKCkud2lkdGgoKSA/IHNjYWxlZFNpemUgOiBpbWFn
ZS0+c2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0
aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAw
LCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlZWM2NWFiNDc1NDcyMzIyZDg4NmNkY2E3NWIz
Zjg0ZTM4NDg1ZDkyLi4wYmYzNjRjMTQzN2UzNTYxZGExMWIyZGI2ZTJhY2UxYmExZTIyNDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAogICAgIFt2aWRlb0xh
eWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKDAsIDApXTsKLSAgICBbdmlkZW9MYXllciBzZXRC
YWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQs
IFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICBbdmlkZW9MYXllciBzZXRCYWNr
Z3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsK
IAogICAgIC8vIFNldCBhIHNjYWxlIGZhY3RvciBoZXJlIHRvIG1ha2UgY29udmVydFJlY3Q6dG9M
YXllcjpuaWwgdGFrZSBzY2FsZSBmYWN0b3IgaW50byBhY2NvdW50LiA8cmRhcjovL3Byb2JsZW0v
MTgzMTY1NDI+LgogICAgIC8vIFRoaXMgc2NhbGUgZmFjdG9yIGlzIGludmVydGVkIGluIHRoZSBo
b3N0aW5nIHByb2Nlc3MuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264995</attachid>
            <date>2015-11-06 20:46:02 -0800</date>
            <delta_ts>2015-11-07 10:16:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150967-20151106204558.patch</filename>
            <type>text/plain</type>
            <size>322934</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzMDRmYTY1MDg1ODVm
ZTI5ZjViZjEwMTIzODVlZGIxNTg4ZGY2Mi4uNDY3OTAzODA0OWI2OTJiYjBhYjY5N2I0OGNjYjAz
MTk3Zjg0MTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3NCBAQAorMjAxNS0xMS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29s
b3JTcGFjZSBhcmd1bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSAtd2Via2l0LWNvbG9y
LWNvcnJlY3Rpb24gQ1NTIHByb3BlcnR5IHdhcyByZW1vdmVkIGluIHIxODgyMDIsIGFuZCBDb2xv
clNwYWNlRGV2aWNlUkdCCisgICAgICAgIGFuZCBDb2xvclNwYWNlU1JHQiBhcmUgZnVuY3Rpb25h
bGx5IGVxdWl2YWxlbnQsIHdlIGNhbiByZW1vdmUgYWxsIHRoZSBDb2xvclNwYWNlIGFyZ3VtZW50
cyBwYXNzZWQKKyAgICAgICAgdG8gZHJhd2luZyBmdW5jdGlvbnMsIGFuZCByZW1vdmUgUmVuZGVy
U3R5bGU6OmNvbG9yU3BhY2UoKSwgd2hpY2ggd2FzIGhhcmRjb2RlZCB0byByZXR1cm4gQ29sb3JT
cGFjZVNSR0IuCisgICAgICAgIAorICAgICAgICBGaWxsIGFuZCBzdHJva2UgQ29sb3JTcGFjZXMg
YXJlIGFsc28gcmVtb3ZlIGZyb20gZ3JhcGhpY3Mgc3RhdGUsIHNpbXBsaWZ5aW5nIGNvbG9yIHNh
dmUvcmVzdG9yZS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoX3BsYXRmb3JtQ29s
b3IpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZp
bGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3
SW1hZ2VJbnRvQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50U2Ny
b2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZTo6ZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRy
YXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2Fj
eVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxDb2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNldENhY2hlZFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjpzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpk
cmF3U2hhZG93QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVy
QW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YmVn
aW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjplbmRTaGFkb3dM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0
cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdS
ZXBhaW50Q291bnRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldENH
RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZp
bGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNG
b3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmF3TGF5ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lU
aWxlR3JpZFRpbGU6OnNob3dCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENv
bXBvc2l0aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRD
b21wb3NpdGlvblVuZGVybGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlCb3hTaGFkb3dGb3JC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRh
aWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0F4aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1
dHRvbkRlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWlu
dFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVV
cGxvYWRJY29uRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25h
cHNob3R0ZWRQbHVnaW5PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dENvbG9y
Rm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50TGF5b3V0OjpsYXlP
dXRTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUaXRsZUJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlv
bkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnREZWJ1Z0JvcmRlcnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVUZXh0UGFpbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0eWxlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QXBwbGll
cjo6U2hhZG93QXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93
cyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6cGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6OnBhaW50Rm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVzZVN0cm9rZVN0eWxlVG9GaWxsKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3Jv
dW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUt
MTEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmlldyBvbiBhcHBsZS5jb20vY29udGFjdCB3aXRoIGFsbCB0ZXh0IHNlbGVjdGVkIHNob3dz
IGEgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggNTBiMGFkZDAzNWQxZTE5ODljZjI0ZWYzNzdiODYw
NjZkOWE2MzgwMi4uY2MyMmQ3NjhhMjBlM2Y2YmU2MWIwMmZhMmUyMTJiYTUxODIyNTQ4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFy
Z3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlv
biBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQgaW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZp
Y2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3BhY2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZh
bGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhlIENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAor
ICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9ucywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29s
b3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNvZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERG
VmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1t
OgorCiAyMDE1LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXhlZCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIxOTE5MDQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NGUxODNhNDc5ZTczOTc1MTRjMjA3MGI0NzU1YzZkYWJiYWU4NWFmZC4uNDFkZmQzZDBjYjFhNjNl
NTFkNmFmZTNiZDBiNmYzZDE3ZjkxMjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTExLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBj
YWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2lu
Y2UgdGhlIC13ZWJraXQtY29sb3ItY29ycmVjdGlvbiBDU1MgcHJvcGVydHkgd2FzIHJlbW92ZWQg
aW4gcjE4ODIwMiwgYW5kIENvbG9yU3BhY2VEZXZpY2VSR0IKKyAgICAgICAgYW5kIENvbG9yU3Bh
Y2VTUkdCIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgd2UgY2FuIHJlbW92ZSBhbGwgdGhl
IENvbG9yU3BhY2UgYXJndW1lbnRzIHBhc3NlZAorICAgICAgICB0byBkcmF3aW5nIGZ1bmN0aW9u
cywgYW5kIHJlbW92ZSBSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSgpLCB3aGljaCB3YXMgaGFyZGNv
ZGVkIHRvIHJldHVybiBDb2xvclNwYWNlU1JHQi4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9u
dDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAqIFdlYkluc3Bl
Y3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKC1bV2ViTm9kZUhpZ2hsaWdo
dFZpZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJO
b2RlSGlnaGxpZ2h0VmlldyBfbGF5b3V0Rm9yUmVjdHNIaWdobGlnaHQ6cGFyZW50Ol0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9ib2R5QmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklu
ZGljYXRlTGF5ZXIubW06CisKIDIwMTUtMTEtMDMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0sxXSBOdWxsIGRlcmVmZXJlbmNlIGxvYWRpbmcgQmxpbmsg
bGF5b3V0IHRlc3QgZWRpdGluZy9pbnB1dC90ZXh0LWlucHV0LWNvbnRyb2xsZXItbm8tZWRpdGFi
bGUtbm8tY3Jhc2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdhMGRkZDQ3MjQ2MmU5YTE0M2RiNTUzYmFh
NWQ1ZTQzZGRhMjhhZTQuLjk4MDQ5MDAxOTg3OGNiMWNkOWUwZjM4ZGYxYmRiNjQxMWJhZWQzNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNS0xMS0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JTcGFjZSBhcmd1
bWVudCB0byBhbGwgdGhlIGRyYXdpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6Cisg
ICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9Db250
ZXh0TWVudUNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvckhpZ2hsaWdodFZp
ZXcgX2xheW91dEZvck5vZGVIaWdobGlnaHQ6b2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvckhpZ2hsaWdodFZpZXcgX2xheW91dEZvclJlY3RzSGlnaGxpZ2h0Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfdXBkYXRlVGFwSGlnaGxpZ2h0XSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250
cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0xMS0wNSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2aWV3IG9uIGFwcGxlLmNv
bS9jb250YWN0IHdpdGggYWxsIHRleHQgc2VsZWN0ZWQgc2hvd3MgYSBtYXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4
IDQxNzE5ODc0YzdkNjEwMWUyYzg2MDJmMzQ2NjA2ODQ1NmRkMTg0MjAuLmYzNzJhMTBlMDMzZWRl
YmZjNTM1OGRmM2ZkMTI0YWYyMGNiZTU2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTM0Nyw3ICsxMzQ3LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxU
eXBlIGVxICJDb2xvciIpIHsKICAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFVzZUNHQ29sb3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6OmNh
Y2hlZENHQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAgICAgJGdl
dHRlckNvbnRlbnRUYWlsIC49ICIsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpIjsKKyAg
ICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
V2ViQ29yZTo6bnNDb2xvcigkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCmluZGV4IGJlNzVkYzZlZjY2ZjEwYTQ4OWJkMjg0NmM2OTI0Yzc3MjYw
NjAyM2IuLjIzMWEzMmQ2YWE1MGIzNTFjNWEzYTA5NjI4ZGI2OWE1MDcwOTRlNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFn
ZSgpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwotICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBpbWFnZVJlY3QpOworICAgIHRleHR1cmUtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3QpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
PiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAgICBm
aWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RGOjptb3ZlKHRleHR1cmUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYTcxZThiNWI5YjExMTJl
NWEzZGJkM2Q2ODVlZWZjZTQwNGUzZjg3Yi4uNmU0YjMxZWYzMzY4YjZlYmEzYTU5NzhhZGJkZDk2
ZGM4MmUxMWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE1NzAsNyArMTU3MCw2IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5v
ZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkgOiBub2Rl
LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCA9IG5v
ZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIApAQCAtMTU4MywxNyArMTU4MiwxNCBAQCB2b2lk
IENhcmV0QmFzZTo6cGFpbnRDYXJldChOb2RlKiBub2RlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAgYXV0byBlbGVtZW50QkdDb2xvciA9IGVs
ZW1lbnRTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwogICAgICAgICAgICAgaWYgKGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChlbGVtZW50QkdD
b2xvciwgcm9vdEVkaXRhYmxlQkdDb2xvcikpIHsKICAgICAgICAgICAgICAgICBjYXJldENvbG9y
ID0gcm9vdEVkaXRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwotICAgICAgICAgICAgICAgIGNvbG9yU3BhY2UgPSByb290RWRpdGFibGVTdHlsZS5jb2xv
clNwYWNlKCk7CiAgICAgICAgICAgICAgICAgc2V0VG9Sb290RWRpdGFibGVFbGVtZW50ID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRh
YmxlRWxlbWVudCkgeworICAgICAgICBpZiAoIXNldFRvUm9vdEVkaXRhYmxlRWxlbWVudCkKICAg
ICAgICAgICAgIGNhcmV0Q29sb3IgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAgICAgIGNvbG9yU3Bh
Y2UgPSBlbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IsIGNvbG9y
U3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY2FyZXQsIGNhcmV0Q29sb3IpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQzZDQ2
NWZiN2QwNDdkMzgyYTU1NWI4MjU2ZmI0ODAzMjgxZjNkOGUuLjc1ZGI3MWQ0MDE1OWQ5NDhhZmE4
MThjYWQ1NmU1N2Y4NDIxNzgyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgTlNCdW5kbGUgKl93
ZWJLaXRCdW5kbGUoKQogCiBzdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENv
bG9yIGNvbG9yKQogewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0
ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBX
ZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKIH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0
Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAppbmRleCA1NzI0YzFhYTJhN2ZkYWJjYmEwNDYwNmMyNWEzMzQ5ZTI0MWIzMWExLi5j
MGZiNDhiZmE0YmY2MWFmOGUzM2ZjNjcwNDlkMTFiZDZiZGRhN2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMzg4LDkgKzM4OCw5IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAg
ICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVt
KHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJ
bnRSZWN0KHIpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QociksIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGIxOWQ5
ZTBkYzcwM2Q1NTUzZjczMjYyMTMzYzIwYzk0ZjYyOGM3OWYuLmQyYmRkMGJjMjUyNDE1YTg2YzI4
NzE0OGI1Y2IxMmJlMzBhNjY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE1NCw3ICsxMTU0LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkg
ewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0gdHJ1ZTsKLSAgICAg
ICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNw
YXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lT
aGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgfQogICAgIGlm
IChzdGF0ZSgpLmdsb2JhbEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAt
MTMxOSw5ICsxMzE5LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hh
ZG93KCkKICAgICBpZiAoc2hvdWxkRHJhd1NoYWRvd3MoKSkgewogICAgICAgICBmbG9hdCB3aWR0
aCA9IHN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9
IHN0YXRlKCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpOwotICAgICAgICBjLT5zZXRMZWdhY3lTaGFk
b3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5zaGFkb3dCbHVyLCBzdGF0ZSgp
LnNoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgYy0+c2V0TGVnYWN5
U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkuc2hhZG93Qmx1ciwgc3Rh
dGUoKS5zaGFkb3dDb2xvcik7CiAgICAgfSBlbHNlCi0gICAgICAgIGMtPnNldExlZ2FjeVNoYWRv
dyhGbG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJh
bnNwYXJlbnQpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxkRHJh
d1NoYWRvd3MoKSBjb25zdApAQCAtMTQ0OCwxNyArMTQ0OCwxNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCwg
Y29uc3QgRgogICAgIH0KIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERz
dFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3Jt
YWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
LCBibGVuZE1vZGUpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKLSAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wKTsKKyAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBp
ZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAg
ICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0
UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5v
cm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CiAgICAgICAg
IGRpZERyYXcobm9ybWFsaXplZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE1MzYsMTcgKzE1
MzYsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MQ2Fu
dmFzRWxlbWVudCogc291cmNlQ2FudmFzLCBjb25zdAogI2VuZGlmCiAKICAgICBpZiAocmVjdENv
bnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQpKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKLSAg
ICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOworICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52
YXMoKTsKICAgICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0
ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xv
YmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwogICAgICAgICBk
aWREcmF3KGRzdFJlY3QpOwogICAgIH0KIH0KQEAgLTE2MTIsNyArMTYxMiw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8s
IGNvbnN0IEZsb2F0UmVjCiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAg
Yy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8tPnZpZGVvV2lkdGgoKSwg
dmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8t
PnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsK
ICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpAQCAtMTcyNiwyMSArMTcyNiwyMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEludFJlYwogICAgIGMtPmNsaXBPdXQoYnVmZmVyUmVjdCk7CiAg
ICAgYy0+Y2xlYXJSZWN0KGNhbnZhc1JlY3QpOwogICAgIGMtPnJlc3RvcmUoKTsKLSAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWN0Lmxv
Y2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKKyAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoYnVmZmVyLCBidWZmZXJSZWN0LmxvY2F0aW9uKCksIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
KTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9wKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBv
cCk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3RlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCiB7CiAgICAgQVNTRVJUKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUob3ApKTsK
IApAQCAtMTc2Niw3ICsxNzY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgKICAgICBidWZm
ZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9u
KCkueCgpLCAtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwogICAgIGJ1
ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0LndpZHRoKCksIGNyb3BwZWRP
ZmZzZXQuaGVpZ2h0KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3Rp
dmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250
ZXh0KCksIHN0eWxlQ29sb3JTcGFjZSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIAogICAgIGNvbXBvc2l0
ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkBAIC0yNDQwLDggKzI0NDAsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICAgICAgICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKICAgICAgICAgICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgICAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgICAgICAgICAgYy0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgICAgICBjLT5nZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKIAogICAgICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd1JlY3QobWFza1JlY3QpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5pbmZs
YXRlKHNoYWRvd1JhZGl1cyAqIDEuNCk7CkBAIC0yNDUwLDEyICsyNDQ5LDEyIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgICAgIHNoYWRvd09mZnNldCArPSBvZmZzZXQ7CiAK
LSAgICAgICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICAgICAgYy0+c2V0TGVn
YWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAgICAgIGMtPnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGMtPnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGMtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24gKyBvZmZz
ZXQsIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQpA
QCAtMjQ2Nyw5ICsyNDY2LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdU
ZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAK
ICAgICAgICAgaWYgKGZpbGwpCi0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAppbmRleCA4NzNmNjQzZWU4NzE5OWJmNmM0OGE2Mzg0MDJiOTI4NDE1OTQ1M2Q5Li5k
Njk5OWJmM2MzZmUwNmVjMjU3ZDA3MDVjYjkzMDA2ZDM3YzExODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0zNjcsNyArMzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQm
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZShUJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCiAgICAgdm9pZCBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9hcmQo
Q2FudmFzR3JhZGllbnQmIGdyYWRpZW50KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGQzNThhMjE3OTU4ODM5NmJmYjcwYTVmZDdjZWI1
MjgwMjRmZTM5MTkuLmI2ODNhMmVhNjk5ZWJhY2E4YTM2NTIxNzM2ZTdhMDg1MmQ3ZjFjMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0
IEFQSS4KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNv
bG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAg
IENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jbXlrYS0+YywgbV9jbXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+
YSk7CiAjZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NteWthLT5yZ2Jh
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9jbXlrYS0+cmdiYSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29u
dGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215a2Et
PmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwogI2Vs
c2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY215a2EtPnJnYmEsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jbXlrYS0+cmdi
YSk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2
NmJmYzkwNWUyYWNiYzBjMjM4ODU4NzI2ZDg0YjNjZmYwN2U1YmNjLi4zMzBjOTUwNGIwNzY5ZDk0
MDcyMzE3ZGRkMjk5M2QyOThiOWY5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzE3Niw3ICsz
MTc2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJh
d0ltYWdlSW50b0J1ZmZlcihJbWFnZSYgaW1hZ2UsIGkKIAogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBidWYtPmNvbnRleHQo
KS5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICByZXR1cm4gYnVmLT5j
b3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3NDA4MDQw
NzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLjBlY2Y4M2Q5Njk3ZjY2ZDJhZmEzN2JmYmE3ZDFkOWE2
ODY0ZjdkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmUKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7Ci0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgQ29sb3JTcGFjZVNSR0IpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgIGZvciAoYXV0byByZWN0IDogbV9yZWdp
b24tPnJlY3RzKCkpIHsKICAgICAKICAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhkaXJ0eVJl
Y3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEyMjk2NGE3OWVkYmJjNGViYTlk
OTcxM2FlYzUzODU3YjdmNjZlODMuLmI2ZjY5YjU5YTJjODBlMWFiYjM3Y2U1MWI5NzExNDYzMDY4
N2NiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM3MzYsNyArMzczNiw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgYmFzZUJhY2tn
cm91bmRDb2xvcigpKTsKICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3NDksNyArMzc0OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJCiAg
ICAgaWYgKGJhci5pc0N1c3RvbVNjcm9sbGJhcigpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBJbnRSZWN0IHRvRmlsbCA9IGJhci5mcmFtZVJlY3QoKTsKICAgICAgICAgdG9G
aWxsLmludGVyc2VjdChyZWN0KTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QodG9GaWxsLCBiYXNlQmFja2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogICAg
IFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKGNvbnRleHQsIGJhciwgcmVjdCk7CkBAIC00MDE3
LDcgKzQwMTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFJl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGZpbGxXaXRoUmVkKQotICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCkp
OwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdTaXplQWRqdXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDI2Mzc1MTE0NDYwNzU4YWE2NzRh
OGIyMjIzN2NhNWFhMTNkYzllYmUuLjAzNDY4OWFjYjdmOTA5MWQ5MDM3MWQ3MzBkZjkxOWIxNzY0
ZGRkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMzNyw3ICszMzcs
NyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1l
JiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBncgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VS
ZWN0cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAg
IC8vIEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1
KSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lk
dGgsIHRvdGFsSGVpZ2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwpAQCAtMzU2
LDggKzM1Niw4IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJp
ZXMoRnJhbWUmIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyCiAgICAgICAgICAgICBpbnQgYm91
bmRhcnlMaW5lWSA9IGN1cnJlbnRIZWlnaHQgLSAxOwogI2VuZGlmCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d0xpbmUoSW50UG9pbnQoMCwgYm91bmRhcnlMaW5lWSksIEludFBvaW50KHBhZ2VXaWR0aCwgYm91
bmRhcnlMaW5lWSkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxNWEwYmIx
ZDBjMjRkZDMxZWNjMjkzZDQ3ODE2ZDI1YjRiY2FjODMyLi5kZGVkZTY1MWQ4ZDg0NTE3MWM2YjIw
MGU2ZGM2NjFhYjQ3OGY5OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbElj
b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIEludFBvaW50IGljb25HQ1BvaW50ID0g
bV9wYW5TY3JvbGxJY29uUG9pbnQ7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBpY29uR0NQ
b2ludCA9IHBhcmVudCgpLT53aW5kb3dUb0NvbnRlbnRzKGljb25HQ1BvaW50KTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqcGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdD
UG9pbnQpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpwYW5TY3JvbGxJY29uLCBpY29uR0NQb2lu
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgKaW5kZXggZTU0YzQ2YWExY2ZmMjY0NzQ5Yzc5ODQ0OGY1YjRjMDdjYzM5OWYzOS4uY2Fl
NTI5OTQzMmNmOGViODQ4YmMzMDAyZTdhNTU1ZTI5NDVkNTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0
UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9p
ZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQorICAgIHN0YXRpYyB2b2lkIGRlZmF1
bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDcyZjJh
NjM2ZGExOGMwMmI3YzZlY2E5NGY0MDY2NWE4MDBiMmRhN2YuLjQ2ZDllZTY3MmQzNzdmNTgyM2Rj
MTM3ZmYzMjNiNGEzNTlmY2Q1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciYgc2Nyb2xsYmFyKQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSk7CiB9CiAKIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVj
dChTY3JvbGxiYXImIHNjcm9sbGJhcikKQEAgLTI4MSwxMSArMjgxLDExIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAog
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OndoaXRlKTsKICAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgp
KQogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3Zlcmhh
bmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlKTsKICAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDM5MDYzNDJm
NTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQuLjE5MzRiMzU2NTMyNTFlMzgzZjQ4ODU5
YzExNzIwN2U2MmNmODk0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
ZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKIAogICAgIC8vIERyYXcgYSBnZW5l
cmljIFdpcmVsZXNzIFBsYXliYWNrIGljb24uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5jcHAKaW5kZXggOGZjY2RjNWZmNTk4M2ExOGFkYzFkYTdlMTM2ODc4
ZTY4ZWQwNzU2OC4uMzE0ZWVkNTMxNTNhMTcwOTdmYTE5NmU5M2RjNzcwMjQ3MWY0ZWVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5h
bWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAgICAgRmxvYXRTaXplIHdpcmVsZXNzUGxheWJh
Y2tTcmNTaXplKDMyLCAyNC4wMTYpOwogICAgIGZpdENvbnRleHRUb0JveChjb250ZXh0LCB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSwgcmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDAwNTMzYWYzOTdjNzg1OTVk
YmU0MjZiNzc5ODRiNjY0NTIxMmEzYmMuLjNlYTFiNWY4OTQ3OWMxNDQ4ZDIwZDhkNjI1NDllNjU3
MjMxYjhjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTYwNywxMyArNjA3LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0
QW5pbWF0aW9uKCkKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKLSAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICAgICAgSW1h
Z2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKCFtX2NhY2hlZEltYWdlKSB7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LAogICAgICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2Ug
ZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhp
cyByZWxheW91dC4KICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIHN0eWxlQ29sb3JT
cGFjZSwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAg
ICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgIH0K
IAogICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIG1fY2FjaGVkSW1h
Z2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDQwZmM3NGEzOTJkNGQ2Njg5
NzI5ODBiZmMxY2FlNDA5YmUwYzYzZWIuLjg5MWU4YzQyM2NjNTZiYWVkYzQ5Zjg5MzU5N2FkZjFj
YTg1NDJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlk
ZTsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKQEAgLTIw
MSwxMyArMjAxLDEzIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVy
YXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoV0lOR0RJKQogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpOwogI2VuZGlmCiAKICAgICBzaXplX3QgY3VycmVudEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCmluZGV4IGQxZDRlNzI3NzAwZDllMjhjMGNmZGIzNTRlYmI5YzljYWY5ZDE4NzUuLmNm
MmY4MGJhOTQ3YjZlM2M1ZWFkNjRlYjg1ZjU3ZWQ0YjIyY2EyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGludCBkaWZmZXJl
bmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CiB1aW50MTZfdCBmYXN0RGl2
aWRlQnkyNTUodWludDE2X3QpOwogCiAjaWYgVVNFKENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VY
UE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgogCiBp
bmxpbmUgUkdCQTo6UkdCQSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNDM2ODJiMGQ3
ZWU0NzI0OGUyNjRlNWU4YTZiMmQ0NWJlYTc4MjY4NC4uNTdlM2YxYTRmMTkwNmEyNjY5ZmZmZmRk
MjAxNTU5Y2IzZWI1Y2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIENvbXBvcwogCiAgICAgaWYgKHRhcmdldFNpemUgIT0gaW1h
Z2VTaXplKQogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh0YXJnZXRTaXplLndpZHRo
KCkgLyBpbWFnZVNpemUud2lkdGgoKSwgdGFyZ2V0U2l6ZS5oZWlnaHQoKSAvIGltYWdlU2l6ZS5o
ZWlnaHQoKSkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRQb2ludCgpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQo
KSk7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkcwogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9
CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAgZHJh
d0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVm
ZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRl
eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9y
U3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaAppbmRleCA4MDI4MzQ0ODBiZWIzZjUwZTg4OGQwYTM5MzM4N2M1ZWI3YWZlZTg2
Li44YWViYmM1NzM3MTQ2MGNiN2RiMzM0MDg0ZjE0NGRkZGVkNDczMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAog
ICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0lt
YWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAppbmRleCBiMTAyM2IwYWQ5ZTUxMjg5YjUwYjUyYjU1YWZhODc0
ODA0MGRmOGMxLi4wYzAzOGQ5OTYyZjU0MWEwZTRlMjVhMGQ2ODJlZWFmMTNmYjM0YzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
QEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3Zl
cnJpZGUgPSAwOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGY1
Y2ViNzA1MzNhNjNlNThkNDdlOWEyYjlhNjVjYzdlNDUxY2EyN2UuLjM3MjY5MWE5YjJiNzVmZTkz
MWQ1MWZmY2RhMGIxYTQzOTAxOTRkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEdyYWRpZW50
SW1hZ2U6On5HcmFkaWVudEltYWdlKCkKIHsKIH0KIAotdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK3ZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50
IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXpl
IGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHMKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAK
ICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0
LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRl
cm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRl
eCAwNTgyOGY1YTg0OTY4OTk1NGRjYzM4YjY1NzQwMTc2YTU5YjM0ZDlkLi45MjUwOWZiMWVjNTJj
NGY3MzIxNDg3ZTQ4YjhlZmM2ODIzYzVlMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAg
ICAgR3JhZGllbnRJbWFnZShQYXNzUmVmUHRyPEdyYWRpZW50PiwgY29uc3QgRmxvYXRTaXplJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDIzMDlmNWRkNWRkNTZmNjhmMWUxZWU0NmU1Y2UxN2E0NzE2Njc3MWYu
LjM4ODg5YzQ3NDA1ZTMyNzExMmY0Zjk2MTk5Y2QzYWVmMzI4YThkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MTQyLDIwICsxNDIsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmUoKQogICAgIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFp
c2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29s
b3IsIENvbG9yU3BhY2UgZWxsaXBzZUNvbG9yU3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNhdmUoKTsKIAotICAgIHNldFN0cm9r
ZUNvbG9yKHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICBzZXRGaWxsQ29sb3Io
c2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHNldFN0cm9rZUNvbG9yKHNoYWRv
d0NvbG9yKTsKKyAgICBzZXRGaWxsQ29sb3Ioc2hhZG93Q29sb3IpOwogCiAgICAgZHJhd0VsbGlw
c2UoRmxvYXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSArIDEsIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwogCi0gICAgc2V0U3Ryb2tlQ29sb3IoZWxsaXBzZUNvbG9yLCBlbGxpcHNlQ29s
b3JTcGFjZSk7Ci0gICAgc2V0RmlsbENvbG9yKGVsbGlwc2VDb2xvciwgZWxsaXBzZUNvbG9yU3Bh
Y2UpOworICAgIHNldFN0cm9rZUNvbG9yKGVsbGlwc2VDb2xvcik7CisgICAgc2V0RmlsbENvbG9y
KGVsbGlwc2VDb2xvcik7CiAKICAgICBkcmF3RWxsaXBzZShyZWN0KTsgIAogCkBAIC0xNzQsMzQg
KzE3NCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3R5bGUpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHlsZShzdHlsZSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwot
ICAgIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CiAgICAgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCA9IG51bGxwdHI7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVs
bHB0cjsKLSAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKKyAg
ICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
bV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gY29s
b3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRQ
bGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQg
PSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yID0gY29sb3I7Ci0gICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID0g
dHJ1ZTsKICNlbmRpZgotICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Is
IGNvbG9yU3BhY2UpOworICAgIHNldFBsYXRmb3JtU2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQpAQCAtMjA5LDE2ICsy
MDYsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKICAgICBtX3N0YXRl
LnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7
CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9zdGF0ZS5zaGFkb3dD
b2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBjbGVhclBsYXRmb3JtU2hhZG93
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNv
bnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0LCBm
bG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUu
c2hhZG93T2Zmc2V0OwogICAgIGJsdXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7CiAgICAgY29sb3Ig
PSBtX3N0YXRlLnNoYWRvd0NvbG9yOwotICAgIGNvbG9yU3BhY2UgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2U7CiAKICAgICByZXR1cm4gaGFzU2hhZG93KCk7CiB9CkBAIC0yNDEsMTMgKzIzNiwx
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogfQog
I2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX3N0YXRlLmZpbGxDb2xvciA9
IGNvbG9yOwotICAgIG1fc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0g
bnVsbHB0cjsKLSAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQpAQCAtMzc4LDEyICsz
NzIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMo
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewotICAgIGRyYXdJbWFnZShpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0
aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkp
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3Qo
ZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
LnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
RmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5vcmlnaW5hbFNpemUoKSk7CkBA
IC0zOTEsMjkgKzM4NSwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdl
JiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdAogICAgIEZsb2F0UmVj
dCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICNlbmRpZgogICAgICAgICAK
LSAgICBkcmF3SW1hZ2UoaW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uLCBzcmNSZWN0LCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93
UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9y
U3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24pOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
RGVzY3JpcHRpb24pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5
U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
LSAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UuZHJh
d1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICBJbWFnZTo6VGls
ZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCkBAIC00MjEsMzIgKzQxNSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAKICAgICBp
ZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIGRyYXdJbWFnZShp
bWFnZSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5kcmF3
VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yKTsKKyAgICBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgY29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5sb2dp
Y2FsU2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2UubG9naWNhbFNpemUoKSks
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIEZsb2F0
UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2UubG9naWNhbFNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlLmxvZ2ljYWxTaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBjb2xvclNwYWNl
LCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxv
Z2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVy
cG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS5k
cmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC01MDksMjkgKzUwMywy
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgZ3JhZGllbnQuZmlsbCh0aGlzLCByZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHBy
ZXZpb3VzT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7Ci0gICAgZmlsbFJlY3QocmVjdCwgY29sb3IsIHN0eWxl
Q29sb3JTcGFjZSk7CisgICAgZmlsbFJlY3QocmVjdCwgY29sb3IpOwogICAgIHNldENvbXBvc2l0
ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAg
IGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKLSAgICAgICAgcGxhdGZvcm1GaWxsUm91
bmRlZFJlY3QocmVjdCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcGVyYXRpb24oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZpbGxSZWN0KHJlY3Qu
cmVjdCgpLCBjb2xvciwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3BlcmF0aW9uKCksIGJsZW5kTW9k
ZSk7CisgICAgICAgIGZpbGxSZWN0KHJlY3QucmVjdCgpLCBjb2xvciwgY29tcG9zaXRlT3BlcmF0
aW9uKCksIGJsZW5kTW9kZSk7CiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ2LDE1ICs1NDAs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um8KIAogICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxl
ID0gZmlsbFJ1bGUoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAg
ICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNlID0gZmlsbENvbG9yU3BhY2UoKTsKICAgICAK
ICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgIHNldEZpbGxDb2xvcihjb2xvciwg
Y29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGZpbGxQYXRoKHBh
dGgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZpbGxSdWxlKTsKLSAgICBzZXRGaWxsQ29s
b3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFjZSk7CisgICAgc2V0RmlsbENvbG9yKG9s
ZEZpbGxDb2xvcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiOWRjMDIzMDlmNmMzNjYxZmIyNmQ2
NzJjMjVmM2UzMjY5MTk1NDM0Li5iZTIwYTczNzlmZDg0MjkwMDFjYzFjODY1OTM3YTMxNGZlZjYz
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBHcmFwaGljc0NvbnRleHRfaAog
I2RlZmluZSBHcmFwaGljc0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCkBAIC0xNDgsMTAgKzE0Nyw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwogICAg
IFdpbmRSdWxlIGZpbGxSdWxlIHsgUlVMRV9OT05aRVJPIH07CiAKLSAgICBDb2xvclNwYWNlIHN0
cm9rZUNvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0gICAgQ29sb3JTcGFjZSBm
aWxsQ29sb3JTcGFjZSB7IENvbG9yU3BhY2VEZXZpY2VSR0IgfTsKLSAgICBDb2xvclNwYWNlIHNo
YWRvd0NvbG9yU3BhY2UgeyBDb2xvclNwYWNlRGV2aWNlUkdCIH07Ci0KICAgICBmbG9hdCBhbHBo
YSB7IDEgfTsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBv
c2l0ZVNvdXJjZU92ZXIgfTsKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9y
bWFsIH07CkBAIC0yMTQsOSArMjA5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Ryb2tlU3R5
bGUoU3Ryb2tlU3R5bGUpOwogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBzdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KLSAgICBDb2xvclNw
YWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUNvbG9y
U3BhY2U7IH0KIAogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAg
ICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybi5nZXQoKTsgfQpAQCAtMjI3LDkgKzIyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVs
ZTsgfQogICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxs
UnVsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBDb2xvciYpOwogICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yOyB9Ci0gICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yU3BhY2U7IH0KIAogICAgIHZvaWQgc2V0RmlsbFBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYpOwogICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQpAQCAtMjYxLDcgKzI1NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICB2b2lkIGRyYXdQYXRoKGNv
bnN0IFBhdGgmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBjbGlw
VG9OYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgYnVmZmVyU2l6ZSk7CiAgICAgCkBAIC0yODgsNyArMjgxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
Q29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIHZv
aWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImIGVsbGlw
c2VDb2xvciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKTsKICAgICB2b2lkIGRyYXdDb252ZXhQ
b2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFu
dGlhbGlhcyA9IGZhbHNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29u
c3QgUGF0aCYpOwpAQCAtMjk4LDI5ICsyOTEsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKTsK
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7Ci0gICAgdm9p
ZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgdm9pZCBm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENv
bG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1h
Z2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFn
ZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0g
ICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAor
ICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJ
bWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7IH0KQEAgLTM3NiwxMyArMzY5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgYm9vbCBpc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDAp
ICYmIHN1cHBvcnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICAvLyBMZWdhY3kgc2hh
ZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQtYm94LXNoYWRv
dy4KICAgICAvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KLSAg
ICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0TGVnYWN5U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyU2hhZG93KCk7Ci0gICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXplJiwgZmxv
YXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGdldFNoYWRvdyhGbG9h
dFNpemUmLCBmbG9hdCYsIENvbG9yJikgY29uc3Q7CiAKICAgICBib29sIGhhc1Zpc2libGVTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0
YXRlLnNoYWRvd0NvbG9yLmFscGhhKCk7IH0KICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsg
cmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OyB9CkBAIC00NjMsOCArNDU2LDggQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZyYW1lQ29udHJv
bChjb25zdCBJbnRSZWN0JiByZWN0LCB1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGF0ZSk7CiAg
ICAgdm9pZCBkcmF3Rm9jdXNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpOwogICAgIHZvaWQgcGFp
bnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwotICAgIHZv
aWQgZHJhd0JpdG1hcChTaGFyZWRCaXRtYXAqLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpOwotICAgIHZvaWQgZHJh
d0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0bWFwKiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdElu
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFNpemUmIG9yaWdTb3VyY2VT
aXplKTsKKyAgICB2b2lkIGRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiwgY29uc3QgSW50UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CisgICAgdm9pZCBkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRtYXAqLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6ZSk7CiAgICAg
dm9pZCBkcmF3SWNvbihISUNPTiBpY29uLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBVSU5UIGZs
YWdzKTsKICAgICB2b2lkIGRyYXdSb3VuZENvcm5lcihib29sIG5ld0NsaXAsIFJFQ1QgY2xpcFJl
Y3QsIFJFQ1QgcmVjdFdpbiwgSERDIGRjLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2Vsc2UK
QEAgLTUyOSwxNyArNTIyLDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBsYXRmb3JtVGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKIAotICAgIHZvaWQgc2V0UGxhdGZv
cm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0UGxhdGZvcm1TdHJv
a2VTdHlsZShTdHJva2VTdHlsZSk7CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVz
cyhmbG9hdCk7CiAKLSAgICB2b2lkIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYp
OwogCiAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sKTsKICAgICB2b2lk
IHNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCk7CiAgICAgdm9pZCBzZXRQbGF0Zm9y
bUltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCi0gICAg
dm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIGNsZWFyUGxh
dGZvcm1TaGFkb3coKTsKIAogICAgIHZvaWQgc2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CkBAIC01
NTUsNyArNTQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7
CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wm
IHNob3VsZEFudGlhbGlhcywgQ29sb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRlM2Q2MTUyZjY1OGFhMDkwOWVlNzBiMjY5NzAzYmM1Mjhl
NjBjZDMuLjgxZmJiMGYxZTdhY2JmMmYwOGVlZTc1NDI4YjY1OTMxMTdhNmIwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc5LDIxICs3OSwyMSBA
QCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsK
ICAgICBpZiAoIWNvbG9yLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDb21w
b3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY3R4dC5jb21wb3NpdGVPcGVyYXRpb24o
KTsKICAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBv
cCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0
LmZpbGxSZWN0KGRzdFJlY3QsIGNvbG9yLCBzdHlsZUNvbG9yU3BhY2UpOworICAgIGN0eHQuZmls
bFJlY3QoZHN0UmVjdCwgY29sb3IpOwogICAgIGN0eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCi12b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xp
ZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFko
KGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgp
IC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbAogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0
KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9u
KG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0
aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRlc3RS
ZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRp
b24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNj
YWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICAgICAgZHJhdyhjdHh0LCB0b1JlY3QsIGZy
b21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnRUaWxlUmVjdC5zaGlmdFhFZGdlVG8ob25lVGlsZVJlY3QueCgp
KTsKICAgICAgICAgICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbAogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFu
c2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwog
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsK
LSAgICBkcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qs
IGJsZW5kTW9kZSk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwgYmxl
bmRNb2RlKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGFydEFuaW1hdGlvbihEb05vdENh
dGNoVXApOwpAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKIAog
Ly8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5j
ZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCiB2b2lkIElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgc29saWRDb2xv
cigpLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0
eHQsIGRzdFJlY3QsIHNvbGlkQ29sb3IoKSwgb3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvCiAgICAgICAg
IHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAog
ICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0
LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkc3RS
ZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
YXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wLCBkc3RSZWN0KTsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggYTViMWU0YWUzZGNmZTk3NjE2MzBhMzBhNTY0NTI4OGU2
ZDE0NjVjYS4uNDczNzliM2U5MmU5ZTY3NWI3NTkyMzUyMDg1NTZjMzAwYjk4N2RhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
ZGVmaW5lIEltYWdlX2gKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTE1NCw3ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1h
Z2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlV2l0aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBvcmlnaW5hbEltYWdlLCBDb2xvclNwYWNl
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTcxLDcgKzE2OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKICAgICBGbG9hdFJlY3QgYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1w
bGluZyhjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNjYWxlZFNpemUp
IGNvbnN0OwpAQCAtMTg2LDE2ICsxODQsMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElt
YWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgdm9pZCBmaWxsV2l0
aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAKLSAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQg
Zm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0K
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgLCBCbGVu
ZE1vZGUpOwotICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pID0gMDsKKyAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUs
IFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5n
IHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCmluZGV4IDM2NjAzYjc5ZjhkMGE3ZTkyNzA3YzI1YzQ2ZDI0ZmQzZDllNTA1
MzAuLjM2MGNlODY1OTUxOTdlZmEyMzJjYTkwZTY4NzIzNGVmYTBjNWEwYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTM0LDggKzEz
NCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAK
ICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBkMGJhZDMwZTkyNzJkZmM4MWFjNDc2ZjM2ODUxNjYw
YjNjMGRmMjg1Li5hMGY2NDM0ZTg5YTg4OGNiNjk3MDI2YzU2Yzg4YzhlNzczNjZlMDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZs
b2F0U2l6ZSYKICAgICBzZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi12b2lkIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICNpZiBV
U0UoTkVXX1RIRU1FKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICNlbmRp
ZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCB0cnVlKTsK
QEAgLTcyLDE0ICs3MiwxMyBAQCB2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogICAgIHBsYXRmb3Jt
VGhlbWUoKS0+ZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVj
dCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxl
IHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJh
d1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShzcmNS
ZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGF0dGVyblRyYW5zZm9ybSk7CiAgICAgVU5VU0VEX1BB
UkFNKHBoYXNlKTsKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0eWxlQ29sb3JTcGFjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwogICAgIFVOVVNF
RF9QQVJBTShjb21wb3NpdGVPcCk7CiAgICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDZmNGVjZDliNzJiNmMzZjM3Nzc1ZWMzYjkxZGUzMWMwY2Zi
N2E1Y2IuLmQ5ZjBhYzFmMzE2Yzg3NjNmYWI3NzgzNGRlMTI5MjI5NmIzZThhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CmluZGV4IDg1YWVlZWZmNzJlZTI3MGU3NjAwODBkYzYwZWViMmIwNWM4MTc0YTMuLjhhY2JkYTI4
N2FjMjNhZGI4ZmQ1MWRiYjllNWIzMzU1ZDcxMzBlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04NSwxNSArODUsMTQgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9h
dFNpemUmIGxheWVyU2l6ZSkKKyAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxv
YXRTaXplJiBsYXllclNpemUpCiAgICAgewotICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYm
IG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0
Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKKyAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBtX2xhc3RXYXNJbnNldCA9
IGZhbHNlOwogICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CiAgICAgICAgIG1fbGFzdENv
bG9yID0gY29sb3I7Ci0gICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAg
ICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKICAgICAgICAgbV9sYXN0UmFkaWkg
PSByYWRpaTsKICAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gbGF5ZXJTaXplOwpAQCAtMTAxLDE2
ICsxMDAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKLSAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0
ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9s
YXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5k
cyAmJiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFk
aWkpCisgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAm
JiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSB0
cnVlOwogICAgICAgICBtX2xhc3RJbnNldEJvdW5kcyA9IGJvdW5kczsKICAgICAgICAgbV9sYXN0
UmFkaXVzID0gcmFkaXVzOwogICAgICAgICBtX2xhc3RDb2xvciA9IGNvbG9yOwotICAgICAgICBt
X2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKICAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9
IHNoYWRvd1JlY3Q7CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAKQEAgLTE0Niw3ICsx
NDQsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0OwogICAgIEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOwogICAgIENvbG9yIG1fbGFzdENvbG9y
OwotICAgIENvbG9yU3BhY2UgbV9sYXN0Q29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9sYXN0
UmFkaXVzOwogICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CiAgICAgRmxvYXRTaXplIG1fbGFzdExh
eWVyU2l6ZTsKQEAgLTE3MSw5ICsxNjgsOCBAQCBzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lS
YWRpdXMoZmxvYXQgcmFkaXVzKQogfQogI2VuZGlmCiAKLVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK1NoYWRvd0JsdXI6OlNoYWRvd0Js
dXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgOiBtX2NvbG9yKGNvbG9yKQotICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJSYWRpdXMocmFkaXVzKQogICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQogICAgICwgbV9sYXllckltYWdlKDApCkBAIC0xODQsNyArMTgwLDYgQEAgU2hhZG93
Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQsIGNvbnN0IEMKIAogU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgOiBtX2NvbG9yKHN0YXRlLnNoYWRvd0NvbG9yKQot
ICAgICwgbV9jb2xvclNwYWNlKHN0YXRlLnNoYWRvd0NvbG9yU3BhY2UpCiAgICAgLCBtX2JsdXJS
YWRpdXMoc3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1cikKICAgICAsIG1fb2Zmc2V0
KHN0YXRlLnNoYWRvd09mZnNldCkKICAgICAsIG1fbGF5ZXJJbWFnZSgwKQpAQCAtMjA2LDEyICsy
MDEsMTEgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cigpCiB7CiB9CiAKLXZvaWQgU2hhZG93Qmx1
cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJv
b2wgaWdub3JlVHJhbnNmb3JtcykKK3ZvaWQgU2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCiB7CiAgICAgbV9ibHVyUmFkaXVzID0g
cmFkaXVzOwogICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fY29sb3IgPSBjb2xvcjsKLSAg
ICBtX2NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwogICAgIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgPSBpZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwpA
QCAtNDczLDcgKzQ2Nyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0J1ZmZlcihHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAoRmxvYXRSZWN0KG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJTaXplKSk7CiAgICAgfQogICAgIGdy
YXBoaWNzQ29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qo
bV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKG1fY29sb3IpOwogCiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CkBAIC01NzIsNyArNTY2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGMKICAgICBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdC5tb3ZlKG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVy
IGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgYm9vbCBy
ZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1
ZmZlclJlbGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNp
emUpOworICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCku
c2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJS
ZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsK
ICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CkBAIC01ODAsNyArNTc0LDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGMKICAgICAgICAgLy8gQWRkIGEgcGl4ZWwgdG8gYXZv
aWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQuCiAgICAgICAgIHNoYWRvd0NvbnRl
eHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9s
YXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQudHJhbnNsYXRl
KG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICBpZiAoc2hhZG93
ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBzaGFkb3dDb250ZXh0LmZpbGxS
ZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOwogICAgICAgICBlbHNlIHsKQEAgLTYxMCw3ICs2MDQs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdC5t
b3ZlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4g
dGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3Vy
IG5lZWRzCi0gICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24o
KS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhv
bGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0
Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJh
ZGl1cywgQ29sb3I6OmJsYWNrLCBidWZmZXJSZWxhdGl2ZVJlY3QsIGJ1ZmZlclJlbGF0aXZlSG9s
ZVJlY3QsIGhvbGVSZWN0LnJhZGlpKCkpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0
KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dD
b250ZXh0KTsKQEAgLTYyNyw3ICs2MjEsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAogICAgICAgICBzaGFkb3dD
b250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgIHNoYWRv
d0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICAgICAgYmx1clNoYWRvd0J1ZmZlcihleHBh
bmRlZEludFNpemUobV9sYXllclNpemUpKTsKQEAgLTY4MSwxNCArNjc1LDE0IEBAIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uCiAgICAgRmxvYXRSZWN0IHRlbXBsYXRlSG9sZSA9IEZsb2F0UmVjdChl
ZGdlU2l6ZS53aWR0aCgpLCBlZGdlU2l6ZS5oZWlnaHQoKSwgdGVtcGxhdGVTaXplLndpZHRoKCkg
LSAyICogZWRnZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gMiAqIGVkZ2VT
aXplLmhlaWdodCgpKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZl
ciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wg
cmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRT
aGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRl
Qm91bmRzLCB0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpOworICAgIGJvb2wgcmVkcmF3
TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dW
YWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xl
LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIC8v
IERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7
CiAgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKICAgICAg
ICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogCiAg
ICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsK
QEAgLTcyNCw3ICs3MTgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRl
eHQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3Bh
Y2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQpAQCAtNzQ1LDE0ICs3MzksMTQgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICBGbG9hdFJlY3QgdGVtcGxhdGVTaGFkb3cgPSBG
bG9hdFJlY3QoZWRnZVNpemUud2lkdGgoKSwgZWRnZVNpemUuaGVpZ2h0KCksIHRlbXBsYXRlU2l6
ZS53aWR0aCgpIC0gMiAqIGVkZ2VTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSAt
IDIgKiBlZGdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICAvLyBPbmx5IHJlZHJhdyBpbiB0aGUgc2Ny
YXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBtYXRjaCBvdXIgbmVlZHMK
LSAgICBib29sIHJlZHJhd05lZWRlZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFs
dWVzKG1fYmx1clJhZGl1cywgbV9jb2xvciwgbV9jb2xvclNwYWNlLCB0ZW1wbGF0ZVNoYWRvdywg
c2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRl
ZCA9IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgbV9j
b2xvciwgdGVtcGxhdGVTaGFkb3csIHNoYWRvd2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7
CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIHRo
ZSBJbWFnZUJ1ZmZlci4KICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0g
bV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc2hhZG93U3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKIAogICAgICAgICBzaGFkb3dDb250
ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBs
YXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICAKICAgICAgICAgaWYgKHNoYWRv
d2VkUmVjdC5yYWRpaSgpLmlzWmVybygpKQogICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxs
UmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CkBAIC03OTgsMTQgKzc5MiwxNCBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSZQogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93SW50ZXJpb3Ioc2hhZG93Qm91bmRz
LngoKSArIGxlZnRTbGljZSwgc2hhZG93Qm91bmRzLnkoKSArIHRvcFNsaWNlLCBjZW50ZXJXaWR0
aCwgY2VudGVySGVpZ2h0KTsKICAgICAgICAgaWYgKCFzaGFkb3dJbnRlcmlvci5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFw
aGljc0NvbnRleHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
X2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihtX2NvbG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRv
dygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHNoYWRvd0ludGVyaW9y
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKG1fY29sb3IpOwogICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAg
Ly8gTm90ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0
aW5nIGEgSW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKQEAgLTgxNiw0NiArODEwLDQ2IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgLy8gVG9wIHNpZGUuCiAgICAgRmxvYXRSZWN0IHRpbGVS
ZWN0ID0gRmxvYXRSZWN0KGxlZnRTbGljZSwgMCwgdGVtcGxhdGVTaWRlTGVuZ3RoLCB0b3BTbGlj
ZSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCBjZW50ZXJSZWN0LndpZHRoKCksIHRvcFNsaWNlKTsK
LSAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAg
ICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNp
emUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAgdGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRv
bVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRlclJlY3QubWF4WSgpKTsKICAgICBkZXN0
UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRp
bGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1h
Z2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBMZWZ0IHNpZGUuCiAgICAgdGlsZVJl
Y3QgPSBGbG9hdFJlY3QoMCwgdG9wU2xpY2UsIGxlZnRTbGljZSwgdGVtcGxhdGVTaWRlTGVuZ3Ro
KTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSAtIGxlZnRTbGljZSwg
Y2VudGVyUmVjdC55KCksIGxlZnRTbGljZSwgY2VudGVyUmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFJp
Z2h0IHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WCh0ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJpZ2h0
U2xpY2UpOwogICAgIHRpbGVSZWN0LnNldFdpZHRoKHJpZ2h0U2xpY2UpOwogICAgIGRlc3RSZWN0
LnNldFgoY2VudGVyUmVjdC5tYXhYKCkpOwogICAgIGRlc3RSZWN0LnNldFdpZHRoKHJpZ2h0U2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwg
MCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVy
UmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGlj
ZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5
ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBn
cmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0
aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxv
YXRSZWN0KHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgMCwgcmlnaHRTbGljZSwg
dG9wU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QubWF4WCgpLCBj
ZW50ZXJSZWN0LnkoKSAtIHRvcFNsaWNlLCByaWdodFNsaWNlLCB0b3BTbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIEJv
dHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXpl
LndpZHRoKCkgLSByaWdodFNsaWNlLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGlj
ZSwgcmlnaHRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNl
bnRlclJlY3QubWF4WCgpLCBjZW50ZXJSZWN0Lm1heFkoKSwgcmlnaHRTbGljZSwgYm90dG9tU2xp
Y2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qo
MCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9t
U2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNs
aWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm1fbGF5ZXJJbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIH0KIAogCkBAIC04
NzgsNyArODcyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKQogICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93
Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKICAgICBzaGFkb3dDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VJbik7Ci0gICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0
LnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICBzaGFkb3dDb250ZXh0LmZpbGxSZWN0KEZsb2F0
UmVjdCgwLCAwLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7
CiB9CiAKQEAgLTg5NCw3ICs4ODgsNyBAQCBHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJl
Z2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogICAgIC8v
IFdlIHJlc2V0IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1ZXMgaGVyZSwgYmVjYXVzZSB0aGUgYnVm
ZmVyIHdpbGwgbm8gbG9uZ2VyIGNvbnRhaW4KICAgICAvLyBkYXRhIGZyb20gYW55IHByZXZpb3Vz
IHJlY3RhbmdsZSBvciBpbnNldCBzaGFkb3dzIGRyYXduIHZpYSB0aGUgdGlsaW5nIHBhdGguCiAg
ICAgYXV0byYgc2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpOwotICAg
IHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgRmxvYXRSb3VuZGVkUmVjdDo6
UmFkaWkoKSwgbV9sYXllclNpemUpOworICAgIHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93
VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIEludFJlY3QoKSwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIG1fbGF5ZXJJbWFnZSA9IHNjcmF0Y2hC
dWZmZXIuZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwpAQCAtOTE1
LDcgKzkwOSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNv
bnRleHQpOwogCiAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCptX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChy
b3VuZGVkSW50UG9pbnQobV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV9sYXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9sYXllckltYWdlLCBGbG9hdFJlY3Qocm91
bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSk7CiAK
ICAgICBtX2xheWVySW1hZ2UgPSBudWxscHRyOwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRv
bigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKaW5kZXggMjA1MGFiOWNkZmFmMzlmN2M2NjBhMTk3
ZmE1MmViYjBiNTI0OWM1ZC4uZWQxNjZjZmM0MmNkMDRjOTI3MDQzY2FmYTJjNWE3ZjM1ZGU0ZGYy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApA
QCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmx1clNoYWRvdwogICAgIH07CiAK
LSAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUm
IG9mZnNldCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0
IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3Im
KTsKICAgICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgU2hh
ZG93Qmx1cigpOwogCi0gICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIGJvb2wgaWdub3JlVHJhbnNm
b3JtcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9v
bCBpZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVU
cmFuc2Zvcm1zOyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KQEAgLTEwNCw3ICsxMDQsNiBAQCBw
cml2YXRlOgogICAgIFNoYWRvd1R5cGUgbV90eXBlOwogCiAgICAgQ29sb3IgbV9jb2xvcjsKLSAg
ICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9ibHVyUmFkaXVzOwog
ICAgIEZsb2F0U2l6ZSBtX29mZnNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTAz
YzRmYjAyYjljNGVhZGMwMGYzNzU0ZjUzNTA0M2ZlNDY5ZTdmYS4uNTViM2Q0N2U0NjYxYjllZjVi
MzY5N2M1MTkzNjYxODhhZGNhMTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC02NzAs
NyArNjcwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVBVlBsYXllckxheWVyKCkKIAogICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQ
bGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0UGxheWVy
Om1fYXZQbGF5ZXIuZ2V0KCldOwotICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9y
OmNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAg
W21fdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihDb2xvcjo6Ymxh
Y2spXTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fdmlkZW9MYXllciBzZXROYW1lOkAiTWVkaWFQ
bGF5ZXJQcml2YXRlIEFWUGxheWVyTGF5ZXIiXTsKICNlbmRpZgpAQCAtMjM0Nyw3ICsyMzQ3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRl
b091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRw
dXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CiAK
ICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwg
dHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBj
cmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRl
b091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0
cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCA4MDdlZTEzOTUyZjFkM2NhY2IwZjUwYWY5NTE0NjA2YTg1MTFjODY5Li5hZDc5ZTk1MzU3NDlj
Yzc4OTNhNWU4N2JmN2RkN2Y2MjBiYTQ0YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTk4Niw4ICs5
ODYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8g
dGhpcyBiZWNhdXNlIHRoZSBjYWxsIHRvCi0gICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0
aENvbG9yU3BhY2UoKSBiZWxvdyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCisg
ICAgICAgIC8vIEZJWE1FOiBwcm9iYWJseSBkb24ndCBuZWVkIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlIGF0IGFsbCBub3cuCiAgICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKaW5kZXggZjE4MDlmY2YyZGRiZTEwNTMwYThhOGVkZjkw
OGRlNGQ5MTI2YjM1Zi4uNjhiOTU2Mjg0MDVhZTBlMjE2ZTM0MTRmM2ExOGI5MTc2NGI0NGZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNw
cApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50
Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAKICAgICBpbnQg
cmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KHBsYXRm
b3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5ZXIoKS5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAgICAgIFBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgcGxh
dGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3IobV9jb250cm9sbGVyLnRp
bGVEZWJ1Z0JvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgUGxh
dGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCBwbGF0Zm9ybUNBTGF5ZXIsIHJlcGFpbnRDb3VudCwgY2FjaGVkQ0dDb2xvcihtX2NvbnRy
b2xsZXIudGlsZURlYnVnQm9yZGVyQ29sb3IoKSkpOwogCiAgICAgaWYgKG1fY29udHJvbGxlci5z
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsKICAgICAgICAgRmxvYXRSZWN0
IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS54KCksIHBsYXRmb3JtQ0FM
YXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLndp
ZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IDcyMTNiNWI1NzEwYWNm
NjFlZTExODdmM2I5NDU3YWE0MWEyZjY1M2EuLjQzY2Q5ZTQ3ZGQ1OTNmNDk1ZGVlOTdhNWE1MjUw
NDA1ZTVhMmYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRy
YXdSZXBhaW50Q291bnRlcnMoQ0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29uCiAgICAgaWYgKGJv
cmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ0FDRkxheWVyR2V0Qm9y
ZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQotICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBj
YWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yKDI1NSwgMCwgMCkpOwog
CiAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBvd25l
cigpLCBkcmF3Q291bnQsIGJhY2tncm91bmRDb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CmluZGV4IGY1ZTNkZTBlNTM0YjAxNmVkZjYxYjQwY2U0ZmExYTUyOTVkNGE3NzQuLmNkNTdlZTQ4
NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiAgICAgY2hlY2tGb3JT
b2xpZENvbG9yKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKK3ZvaWQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAogICAgIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0
aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29u
c3QgRmxvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZHN0LCBzb2xpZENvbG9y
KCksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29u
dGV4dCwgZHN0LCBzb2xpZENvbG9yKCksIG9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGE0MmI1NGQzODJjNDkyYjUwNDg2MTkz
MzAwMGQzZmQyMTM0ZDg4NGIuLjMzYzgwMDY2MDJhOWIzYjdjYWM4ZWE2YTAxMGQ3NmJjNWFkNzA3
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTIyNCw3ICsyMjQsNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIHBsYXRmb3Jt
Q29udGV4dCgpLT5zaGFkb3dCbHVyKCkuc2V0U2hhZG93VmFsdWVzKEZsb2F0U2l6ZShtX3N0YXRl
LnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5z
aGFkb3dDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7CiB9CiAKQEAgLTQ1MSw3ICs0NTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fp
cm9QYXRoKCp0aGlzKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTcyNCwxMyArNzIzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUo
ZmxvYXQgeCwgZmxvYXQgeSkKICAgICBtX2RhdGEtPnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25z
dCBDb2xvciYpCiB7CiAgICAgLy8gQ2Fpcm8gY29udGV4dHMgY2FuJ3QgaG9sZCBzZXBhcmF0ZSBm
aWxsIGFuZCBzdHJva2UgY29sb3JzCiAgICAgLy8gc28gd2Ugc2V0IHRoZW0ganVzdCBiZWZvcmUg
d2UgYWN0dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKQogewogICAg
IC8vIENhaXJvIGNvbnRleHRzIGNhbid0IGhvbGQgc2VwYXJhdGUgZmlsbCBhbmQgc3Ryb2tlIGNv
bG9ycwogICAgIC8vIHNvIHdlIHNldCB0aGVtIGp1c3QgYmVmb3JlIHdlIGFjdHVhbGx5IGZpbGwg
b3Igc3Ryb2tlCkBAIC03OTgsNyArNzk3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBtX2RhdGEtPnNldENUTSh0
cmFuc2Zvcm0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3co
RmxvYXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29uc3QmLCBDb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYg
c2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0JikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC04MTMsNyArODEyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQsIENvbG9y
IGNvbnMKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLnNldFNoYWRvd1ZhbHVl
cyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2hhZG93T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc2hhZG93Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCkBAIC0xMDE5LDcgKzEwMTcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgY2Fpcm9f
c2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwMzcsNyArMTAzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3Iu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDU5LDcgKzEwNTcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhh
dmUgYW4gaW1hZ2UgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAzZTUyMTNmODZkYTY1
MTJkZTYxZGZhNWJmOWY2NWFlNzFjODJlM2RmLi4yNTZkMWNjODMxM2JhOGIwNzE4N2M3NTBiMWM5
NjQ2NzJkZjhlMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDE5ICsxNjUsMTkg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbWFza1JlY3QpIGNvbnMKICAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgQmFja2lu
Z1N0b3JlQ29weSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/
IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3
SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3As
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlT
Y2FsZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQorICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCiB7
CiAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RS
ZWN0KTsKKyAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgZGVzdFJlY3QpOwogfQogCiB2b2lkIElt
YWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4m
IGxvb2tVcFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCBlNGM2M2EzNDZlMjJkZmIzNGVjZWJiNzcyNjNi
NzRlMzc3N2IwZTk0Li4xMWU1N2I0YmQxYzA4NWVjNDE4NzA5ZGU0N2VmYTgyYjkyNzdhMjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUNhaXJvLmNwcApAQCAtNDIsOSArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
LSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGNv
bnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOworICAgIGNv
bnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAgICAgaWYgKGltYWdlT2Jz
ZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cAppbmRleCA1OWE4Y2RiZGU2ZGE1MjllYzUxMWNjYzIyMGM0NzI4MDgxMDMyYmNjLi5iZjZmMjg2
OTM2ZmZhY2ExNDU1ZjRhNTg2MGU3MTBhNjM5ZDVjMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtMjAzLDcg
KzIwMyw3IEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFy
cmF5KCkKICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKIHsK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKQEAg
LTIyNiw3ICsyMjYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7Ci0gICAgICAgIGZpbGxX
aXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgc29saWRDb2xvcigpLCBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RS
ZWN0LCBzb2xpZENvbG9yKCksIGNvbXBvc2l0ZU9wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGlt
YWdlU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGN0eHQuZHJhd05hdGl2ZUltYWdl
KGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigp
KQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IDhhN2ZlYmVkNTQw
ODM3ZWQxMjMwMGQ3YjI4YjM3YmFiNzg2ZmZmMzUuLjlhNDhhMzMxZGYzMDgzNzBhM2NlMzM1ODZh
YzVlMjVmYzhhZGRlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCkBAIC05OSwyNiArOTksMjYgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JS
ZWYgY29sb3IpCiAgICAgbV92YWxpZCA9IHRydWU7CiB9CiAKLXN0YXRpYyBDR0NvbG9yUmVmIGxl
YWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3Rh
dGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIENH
RmxvYXQgY29tcG9uZW50c1s0XTsKICAgICBjb2xvci5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNv
bXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwotICAgIHJldHVybiBD
R0NvbG9yQ3JlYXRlKGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgY29tcG9uZW50cyk7
CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50
cyk7CiB9CiAKLXRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitDR0NvbG9yUmVmIGNhY2hlZENH
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHN3aXRjaCAoY29sb3IucmdiKCkpIHsK
ICAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDogewotICAgICAgICBzdGF0aWMgQ0dDb2xvclJl
ZiB0cmFuc3BhcmVudENHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50Q0dDb2xvciA9IGxlYWtDR0NvbG9y
KGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHRyYW5zcGFyZW50Q0dDb2xvcjsKICAgICB9CiAgICAg
Y2FzZSBDb2xvcjo6YmxhY2s6IHsKLSAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgYmxhY2tDR0Nv
bG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBzdGF0aWMgQ0dD
b2xvclJlZiBibGFja0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvcik7CiAgICAgICAgIHJldHVy
biBibGFja0NHQ29sb3I7CiAgICAgfQogICAgIGNhc2UgQ29sb3I6OndoaXRlOiB7Ci0gICAgICAg
IHN0YXRpYyBDR0NvbG9yUmVmIHdoaXRlQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgd2hpdGVDR0NvbG9yID0gbGVha0NH
Q29sb3IoY29sb3IpOwogICAgICAgICByZXR1cm4gd2hpdGVDR0NvbG9yOwogICAgIH0KICAgICB9
CkBAIC0xMzQsNyArMTM0LDcgQEAgdGVtcGxhdGU8Q29sb3JTcGFjZSBjb2xvclNwYWNlPiBzdGF0
aWMgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2wKICAgICAgICAgICAg
IHJldHVybiBjYWNoZWRDR0NvbG9yc1tpXS5nZXQoKTsKICAgICB9CiAKLSAgICBDR0NvbG9yUmVm
IG5ld0NHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CisgICAgQ0dDb2xv
clJlZiBuZXdDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IpOwogCiAgICAgc3RhdGljIHNpemVf
dCBjdXJzb3I7CiAgICAgY2FjaGVkUkdCQVZhbHVlc1tjdXJzb3JdID0gY29sb3IucmdiKCk7CkBA
IC0xNDUsMjAgKzE0NSw2IEBAIHRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGlj
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sCiAgICAgcmV0dXJuIG5l
d0NHQ29sb3I7CiB9CiAKLUNHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0Nv
bG9yPENvbG9yU3BhY2VEZXZpY2VSR0I+KGNvbG9yKTsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdC
OgotICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xvclNwYWNlU1JHQj4oY29sb3IpOwot
ICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29s
b3I8Q29sb3JTcGFjZUxpbmVhclJHQj4oY29sb3IpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
aW5kZXggOTRhYWFhOTMwNWIzZTBkNDZiZWI1OWQ4MjE2OTgxOGU2MTA0MmE3My4uMzdhNzI4OTkw
OTM4MTdjYjg5YTMxMWUwYzA5N2MzZmU0MmIwYjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
QEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQu
c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdl
SGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCks
IGltYWdlU2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDM2MGUzODdjYzgzMWE2MzA3
NzY0MzNiZjYxNWNjOGJjYzgzZThkNWYuLjJhYzk0YjJkNTEyN2ZkMDhlZjVmZmMyOWRiMTMxNzAw
ZmNjYjU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTYzLDE2ICs2MywxNyBAQCB1c2luZyBX
VEY6OkdlbmVyaWNIYXNoVHJhaXRzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2
b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29s
b3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENHRmlsbENvbG9yKENH
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgQ0dDb250ZXh0
U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9y
U3BhY2UpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2Fj
aGVkQ0dDb2xvcihjb2xvcikpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9yKENH
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3N0YXRpYyB2b2lkIHNldENHU3Ryb2tlQ29sb3IoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKSk7CisgICAgQ0dD
b250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xv
cikpOwogfQogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBzb29uLgogQ0dDb2xv
clNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQogewogICAgIHN0YXRpYyBDR0NvbG9y
U3BhY2VSZWYgZGV2aWNlU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKQEAg
LTgxLDkgKzgyLDYgQEAgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKQog
CiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQogewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICByZXR1cm4gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKICAgICBzdGF0
aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gT3V0LW9mLWRh
dGUgQ0cgaW5zdGFsbGF0aW9ucyB3aWxsIG5vdCBob25vciBrQ0dDb2xvclNwYWNlU1JHQi4gVGhp
cyBsb2dpYyBhdm9pZHMKQEAgLTkzLDcgKzkxLDYgQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xv
clNwYWNlUmVmKCkKICAgICAgICAgc1JHQlNwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gc1JHQlNwYWNlOwotI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9T
KQpAQCAtMTI3LDggKzEyNCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQo
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCkKICAgICBzZXRQYWludGluZ0Rpc2FibGVkKCFjZ0NvbnRl
eHQpOwogICAgIGlmIChjZ0NvbnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250
ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgICAgICBzZXRQbGF0Zm9ybUZp
bGxDb2xvcihmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7Ci0gICAgICAgIHNldFBsYXRm
b3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCkpOworICAgICAgICBzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOwogICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZVRo
aWNrbmVzcyhzdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGNvbnZlcnRJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRHZXRJ
bnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIH0KQEAgLTE2Myw3
ICsxNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQog
ICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZShpbWFnZVB0cik7CiAKQEAgLTI1NCw5ICsyNTEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxv
YXRTaQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBhZGp1c3RlZERlc3RS
ZWN0LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CiAK
LSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIGltYWdlID0gSW1hZ2U6OmltYWdl
V2l0aENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSk7Ci0KICAgICAvLyBE
cmF3IHRoZSBpbWFnZS4KICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWRE
ZXN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogfQpAQCAtMjgwLDcgKzI3NCw3IEBAIHN0YXRpYyB2b2lk
IHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghcGF0
dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwLDkg
KzMxNCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsK
ICAgICB9CiAKLSAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNwYWNlLgotICAgIHN1YkltYWdlID0g
SW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2Uoc3ViSW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFj
ZSk7Ci0KICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNh
dXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcs
CiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQg
bWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKQEAgLTM1MCw3
ICszNDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICBpZiAoIXBhdHRlcm4p
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsK
KyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKG51bGxwdHIpKTsKIAogICAgICAgICBDR0Zsb2F0
IGFscGhhID0gMTsKICAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRD
RihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJuLmdl
dCgpLCAmYWxwaGEpKTsKQEAgLTM5NCw3ICszODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAg
ICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3RzIHRvIHNpbXVsYXRlIHRoZSBzdHJv
a2Ugb2YgYSBib3JkZXIuCiAgICAgICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigp
OwogICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkpCi0gICAgICAgICAg
ICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgc3Ryb2tlQ29sb3IoKSk7
CiAgICAgICAgIENHUmVjdCByZWN0c1s0XSA9IHsKICAgICAgICAgICAgIEZsb2F0UmVjdChyZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKICAgICAgICAg
ICAgIEZsb2F0UmVjdChyZWN0LngoKSwgcmVjdC5tYXhZKCkgLSBib3JkZXJUaGlja25lc3MsIHJl
Y3Qud2lkdGgoKSwgYm9yZGVyVGhpY2tuZXNzKSwKQEAgLTQwMyw3ICszOTQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpCiAgICAgICAgIH07CiAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0cyhjb250
ZXh0LCByZWN0cywgNCk7CiAgICAgICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gc3Ryb2tlQ29sb3Io
KSkKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgZmls
bENvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRG
aWxsQ29sb3IpOwogICAgIH0KIH0KIApAQCAtNDMyLDcgKzQyMyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50CiAgICAgaWYgKGRyYXdzRGFzaGVkTGluZSkgewogICAgICAgICAvLyBGaWd1cmUg
b3V0IGVuZCBwb2ludHMgdG8gZW5zdXJlIHdlIGFsd2F5cyBwYWludCBjb3JuZXJzLgogICAgICAg
ICBjb3JuZXJXaWR0aCA9IHN0cm9rZVN0eWxlID09IERvdHRlZFN0cm9rZSA/IHRoaWNrbmVzcyA6
IHN0ZDo6bWluKDIgKiB0aGlja25lc3MsIHN0ZDo6bWF4KHRoaWNrbmVzcywgc3Ryb2tlV2lkdGgg
LyAzKSk7Ci0gICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCksIHN0
cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9r
ZUNvbG9yKCkpOwogICAgICAgICBpZiAoaXNWZXJ0aWNhbExpbmUpIHsKICAgICAgICAgICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIEZsb2F0UmVjdChwb2ludDEueCgpLCBwb2ludDEueSgp
LCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRGaWxsUmVj
dChjb250ZXh0LCBGbG9hdFJlY3QocG9pbnQxLngoKSwgcG9pbnQyLnkoKSAtIGNvcm5lcldpZHRo
LCB0aGlja25lc3MsIGNvcm5lcldpZHRoKSk7CkBAIC02MDcsNyArNTk4LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQogICAgIGlmICghcGxhdGZvcm1QYXR0ZXJu
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBwYXR0
ZXJuU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oMCkpOworICAgIFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ3JlYXRlUGF0dGVybihudWxscHRyKSk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3Bh
Y2UoY2dDb250ZXh0LCBwYXR0ZXJuU3BhY2UuZ2V0KCkpOwogCiAgICAgY29uc3QgQ0dGbG9hdCBw
YXR0ZXJuQWxwaGEgPSAxOwpAQCAtODM3LDE3ICs4MjgsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBDR0NvbnRleHRGaWxsUmVj
dChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBDb2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKLSAgICBDb2xv
clNwYWNlIG9sZENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwogCi0gICAgaWYgKG9sZEZp
bGxDb2xvciAhPSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAg
IHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBpZiAob2xk
RmlsbENvbG9yICE9IGNvbG9yKQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xv
cik7CiAKICAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAm
JiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7
IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIENHQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBkcmF3T3duU2hhZG93KTsKQEAgLTg2NCwyMSAr
ODU0LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgaWYgKGRyYXdPd25TaGFkb3cp
CiAgICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCi0gICAgaWYgKG9sZEZpbGxDb2xvciAh
PSBjb2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCi0gICAgICAgIHNldENHRmls
bENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CisgICAgaWYgKG9s
ZEZpbGxDb2xvciAhPSBjb2xvcikKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xk
RmlsbENvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBj
b2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENvbG9y
IG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwotICAgIENvbG9yU3BhY2Ugb2xkQ29sb3JTcGFj
ZSA9IGZpbGxDb2xvclNwYWNlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8
IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29u
dGV4dCwgY29sb3IsIGNvbG9yU3BhY2UpOworICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3Ip
CisgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIGNvbG9yKTsKIAogICAgIGJvb2wgZHJh
d093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3co
KSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRv
d0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIGRyYXdPd25TaGFkb3cpOwpAQCAtOTA2LDExICs4OTUsMTEgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJlY3QsIGNvbnMKICAgICBpZiAoZHJhd093blNoYWRvdykKICAgICAgICAgc3RhdGVTYXZl
ci5yZXN0b3JlKCk7CiAKLSAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9y
U3BhY2UgIT0gY29sb3JTcGFjZSkKLSAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgb2xk
RmlsbENvbG9yLCBvbGRDb2xvclNwYWNlKTsKKyAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9y
KQorICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI3LDEw
ICs5MTYsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogCiAgICAgV2luZFJ1bGUgb2xkRmls
bFJ1bGUgPSBmaWxsUnVsZSgpOwogICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigp
OwotICAgIENvbG9yU3BhY2Ugb2xkRmlsbENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwog
ICAgIAogICAgIHNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgc2V0RmlsbENvbG9yKGNv
bG9yLCBjb2xvclNwYWNlKTsKKyAgICBzZXRGaWxsQ29sb3IoY29sb3IpOwogCiAgICAgLy8gZmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3QgYXJl
IGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3VuZCBp
bnNpZGUgdGhlIGhvbGUuCiAgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRD
b250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOwpAQCAtOTQ5LDcgKzkzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAg
ICAgICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKG9sZEZp
bGxSdWxlKTsKLSAgICBzZXRGaWxsQ29sb3Iob2xkRmlsbENvbG9yLCBvbGRGaWxsQ29sb3JTcGFj
ZSk7CisgICAgc2V0RmlsbENvbG9yKG9sZEZpbGxDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNTksNyArMTA0Nyw3IEBA
IHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5OSw3ICsxMDg3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBi
bHVyLCBjb24KICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgQ0dDb250ZXh0U2V0
U2hhZG93KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMp
OwogICAgIGVsc2UKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQs
IENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hlZENHQ29sb3Io
Y29sb3IsIGNvbG9yU3BhY2UpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KGNvbnRleHQsIENHU2l6ZU1ha2UoeE9mZnNldCwgeU9mZnNldCksIGJsdXJSYWRpdXMsIGNhY2hl
ZENHQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZv
cm1TaGFkb3coKQpAQCAtMTM5NiwxMiArMTM4NCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5
JgogICAgIH0KIAogICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAg
ICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGxvY2FsU3Ryb2tlQ29sb3Is
IHN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBsb2NhbFN0cm9rZUNvbG9yKTsKIAogICAgIENHQ29udGV4dEZpbGxSZWN0cyhwbGF0
Zm9ybUNvbnRleHQoKSwgZGFzaEJvdW5kcy5kYXRhKCksIGRhc2hCb3VuZHMuc2l6ZSgpKTsKIAog
ICAgIGlmIChmaWxsQ29sb3JJc05vdEVxdWFsVG9TdHJva2VDb2xvcikKLSAgICAgICAgc2V0Q0dG
aWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgp
KTsKKyAgICAgICAgc2V0Q0dGaWxsQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGZpbGxDb2xvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiBs
aW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKQEAgLTE1MDEsMTEgKzE0ODksMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5n
TW9kZUZsYWdzIG1vZGUpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgc2V0Q0dTdHJva2VDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgY29sb3IsIGNvbG9y
U3BhY2UpOworICAgIHNldENHU3Ryb2tlQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZs
b2F0IHRoaWNrbmVzcykKQEAgLTE1MTUsMTEgKzE1MDMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKICAgICBDR0Nv
bnRleHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCksIHN0ZDo6bWF4KHRoaWNrbmVzcywg
MC5mKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENHRmlsbENv
bG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvciwgY29sb3JTcGFjZSk7CisgICAgc2V0Q0dGaWxs
Q29sb3IocGxhdGZvcm1Db250ZXh0KCksIGNvbG9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRl
eCAzMjIzMjAyYjcyNzg4MjcyZjE2ODAzMTY0YjYzYjE3YmRkYTI5YTBjLi43ZDMwZmFiM2RjOTI2
OWU5Y2I3OTZhNDUxMTRiZGQxYzAyYWQxZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMjI4LDExICsyMjgs
OCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9p
ZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIGJvb2wpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7Ci0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/
IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7Ci0KICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8
IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOyAvLyBEcmF3aW5nIGludG8gb3VyIG93biBi
dWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgpAQCAtMjQxLDEwICsyMzgsMTAgQEAgdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwKIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0
OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0
aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwg
bV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSht
X3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAtMjUyLDE0ICsyNDksMTQg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKICAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJh
dGVkQ29udGV4dCgpKSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSB8
fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBpZiAo
UmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAvLyBEcmF3
aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAgICAgICAg
ICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVj
dCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywg
b3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXJpbmcgPSBjb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICAgICAgICAgIGltYWdlRm9yUmVuZGVyaW5nLT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwg
ZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAg
ICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGFkanVzdGVkU3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRl
c3RSZWN0LCBibGVuZE1vZGUpOworICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENv
bnRleHQsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggNzVhYmJmOGNkMTY0Y2Q1
Mzk1OGQ0ZmQ2NmNhMTNhOTQxODY5ODc0OS4uZjNkZDAyMmE5MDVhNjJlNGMxMTgzOWFkZDRjYTZm
MGIwOTM2MWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTQ1LDM1ICs0NSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZShDR0ltYWdl
UmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBDR0NvbG9y
U3BhY2VSZWYgb3JpZ2luYWxDb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2Uob3JpZ2lu
YWxJbWFnZSk7Ci0KLSAgICAvLyBJZiB0aGUgaW1hZ2UgYWxyZWFkeSBoYXMgYSAobm9uLWRldmlj
ZSkgY29sb3Igc3BhY2UsIHdlIGRvbid0IHdhbnQgdG8KLSAgICAvLyBvdmVycmlkZSBpdCwgc28g
cmV0dXJuLgotICAgIGlmICghb3JpZ2luYWxDb2xvclNwYWNlIHx8ICFDRkVxdWFsKG9yaWdpbmFs
Q29sb3JTcGFjZSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpKSkKLSAgICAgICAgcmV0dXJuIG9y
aWdpbmFsSW1hZ2U7Ci0KLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9y
U3BhY2VEZXZpY2VSR0I6Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbEltYWdlOwotICAgIGNhc2Ug
Q29sb3JTcGFjZVNSR0I6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGVDb3B5
V2l0aENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSkpOwotICAg
IGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbEltYWdlLCBsaW5lYXJSR0JDb2xvclNw
YWNlUmVmKCkpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gb3JpZ2luYWxJbWFnZTsKLX0KLQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3R4dC5kcmF3UGF0dGVybigqdGhpcywgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2Us
IG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBkZXN0UmVjdCwg
YmxlbmRNb2RlKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggODJhM2E1YjRkZWE4
ZjRmNjYyNWEyZWFmNTQ3M2QzYWVkZWM2NGU1YS4uYmZjZWEyODg5ODc3OTk2YzBlNjhkMjdhOTY4
YTcxNzM1YjZkNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFtX2Rv
Y3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKG9wKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikKLSAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkc3RSZWN0KTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBkc3RSZWN0KTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAppbmRl
eCA3ZmZkNjAzYjZmMWJmMzkwMzE1NTRjYjBkMDdlMzNmNWY5MmNkOGJmLi45YTRjMWU5ZTBiNTFl
MzlkNTBhNDRiMTliOTE1NTViZDliMDU2OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNp
emUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2Nh
ZGVDb2NvYS5tbQppbmRleCA4MzljYTAzZDkzNmY1MmQ2MzQwNWIyNWVlOTlmODk4MDZjZWJkNzIz
Li5kMWRjYmQ2NmVlYWVjMzZlZGExZjc4MmE1MjRjMGJjNTA1YjVkMmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRl
Q29jb2EubW0KQEAgLTMzMyw5ICszMzMsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAg
IEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xv
ciBzaGFkb3dDb2xvcjsKLSAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0gICAgQ29s
b3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKLSAgICBj
b250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CkBAIC0zNTIsMTQgKzM1MCwxNCBAQCB2b2lkIEZvbnRD
YXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgRwogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7CiAgICAgICAgIENvbG9yIHNoYWRv
d0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93
Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAy
NTUpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRv
d0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNl
dC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1z
LCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBk
b3duIGlzIG5lZ2F0aXZlLgogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgPyAtMSA6IDEpOwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQo
c2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQp
CiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQoc2hhZG93VGV4
dFggKyBzeW50aGV0aWNCb2xkT2Zmc2V0LCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwg
Z2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0Vm
ZmVjdCkKQEAgLTM3MCw3ICszNjgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogICAgICAg
ICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGlj
Qm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2Vz
KGZyb20pKSwgbnVtR2x5cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAg
IGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Is
IHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogI2lmICFQTEFURk9STShJT1MpCiAjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGVk
ZWY1NzgwMTgyZmNjODBmZTU3OTUzOTEyZDRhZDk1YTM3NmEwM2MuLmZmOTExMWM0YjYwMzI1NDZk
NDc0M2MxYzRlZjA3ODViM2M0NjE0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNzUsOCArNzUsOCBAQCB2b2lk
IEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8
fCAhaW1hZ2VCdWZmZXIyKQogICAgICAgICByZXR1cm47CiAKLSAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRl
ckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2lj
YWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21v
ZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCA3OGZmZGNlNGQ1OTFh
ZDZhODEyMmZlNjM4ODIzOTNmZjU1MWFlNzcyLi42ODYwZDdkZGZlNmEwMTViZWY5ODQ2MGM4YmNi
N2ViY2M0ZmU1NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2
b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1
ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIGlmIChpbkJ1ZmZlcikK
LSAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0lt
YWdlQnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVz
dWx0SW1hZ2UtPmxvZ2ljYWxTaXplKCkpOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggOWExNTZmODk0ZGYxNDNlZThlMzg1ODY4NzhkMDcw
OTIyOGUxYmZlOS4uODg4ODQ2YWNjZWQwMjIyYjhlY2I4OTQ3MTRlMmJlMTZiNGUxZDEwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZF
Q09NUE9TSVRFX09QRVJBVE9SX09WRVI6Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjogewogICAgICAgICAvLyBBcHBsaWVzIG9u
bHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAgLTI5NCwyMSArMjk0LDIxIEBAIHZvaWQg
RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIEludFJlY3QgYWRq
dXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBhYnNvbHV0ZVBhaW50UmVj
dCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IGRlc3RpbmF0aW9u
UmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJl
Y3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjItPmFic29sdXRlUGFpbnRSZWN0
KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3Qs
IHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwg
c291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291
cmNlMlJlY3QpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3Vy
Y2VJbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJB
VE9SX09VVDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0g
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+
bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBv
c2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1Ip
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcAppbmRleCBkY2U1YWFlMjVmMjk3YWE4OGI2ZjhhODNjYmMyZGE4NGIwMGNlOTZlLi5j
MGU4OTQyNDE1OTFmNzM0M2ZjNzZlNGVlOTQ2NWQzNDNiODJhYWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRkVE
cm9wU2hhZG93LmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRkVHYXVz
c2lhbkJsdXIuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKQEAgLTkzLDEwICs5MiwxMCBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgcmVzdWx0Q29udGV4dCA9IHJlc3Vs
dEltYWdlLT5jb250ZXh0KCk7CiAgICAgcmVzdWx0Q29udGV4dC5zZXRBbHBoYShtX3NoYWRvd09w
YWNpdHkpOwotICAgIHJlc3VsdENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3Vs
dENvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFnZSwgZHJhd2luZ1JlZ2lvbldpdGhP
ZmZzZXQpOwogICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEoMSk7CiAKLSAgICBTaGFkb3dCbHVy
IGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywg
b2Zmc2V0LCBtX3NoYWRvd0NvbG9yKTsKIAogICAgIC8vIFRPRE86IERpcmVjdCBwaXhlbCBhY2Nl
c3MgdG8gSW1hZ2VCdWZmZXIgd291bGQgYXZvaWQgY29weWluZyB0aGUgSW1hZ2VEYXRhLgogICAg
IEludFJlY3Qgc2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+aW50ZXJuYWxTaXpl
KCkpOwpAQCAtMTA3LDEwICsxMDYsMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShQcmVtdWx0aXBsaWVk
LCBzcmNQaXhlbEFycmF5LmdldCgpLCBzaGFkb3dBcmVhLnNpemUoKSwgc2hhZG93QXJlYSwgSW50
UG9pbnQoKSwgSW1hZ2VCdWZmZXI6OkJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0pOwogCiAg
ICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4p
OwotICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJz
b2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvcik7CiAgICAgcmVzdWx0
Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyKTsK
IAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCpzb3VyY2VJbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBkcmF3aW5nUmVnaW9uKTsK
IH0KIAogdm9pZCBGRURyb3BTaGFkb3c6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKaW5kZXggN2VkNDI5ZjAzMzk2
ZTgyYzg5NmI1MzY3MDIyNmQwMThhYjIzNzJhNC4uZThkYThkMzFmNDU1YmQ5ZWRkOGNiMDlhM2Ni
ZmUxOWM3YTQxMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgRkVGbG9vZDo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29s
b3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29sb3IoKS5yZ2IoKSwgZmxvb2RPcGFj
aXR5KCkpOwotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBjb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxsUmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yKTsKIH0K
IAogdm9pZCBGRUZsb29kOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4IGEwMmQ5ZmRhZTI0NWE1ZmVkYzUx
OWM4MzAwYzAzMzFkMGQ3MjFiZTcuLjMyY2YyNTRkNWVjYWQzMTQ2M2JhNTNkZGE0Mjg2NTk5NDZj
NDU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZFTWVyZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoaSk7CiAgICAgICAgIGlm
IChJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpKQotICAgICAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIs
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVPZmZzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU9mZnNldC5jcHAKaW5kZXggMThhMmU3OTFkNTgzYmFjZGNkMWM3YmU2ZDA1N2Y1MGI5
YjUxOTFjYS4uZGRlZjU4NzkxY2ZhMjQ4NThjYWZhNmI0MjAzYzBjZDI0NWNlMWQ4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNl
dC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5hcHBseUhvcml6b250
YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGljYWxTY2FsZShtX2R5KSk7Ci0gICAgcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRy
YXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFT2Zm
c2V0OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcAppbmRleCBhMTg3Yjc0ZmZmZmRkNWE5NzQ0ZGM2OTdjY2M1ZWVhYzIw
ZWRmMzAyLi5jNzA0NGEwMjcxYTRiZTJlNmQ5YmNhYTJlMDBlZTYyNWU3MmRjOWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250
ZXh0KCk7CiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRp
b24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwotICAgIHRpbGVJbWFnZUNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CisgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsK
IAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXgg
MWUzYjkxYTIyNDQ4ZjE4Y2FhNDE2ZmIxMDZhMjg0MGEwMDJhMzFiYi4uNzI0ODkzYmFhMDU4MjFm
MWJlNTlhZTc2ZjVlNmQxZWNmZDUwOGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKQEAgLTU4LDggKzU4
LDggQEAgdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVj
dCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBv
aW50KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgIGZpbHRlckNvbnRleHQuZmlsbFJl
Y3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2spOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKCppbWFnZUJ1ZmZlciwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7
CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXgg
ZGY0ZWU2ZjA3OWM1NDU3NTQ1OWU4NDM2OTI2NTlkNmNkMzMwMGViYi4uNjFiYjFiOGJjOTI1Mzc2
Njc1MWY2NjNhNDQ3Yzk1NWMxZmZlMTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnNvdXJjZUltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4
dCgpLmRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UsIEludFBvaW50KCkpOwogfQogCiB2b2lk
IFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDBlMDU1ZTRiZmYyYjQzMmU5YTBiZmRmMDFj
MDJkY2NhNDIzODg1Y2QuLjBlY2Q2YzI2YmZmNzc4YzFkNzI3NTA4ZDczMWM3MzNmZGZiOWI2MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxJbWFn
ZSo+KGdzdEltYWdlLT5pbWFnZSgpLmdldCgpKSkKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
KmltYWdlLCBDb2xvclNwYWNlU1JHQiwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRl
Q29weSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2Ut
PnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IGJlMzUwNzYwOTMwY2FhYmNjMWNmZWYz
YmEyNGMyMTQyOTA3MTA2OWUuLjIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDliODFkOWQ3
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoSW50ZXJwb2xhdGlvbkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdl
KG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNy
Y1JlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCA2OTgyODU0ODY5MWEwNTg4
MTllZWM3NmY0Mjk3ZWY1NmMyNjhkYzY3Li4wNjQyNDNiNGI5YmYxY2Y3YTQ4YzAwOTliMjBkYWM3
OThiNWIxYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBtX3JlY3QsIG1fcmVjdCk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KG1faW1hZ2UsIG1fcmVjdCwgbV9yZWN0KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBk
YXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCBmZTI4MTUxMjFhNTcwNDQ2NzYxMGE0NTA2
NjRkMTk0OGQ4MTNmOGZkLi5kYjg2Zjk1MTgyYTAwMjA1ZWMxYWNhZmI0ODAyZWQyMTRlNjcwNGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKG1fc3VwcG9ydHNBbHBoYSkgewogICAgICAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9zaXpl
KSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX3NpemUpLCBDb2xv
cjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBhMjdhMmVmNmZl
Y2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1MjU2MWFmY2E2Li5kYmJmYzZiZGNlNDUyODY3NmJlNTg3MjYz
ZmRhZDBkODMzZTQzNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTgzLDE3ICsxODMsMTUgQEAgdm9pZCBGb250Q2Fz
Y2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
Rm9udCYgZm9udCwKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRv
d0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xv
clNwYWNlOwotICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAog
ICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9k
ZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0Js
dXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFw
aGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7
CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hh
ZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lk
IGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5j
bGVhclNoYWRvdygpOwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQu
ZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGlj
c0NvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9y
KHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVl
KCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dD
b2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dG
aWxsQ29sb3IpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHRyYW5z
bGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hh
ZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhl
IFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KICAgICAgICAgZmxv
YXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRv
d09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSA/IC0xIDogMSk7CkBAIC0yMDMsNyArMjAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9u
dCwKICAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50
LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQu
c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhz
V2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNf
Y2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBo
cyk7CiAgICAgICAgIH0KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxs
Q29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IpOwogICAgIH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
Z0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSArIHRy
YW5zbGF0aW9uLmhlaWdodCgpKTsKQEAgLTIxNCw3ICsyMTIsNyBAQCB2b2lkIEZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250
JiBmb250LAogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKICAgICB3a1Jlc3RvcmVG
b250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggMjc0MjI3Yjk2YWVkZjA4YTM0MWI0YzIzMDgx
Y2MwM2I4YjZlNDE3OC4uYTg3M2Q4MzFhZGJhNTU3NWEwZDQwMjg5ZDExM2U1OTdiNTZmYmFmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC04Miw4ICs4Miw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKICAgICBzZXRQ
YWludGluZ0Rpc2FibGVkKCFtX2RhdGEtPm1fY2dDb250ZXh0KTsKICAgICBpZiAobV9kYXRhLT5t
X2NnQ29udGV4dCkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGlu
IHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxD
b2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xv
cihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRQbGF0Zm9y
bUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CisgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Io
c3Ryb2tlQ29sb3IoKSk7CiAgICAgfQogfQogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
aW50IHdpZHRoLCBpbnQKIAogICAgIGZsb2F0IHJhZGl1cyA9ICh3aWR0aCAtIDEpIC8gMi4wZjsK
ICAgICBvZmZzZXQgKz0gcmFkaXVzOwotICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5p
c1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSA6IDA7
CisgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29s
b3IoY29sb3IpIDogbnVsbHB0cjsKIAogICAgIENHTXV0YWJsZVBhdGhSZWYgZm9jdXNSaW5nUGF0
aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0
cy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAppbmRleCAzZThmNzdkMGNm
MWY3MGY3Y2Y3ZWM3YTY2NzZmMTE0MjhkOWM1ZGMyLi4yZmNiNzYzYjg1MTkyNmU3ZjhhYTViMzli
OTZhMDY0NTU0OWQ3MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKQEAgLTg1
LDggKzg1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChIREMgZGMsIGJv
b2wgaGFzQWxwaGEpCiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRz
IGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZp
bGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VD
b2xvcihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNlKCkpOworICAgICAgICBzZXRQbGF0
Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSk7CisgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29s
b3Ioc3Ryb2tlQ29sb3IoKSk7CiAgICAgfQogICAgIGlmIChjcikKICAgICAgICAgY2Fpcm9fZGVz
dHJveShjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKaW5kZXggMDgzNDcwN2RhOWJhZjcxMWNiZjcyODE3MzZmMjUyMmY3ZjEx
YTc2NS4uNjJkNDk4MDIyYzFmNjgyZTJkNGIzZjY4ZjFkZWQ5ZGQ4NDM4MzU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApA
QCAtNzYsOSArNzYsOSBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9
IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0
aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUs
IENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNv
cHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAg
ICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVhc2UoY2dDb250ZXh0KTsKQEAgLTg2
LDcgKzg2LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJt
cCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2
b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1Np
emUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFtZXMg
PSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwCmluZGV4IGM0MzQ4MGIzYjJkNWFiZjQyYmZjOTI2YWE3YmY4ODUyNjY1ODYy
YjYuLjI5YTIwMjNkYjYzYTkxNDM0YzM5NDhlYWE1NTIzYmI2MWZlODEwNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5j
cHAKQEAgLTc5LDkgKzc5LDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShI
QklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKIAogICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQotICAgICAgICBkcmF3RnJh
bWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29t
cG9zaXRlQ29weSk7CisgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpz
aXplLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3Np
dGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
IAogICAgIC8vIERvIGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC04
OSw3ICs4OSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBi
bXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsKICAgICBzaXplX3QgZnJhbWVz
ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kp
IHsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogICAgICAgICBp
ZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndp
ZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJh
bWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0
eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1Np
emUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNy
Y1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJl
bnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJh
dyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCks
IGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXgg
YTcxYjgyOTk0Njg1OGI5N2Y2Y2U5N2I0Y2IzNzAxY2MwYmFiYzY4My4uZDhkMTA1NThiMmZkMzUx
YjZkNDFiNjI4ODNmYzA5MzY3OWFlMjg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBMZWdhY3lU
aWxlQ2FjaGU6OmRyYXdMYXllcihMZWdhY3lUaWxlTGF5ZXIqIGxheWVyLCBDR0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZnJhbWUub3JpZ2luLngsIGZyYW1lLm9y
aWdpbi55KTsKLSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQs
IGNhY2hlZENHQ29sb3IoY29sb3JGb3JHcmlkVGlsZUJvcmRlcihbbGF5ZXIgdGlsZUdyaWRdKSwg
Q29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRo
Q29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvckZvckdyaWRUaWxlQm9yZGVyKFtsYXll
ciB0aWxlR3JpZF0pKSk7CiAgICAgICAgIAogICAgICAgICBDR1JlY3QgbGFiZWxCb3VuZHMgPSBb
bGF5ZXIgYm91bmRzXTsKICAgICAgICAgbGFiZWxCb3VuZHMuc2l6ZS53aWR0aCA9IDEwICsgMTIg
KiBzdHJsZW4odGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUdyaWRUaWxlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVHcmlkVGlsZS5tbQppbmRleCAyYTlhNWZjYWRiZGI2MWQ5YmFmMDVjN2Q1MTA3YzljZmJi
YTliYmJjLi4zMGE3ZGJjYjk2Y2Q2NDZlMWM1YTk2Mzc4OGRmZWUwMDNlNTk1ZGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWRUaWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUubW0KQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIExlZ2FjeVRpbGVHcmlkVGlsZTo6c2hvd0JvcmRlcihib29s
IGZsYWcpCiB7CiAgICAgTGVnYWN5VGlsZUxheWVyKiBsYXllciA9IG1fdGlsZUxheWVyLmdldCgp
OwogICAgIGlmIChmbGFnKSB7Ci0gICAgICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRD
R0NvbG9yKG1fdGlsZUdyaWQtPnRpbGVDYWNoZSgpLmNvbG9yRm9yR3JpZFRpbGVCb3JkZXIobV90
aWxlR3JpZCksIENvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICAgICAgW2xheWVyIHNldEJvcmRl
ckNvbG9yOmNhY2hlZENHQ29sb3IobV90aWxlR3JpZC0+dGlsZUNhY2hlKCkuY29sb3JGb3JHcmlk
VGlsZUJvcmRlcihtX3RpbGVHcmlkKSldOwogICAgICAgICBbbGF5ZXIgc2V0Qm9yZGVyV2lkdGg6
MC41Zl07CiAgICAgfSBlbHNlIHsKICAgICAgICAgW2xheWVyIHNldEJvcmRlckNvbG9yOm5pbF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBmNmVjOTA5ZThiMjJjZGVhNzBl
YWU0ODFlN2M2ODRkMjJkMjZiZDAxLi4zZTJhOGQ2MjJhOWM1NTcwN2QyOTIyMmQ5NjJmNTNjOGMz
NjUzZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE2NSw3ICsxNjUs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1
bGxzY3JlZW4oKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJUaHJlYWRS
dW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7Ci0gICAgICAgIFt2
aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJD
b3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsK
KyAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRD
R0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogICAgICAgICBtX21vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CiAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCA1ZmIwNTJk
NDU2N2RhMDBiZDgyZGUyMWM5YWQ2OTAxMDU1ZDVkOTE5Li40MTZkNWRkOTU1Njc5YmI4MzZlNDI5
MjExODgwYzJhYjcxMTA5NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
SW1hZ2VNYWMubW0KQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3QXRQb2ludChO
U1N0cmluZyAqc3RyaW5nLCBOU1BvaW50IHBvaW50LCBOU0ZvbnQgKmZvbnQsIE5TQ29sb3IgKgog
ICAgICAgICBDR0Zsb2F0IGJsdWU7CiAgICAgICAgIENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtb
dGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2Vd
IGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVl
biAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUs
IGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSkpOwogICAgICAgICAKICAgICAg
ICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQo
cG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
CmluZGV4IGU5M2Q4NzJlMzY2YTM3NTIzMjZkMDJjY2ZiODJmMDE2NDM4YWQ1MDYuLjljZmQwNDg5
OTMyY2ZlNTY4MWZjMWFiMDBiNzAzNDFhMTM3NWJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTU0Niw3ICs1NDYsNyBAQCB2
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQoQ0FMYXll
ciAqbGF5ZXIsIGNvbnN0IENvbG9yJgogICAgIHN0YXRpYyBDR0NvbG9yUmVmIGNhY2hlZExpbmVu
QmFja2dyb3VuZENvbG9yID0gbGluZW5CYWNrZ3JvdW5kQ29sb3IoKS5sZWFrUmVmKCk7CiAgICAg
Ly8gV2Ugb3BlcmF0ZSBvbiB0aGUgQ0FMYXllciBkaXJlY3RseSBoZXJlLCBzaW5jZSBHcmFwaGlj
c0xheWVyIGRvZXNuJ3QgaGF2ZSB0aGUgY29uY2VwdAogICAgIC8vIG9mIHBhdHRlcm4gaW1hZ2Vz
LCBhbmQgd2Uga25vdyB0aGF0IFdlYkNvcmUgd29uJ3QgdG91Y2ggdGhpcyBsYXllci4KLSAgICBs
YXllci5iYWNrZ3JvdW5kQ29sb3IgPSBjdXN0b21CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpID8g
Y2FjaGVkQ0dDb2xvcihjdXN0b21CYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
IDogY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29sb3I7CisgICAgbGF5ZXIuYmFja2dyb3VuZENvbG9y
ID0gY3VzdG9tQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29sb3IoY3VzdG9t
QmFja2dyb3VuZENvbG9yKSA6IGNhY2hlZExpbmVuQmFja2dyb3VuZENvbG9yOwogfQogCiB2b2lk
IFNjcm9sbGJhclRoZW1lTWFjOjpyZW1vdmVPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIg
KmxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IGU3NTkx
YmVkYmY0ZDVlMGQ2OWU3MGQ3M2U3MDQyOWVkZjgxYmExNWIuLmYxZTIxMTNjZjdhYTUxMTExZTBj
NGZlNzcwMWM3MTQ1MTkxYTFjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KQEAgLTY5Miw3ICs2OTIsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNS
aW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdyYXBoaWNzQ29udAogICAgICAg
ICAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpKTsKICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IGRyYXdDZWxsT3JGb2N1
c1JpbmdJbnRvUmVjdFdpdGhWaWV3KGNlbGwsIGltYWdlQnVmZmVyRHJhd1JlY3QsIHZpZXcsIGRy
YXdCdXR0b25DZWxsLCBkcmF3Rm9jdXNSaW5nKTsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VTUkdCLCByZWN0LmxvY2F0
aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgpKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCByZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAgICAgcmV0dXJu
IG5lZWRzUmVwYWludDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJp
dmF0ZS5jcHAKaW5kZXggYjA1M2M0MmJhYTlmYTFkNDZiZmJjOTJkODc5MzBiZjIwZjlkMzk4Ni4u
NmI2NTY2ODhlZTkwMGQ3Y2JhYTc5MWM2YTc5MjczNDIzYjM0ZGNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7
CiAgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgICAgIEludFJl
Y3QgcGFpbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBhaW50UmVjdCwgQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChwYWlu
dFJlY3QsIENvbG9yOjpibGFjayk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKaW5kZXggOTk1NDQ3YjU2ODAx
MDM4Y2ZmZTMzMTU4OWM3NzY0MGJjZmZjODE0YS4uOWFkNzU3ZjNlYmE1NzI2YjFkMjFjNWFkNGVk
Y2RjMTk5YjY4ZDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
Y3JvbGxiYXJUaGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBAIGludCBTY3JvbGxiYXJU
aGVtZU1vY2s6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSkKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xs
YmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9s
bGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogQ29sb3IoMHhGRkUwRTBFMCkpOwog
fQogCiB2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3Qp
CiB7CiAgICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QodGh1bWJSZWN0LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5KTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCA3
ZjNmZTM0NjFmMzZmMjE0YzE2ODVmYTQ2YzgzNWUxN2Q1MjA0MTQ1Li44ZTRjZDg5ZDZkOWJlYmMy
MjhmOGMzMjcxYTI5ZjdiOGU0N2QyMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRS
ZW5kZXJpCiAgICAgc3RhdGljIGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcigxNDAsIDE0MCwg
MTQwKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERy
YWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVjdCByZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNrZ3JvdW5k
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNr
Z3JvdW5kQ29sb3IpOwogIAogICAgIC8vIERyYXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3Qg
Q29sb3IgdG9wQ29sb3IoMCwgMCwgMCwgMjU1KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IGVlZGY2
ZmM2ZjM1ZmVkNGY0YjQyOGQ4OThkOWRmMjI4YzFkM2I4NDAuLjUzNDkxY2I3ZWEwNzdlMjA0ZTAw
OGZkNWY0YWY1MWJhZmJmN2M4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
b3B1cE1lbnVXaW4uY3BwCkBAIC02MzIsMTggKzYzMiwxOCBAQCB2b2lkIFBvcHVwTWVudVdpbjo6
cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIAogICAgICAgICAvLyBE
cmF3IHRoZSBiYWNrZ3JvdW5kIGZvciB0aGlzIG1lbnUgaXRlbQogICAgICAgICBpZiAoaXRlbVN0
eWxlLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChpdGVtUmVjdCwg
b3B0aW9uQmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoaXRlbVJlY3QsIG9wdGlvbkJhY2tncm91bmRDb2xvcik7CiAKICAg
ICAgICAgaWYgKGNsaWVudCgpLT5pdGVtSXNTZXBhcmF0b3IoaW5kZXgpKSB7CiAgICAgICAgICAg
ICBJbnRSZWN0IHNlcGFyYXRvclJlY3QoaXRlbVJlY3QueCgpICsgc2VwYXJhdG9yUGFkZGluZywg
aXRlbVJlY3QueSgpICsgKGl0ZW1SZWN0LmhlaWdodCgpIC0gc2VwYXJhdG9ySGVpZ2h0KSAvIDIs
IGl0ZW1SZWN0LndpZHRoKCkgLSAyICogc2VwYXJhdG9yUGFkZGluZywgc2VwYXJhdG9ySGVpZ2h0
KTsKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2VwYXJhdG9yUmVjdCwgb3B0aW9uVGV4
dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3Qoc2VwYXJhdG9yUmVjdCwgb3B0aW9uVGV4dENvbG9yKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nIGl0ZW1UZXh0ID0gY2xpZW50KCktPml0ZW1U
ZXh0KGluZGV4KTsKIAogICAgICAgICBUZXh0UnVuIHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFs
bG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHls
ZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKG9wdGlvblRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKG9wdGlvblRleHRDb2xvcik7CiAgICAgICAgIAogICAgICAgICBGb250
Q2FzY2FkZSBpdGVtRm9udCA9IGNsaWVudCgpLT5tZW51U3R5bGUoKS5mb250KCk7CiAgICAgICAg
IGlmIChjbGllbnQoKS0+aXRlbUlzTGFiZWwoaW5kZXgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKaW5kZXggZGY1N2U1YTNl
NmQ5MjcyYTBhOWMyZWY5ODcxMjk5M2VlOGFmMzlmMi4uZjFjZWYwOWY1Yzc4MTg4MTY4NmU5NDNm
NTY3YTUxZjBhNTk0YzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBk
b0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29ucwogewogICAgIFRleHRSdW4gcnVuKHRleHQpOwogCi0gICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGNvbG9yKTsKICAgICBpZiAoaXNPbmVMZWZ0VG9SaWdodFJ1bihydW4pKQogICAgICAg
ICBmb250LmRyYXdUZXh0KGNvbnRleHQsIHJ1biwgcG9pbnQpOwogICAgIGVsc2UKQEAgLTcxLDcg
KzcxLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKICAgICAgICAgSW50UG9pbnQgdW5kZXJs
aW5lUG9pbnQocG9pbnQpOwogICAgICAgICB1bmRlcmxpbmVQb2ludC5tb3ZlKGJlZm9yZVdpZHRo
LCAxKTsKIAotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAgICAg
ICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHVuZGVybGluZVBvaW50LCB1bmRlcmxpbmVkV2lk
dGgsIGZhbHNlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcAppbmRleCAyZThmZDBiYjBhMmUwYmE0M2I2ZWM1NTYwYTQzNGQ2YmZmZmRiNWJmLi4zNjg1
Y2JlMTJiYmYxMjllNTAyNzNmZWI1ZjFiMTkwMzkxMDM1NWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTQ2LDExICs0NiwxMSBAQCB2b2lkIEVsbGlwc2lz
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBMYQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5l
U3R5bGUoKTsKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CiAgICAgaWYgKHRleHRDb2xv
ciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0
ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcih0ZXh0Q29sb3IpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYg
KGxpbmVTdHlsZS50ZXh0U2hhZG93KCkpIHsKICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coTGF5
b3V0U2l6ZShsaW5lU3R5bGUudGV4dFNoYWRvdygpLT54KCksIGxpbmVTdHlsZS50ZXh0U2hhZG93
KCktPnkoKSksCi0gICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5yYWRpdXMoKSwg
bGluZVN0eWxlLnRleHRTaGFkb3coKS0+Y29sb3IoKSwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5yYWRpdXMoKSwgbGluZVN0eWxl
LnRleHRTaGFkb3coKS0+Y29sb3IoKSk7CiAgICAgICAgIHNldFNoYWRvdyA9IHRydWU7CiAgICAg
fQogCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgICAgIC8v
IFNlbGVjdCB0aGUgY29ycmVjdCBjb2xvciBmb3IgcGFpbnRpbmcgdGhlIHRleHQuCiAgICAgICAg
IENvbG9yIGZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSA/IHBhaW50SW5m
by5mb3JjZWRUZXh0Q29sb3IoKSA6IGJsb2NrRmxvdygpLnNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpOwogICAgICAgICBpZiAoZm9yZWdyb3VuZC5pc1ZhbGlkKCkgJiYgZm9yZWdyb3VuZCAhPSB0
ZXh0Q29sb3IpCi0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmb3JlZ3JvdW5kLCBs
aW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KGZvcmVncm91bmQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMg
TFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgpAQCAtNjks
NyArNjksNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYQogCiAgICAgLy8gUmVzdG9yZSB0aGUg
cmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC5maWxsQ29s
b3IoKSkKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUu
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yKTsK
IAogICAgIGlmIChzZXRTaGFkb3cpCiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgIExheW91dFJlY3Qg
c2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBw
YWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgpLCAwLCByb290Qm94LnNlbGVj
dGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxlLCBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0
aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBp
eGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0
aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBmZDUw
OWU4ZWFkNTk2OTdkNDYwZDM4ZDMxM2UzZTA0MTZmYTY1ODc3Li42NTAyOTljNDgwZmZlNTRhZDgz
MmU4MTU5M2IxZTkwYTJkNzEwNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTQyOSwxMCArNDI5LDggQEAgdm9pZCBGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkMKICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLT5vdXRwdXRS
ZWN0KCk7CiAgICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWludE9mZnNl
dC55KCkpOwogCi0gICAgaWYgKEltYWdlQnVmZmVyKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXItPm91
dHB1dCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm91
dHB1dEJ1ZmZlciwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwKLSAgICAgICAgICAgIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3QsIG1fcmVuZGVy
TGF5ZXItPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7Ci0gICAg
fQorICAgIGlmIChJbWFnZUJ1ZmZlciogb3V0cHV0QnVmZmVyID0gZmlsdGVyLT5vdXRwdXQoKSkK
KyAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0QnVmZmVy
LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJl
cigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgZmlsdGVyLT5jbGVh
ckludGVybWVkaWF0ZVJlc3VsdHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcAppbmRleCAwMjFhMWFiNjY5MWRiYjExN2FlMjAzZTM2MjEyNDgzOGZlN2Uz
OWJiLi5jNzhiMmNhZTYwMzgxODQ2ZWU2OTAwM2NlMjMwZWUyMDIxODc5ODViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC02OTcsNyArNjk3LDcgQEAg
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICAgICAgYyA9IENvbG9yKDB4ZmYgLSBjLnJlZCgp
LCAweGZmIC0gYy5ncmVlbigpLCAweGZmIC0gYy5ibHVlKCkpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29u
dGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjLCBzdHlsZS5jb2xvclNwYWNlKCkpKTsgLy8g
RG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4
dCwgVGV4dFBhaW50U3R5bGUoYykpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgIAog
ICAgIC8vIElmIHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgbGV0IHRoZSB0aGluZyBiZWluZyBwYWlu
dGVkIGluIHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMgb3duIGhpZ2hsaWdodC4KQEAg
LTcyNCw3ICs3MjQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYgogCiAgICAgTGF5b3V0UmVj
dCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgp
IC0gZGVsdGFZLCBtX2xvZ2ljYWxXaWR0aCwgc2VsZWN0aW9uSGVpZ2h0KTsKICAgICBmb250LmFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQ
b3MpOwotICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0
aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpLCB0ZXh0UnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVj
dGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKSwgdGV4dFJ1bi5sdHIoKSksIGMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CiAgICAgVU5VU0VEX1BBUkFNKGJveE9yaWdpbik7CkBAIC03NDUsMTMgKzc0NSwxMyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRgogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIENvbG9yIGNvbXBvc2l0aW9uQ29sb3IgPSBDb2xvcjo6
Y29tcG9zaXRpb25GaWxsOwotICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0
UGFpbnRTdHlsZShjb21wb3NpdGlvbkNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpKTsgLy8gRG9u
J3QgZHJhdyB0ZXh0IGF0IGFsbCEKKyAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwg
VGV4dFBhaW50U3R5bGUoY29tcG9zaXRpb25Db2xvcikpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQg
YWxsIQogCiAgICAgTGF5b3V0VW5pdCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlw
cGVkTGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9t
KCkgOiBsb2dpY2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKICAgICBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3QgPSBMYXlvdXRSZWN0KGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0
YVksIDAsIHNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1
Y3RUZXh0UnVuKHN0eWxlLCBmb250KTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JU
ZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHNQb3MsIGVQb3MpOwotICAgIGNvbnRleHQuZmls
bFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlv
blJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVu
Lmx0cigpKSwgY29tcG9zaXRpb25Db2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250
ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihz
ZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwg
dGV4dFJ1bi5sdHIoKSksIGNvbXBvc2l0aW9uQ29sb3IpOwogfQogCiBzdGF0aWMgU3Ryb2tlU3R5
bGUgdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSBk
ZWNvcmF0aW9uU3R5bGUpCkBAIC05NDksNyArOTQ5LDYgQEAgdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50
JgogICAgICAgICBzZXRDbGlwID0gdHJ1ZTsKICAgICB9CiAKLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpOwogICAgIGJvb2wgc2V0U2hh
ZG93ID0gZmFsc2U7CiAKICAgICBkbyB7CkBAIC05NjEsNyArOTYwLDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaW50IHNoYWRvd1ggPSBpc0hv
cml6b250YWwoKSA/IHNoYWRvdy0+eCgpIDogc2hhZG93LT55KCk7CiAgICAgICAgICAgICBpbnQg
c2hhZG93WSA9IGlzSG9yaXpvbnRhbCgpID8gc2hhZG93LT55KCkgOiAtc2hhZG93LT54KCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93WCwgc2hhZG93WSAt
IGV4dHJhT2Zmc2V0KSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBjb2xvclNw
YWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dYLCBz
aGFkb3dZIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCkp
OwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRvdyA9IHNo
YWRvdy0+bmV4dCgpOwogICAgICAgICB9CkBAIC05NzAsNyArOTY5LDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JgogCiAgICAgICAgIC8vIFRoZXNlIGRlY29yYXRpb25zIHNob3VsZCBtYXRjaCB0
aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRp
b25zKCkKICAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkg
ewotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmVDb2xvciwgY29s
b3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZUNv
bG9yKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25T
dHlsZVRvU3Ryb2tlU3R5bGUodW5kZXJsaW5lU3R5bGUpKTsKICAgICAgICAgICAgIGNvbnN0IGlu
dCB1bmRlcmxpbmVPZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHlsZS50ZXh0
VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIHRoaXMsIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKTsKIApAQCAtOTk0LDcgKzk5Myw3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3Iob3ZlcmxpbmVDb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lQ29sb3IpOwogICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShvdmVybGluZVN0eWxl
KSk7CiAgICAgICAgICAgICBzd2l0Y2ggKG92ZXJsaW5lU3R5bGUpIHsKICAgICAgICAgICAgIGNh
c2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKQEAgLTEwMTUsNyArMTAxNCw3IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAo
ZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpIHsKLSAgICAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2hDb2xvciwgY29sb3JTcGFjZSk7CisgICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoQ29sb3IpOwogICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VT
dHlsZShsaW5ldGhyb3VnaFN0eWxlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGxpbmV0aHJvdWdo
U3R5bGUpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKQEAg
LTExMjcsNyArMTEyNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvCiAKICAgICBDb2xvciBj
b2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIoKS50aGVtZSgpLnBsYXRmb3Jt
QWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRoZW1lKCkucGxh
dGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICB1cGRhdGVHcmFwaGljc0Nv
bnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSkp
OyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQorICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChj
b250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb2xvcikpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxs
IQogCiAgICAgLy8gVXNlIHNhbWUgeSBwb3NpdGlvbmluZyBhbmQgaGVpZ2h0IGFzIGZvciBzZWxl
Y3Rpb24sIHNvIHRoYXQgd2hlbiB0aGUgc2VsZWN0aW9uIGFuZCB0aGlzIGhpZ2hsaWdodCBhcmUg
b24KICAgICAvLyB0aGUgc2FtZSB3b3JkIHRoZXJlIGFyZSBubyBwaWVjZXMgc3RpY2tpbmcgb3V0
LgpAQCAtMTE0Miw3ICsxMTQxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRj
aE1hcmtlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG8KICAgICBpZiAo
c2VsZWN0aW9uUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRleHQu
ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVj
dGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4u
bHRyKCkpLCBjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwg
Y29sb3IpOwogfQogICAgIAogdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2Vy
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCBi
YWNrZ3JvdW5kKQpAQCAtMTI2MSw3ICsxMjYwLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmwK
ICAgICBzdGFydCArPSAxOwogICAgIHdpZHRoIC09IDI7CiAKLSAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKHVuZGVybGluZS5jb2xvciwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1bmRlcmxpbmUuY29sb3IpOwogICAgIGNvbnRl
eHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwogICAgIGNvbnRleHQuZHJhd0xp
bmVGb3JUZXh0KEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hPcmlnaW4ueSgp
ICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRoLCByZW5kZXJlcigpLmRv
Y3VtZW50KCkucHJpbnRpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCA3MzFhMGExNTY3NjVlMGE2NjNkODgxOTY2ZDdhOWMxYWU4NmIxN2FhLi45
M2M3MDZjMDcwNDViYjZiYjllNTRjODk1YzY1ZDAzNjk2MWY1ZGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE5NzMsNyArMTk3Myw3IEBAIExheW91dFJl
Y3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ss
IGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9n
aWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRS
ZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQp
KTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxs
UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0x
OTkwLDcgKzE5OTAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVj
dGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVj
dCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJs
b2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAg
ICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzZWxPYmotPnN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpLCBzZWxPYmotPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICByZXR1cm4g
Z2FwUmVjdDsKIH0KIApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9j
azo6bG9naWNhbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0
IEwKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5
c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIExheW91dFJlY3Qocm9vdEJsb2Nr
TG9naWNhbExlZnQsIHJvb3RCbG9ja0xvZ2ljYWxUb3AsIHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCwg
bG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggMmUwYzc2MjY0NDJjMjBiZTQ3ZGI3OGJjN2VmMWIxMDc5ZmRiMzU2
ZS4uMzU3M2MxM2M4YTMxZDFkNDhhNjQ3Yzk5NjVmYjczMzlmN2NjNWVlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludENsaXBwaW5nTWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRS
ZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKLSAgICBwYWludEluZm8uY29u
dGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIENvbG9yOjpibGFjaywg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qo
c25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNrKTsKIH0KIAogdm9pZCBSZW5k
ZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UmVjdCYgcGFpbnRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZDY5YzI3YjQyNDcyYzg0OWQxOGI1ZmJmNDA5
YjkyNzVmMWRiNmZmMC4uODM4ZGE4NTQ3ODdmYmEyNjIwNzdiMzU0NzU2MmNlNjUxN2ZiMDI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCkBAIC01ODksOSArNTg5LDkgQEAgc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHMKIAogICAgIEZs
b2F0U2l6ZSBzaGFkb3dPZmZzZXQoYm94U2hhZG93LT54KCksIGJveFNoYWRvdy0+eSgpKTsKICAg
ICBpZiAoIWJveFNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgY29udGV4dC5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNv
bG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSk7CiAg
ICAgZWxzZQotICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJv
eFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hh
ZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFn
ZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5
b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCkBAIC02ODAsMTUgKzY4MCwxNSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBw
ZWRCb3JkZXIgPSBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsCiAgICAgICAgICAg
ICAgICAgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKS5waXhlbFNuYXBwZWRSb3Vu
ZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChw
aXhlbFNuYXBwZWRCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4
ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2F2ZSgpOwogICAgICAgICAgICAgICAgIGNsaXBSb3VuZGVkSW5uZXJS
ZWN0KGNvbnRleHQsIHBpeGVsU25hcHBlZFJlY3QsIHBpeGVsU25hcHBlZEJvcmRlcik7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5m
aWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IsIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxT
bmFwcGVkUmVjdCwgYmdDb2xvcik7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgxNywx
MCArODE3LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAgaWYg
KCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQogICAgICAgICAgICAgICAgICAg
ICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7CiAKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmFzZUNvbG9yLCBDb21w
b3NpdGVDb3B5KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBi
Z0NvbG9yLmFscGhhKCkpIHsKICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVy
YXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5j
b21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJh
Y2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBv
cGVyYXRpb24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJl
Y3RGb3JQYWludGluZywgYmdDb2xvciwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAgICB9CkBAIC04MzUsMTIgKzgz
NSwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+
Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1h
c2soYmdMYXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVtaW5hbmNlKTsKICAgICAgICAg
ICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShj
b250ZXh0LCAqaW1hZ2UsIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAg
ICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBn
ZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2Uo
KSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobWFza0ltYWdl
ICYmIGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewotICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqbWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwg
Q29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCptYXNrSW1hZ2UsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKICAgICAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KQEAgLTE2OTEsNyArMTY5
MSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJl
Y3QocGl4ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2Vd
LmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCkpOwogICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9IApAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1
bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNp
YmxlRWRnZV0uY29sb3IoKSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgo
cGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE3NTIsNyArMTc1Miw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERP
VFRFRDoKICAgICBjYXNlIERBU0hFRDogewotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAKICAgICAgICAgLy8gVGhlIHN0cm9rZSBpcyBk
b3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBpcyB0aGUgCiAgICAgICAgIC8v
IG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhlIHN0cm9rZSBpcyBjbGlwcGVk
IG9mZi4gCkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpk
cmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LAogICAg
IH0KIAogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICBncmFwaGljc0Nv
bnRleHQuZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIApAQCAtMjI2NSw5ICsyMjY1LDkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGZpbGxSZWN0Lm1vdmUoZXh0cmFPZmZz
ZXQpOwogCiAgICAgICAgICAgICBpZiAoc2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpKQotICAg
ICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hh
ZG93Q29sb3IpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpOwogCiAgICAgICAgICAgICBGbG9hdFJvdW5k
ZWRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQ
YWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0
IHBpeGVsU25hcHBlZEZpbGxSZWN0ID0gZmlsbFJlY3QucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0yMjg1LDEyICsyMjg1LDEyIEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgaW5mbHVlbmNlUmVjdC5leHBh
bmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJlYWQpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGluZmx1ZW5jZVJlY3QsIGluZm8u
cmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVk
RmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVj
dCgpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJs
ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0
UmFkaWkoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4
ZWxTbmFwcGVkRmlsbFJlY3QsIENvbG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmls
bFJlY3QsIENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5u
ZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKQEAg
LTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hh
ZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ss
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChw
aXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFjayk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzE3
LDkgKzIzMTcsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAo
cGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhh
c0JvcmRlclJhZGl1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJl
Y3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdCwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25h
cHBlZEJvcmRlclJlY3QsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5y
ZWN0KCksIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpLCBzaGFk
b3dDb2xvcik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAg
LTIzNTYsMTEgKzIzNTYsMTEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hT
aGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAg
IHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+
aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKTsK
IAotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShwaXhlbFNuYXBw
ZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KHBpeGVsU25hcHBlZE91dGVyUmVjdCwgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xv
cik7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggYjUzZjJhZjRmZWU1ZGJmMWYzOTA4ZDg0MjNi
NDNlYTk1NDE1MjQ4MS4uNWM2NmI3NzZjNjliOWQzMzY2Mzg2YWE1Yjc1NTg2OTI2MTcxYTk2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xv
cihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIGJveE9yaWdpbi5tb3ZlKGJvcmRlckxlZnQoKSAr
IHBhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxQYXRoKGdldFBhdGgoYm94T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZTcwMDM4ZTkyZjZjN2I0NjFmYzA0
OWFkM2EzM2FhZGYxYzdlMTFlYS4uOGMyZWEwOGY3MWRlNjlmMmQ0OGU1MWFmY2MzNGZjYzQ0MDI5
ZTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAt
MTgyMCw3ICsxODIwLDYgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICBpZiAoYm9yZGVy
U3R5bGUgPT0gRE9VQkxFICYmICh0aGlja25lc3MgKiBkZXZpY2VTY2FsZUZhY3RvcikgPCAzKQog
ICAgICAgICBib3JkZXJTdHlsZSA9IFNPTElEOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlID0gdGhpcy0+c3R5bGUoKTsKICAgICBzd2l0Y2ggKGJvcmRlclN0eWxlKSB7CiAgICAgY2Fz
ZSBCTk9ORToKICAgICBjYXNlIEJISURERU46CkBAIC0xODMwLDcgKzE4MjksNyBAQCB2b2lkIFJl
bmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRgogICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3ND
b250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICBTdHJva2VTdHlsZSBvbGRTdHJva2VT
dHlsZSA9IGdyYXBoaWNzQ29udGV4dC5zdHJva2VTdHlsZSgpOwogICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGFudGlhbGlhcyk7Ci0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpOwogICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tl
IDogRG90dGVkU3Ryb2tlKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKHJvdW5k
UG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh4MSwgeTEpLCBkZXZpY2VTY2FsZUZhY3Rv
ciksIHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh4MiwgeTIpLCBkZXZpY2VT
Y2FsZUZhY3RvcikpOwpAQCAtMTg0NSw3ICsxODQ0LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojpk
cmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEYKICAgICAgICAgaWYgKCFhZGphY2VudFdpZHRoMSAmJiAhYWRqYWNlbnRXaWR0aDIpIHsKICAg
ICAgICAgICAgIFN0cm9rZVN0eWxlIG9sZFN0cm9rZVN0eWxlID0gZ3JhcGhpY3NDb250ZXh0LnN0
cm9rZVN0eWxlKCk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoY29sb3IpOwogCiAgICAgICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3Jh
cGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhhbnRpYWxpYXMpOwpAQCAtMTk5Niw3ICsxOTk1LDcgQEAg
dm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgICAgIC8vIFR1cm4gb2ZmIGFudGlhbGlh
c2luZyB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgZHJhd0NvbnZleFBvbHlnb24oKTsKICAgICAg
ICAgICAgIC8vIHRoaXMgbWF0dGVycyBmb3IgcmVjdHMgaW4gdHJhbnNmb3JtZWQgY29udGV4dHMu
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwot
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IpOwogICAgICAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5z
aG91bGRBbnRpYWxpYXMoKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRB
bnRpYWxpYXMoYW50aWFsaWFzKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3UmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSwgZGV2aWNl
U2NhbGVGYWN0b3IpKTsKQEAgLTIwNDAsNyArMjAzOSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBGCiAgICAgICAgIH0KIAogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KGNvbG9yKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdDb252ZXhQb2x5Z29uKDQsIHF1
YWQsIGFudGlhbGlhcyk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHlsZShv
bGRTdHJva2VTdHlsZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwOCw3ICsyMTA3LDcgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFJlY3QmIHBhaW50UmUKICAgICAgICAgICAgIHBhdGguYWRkUmVjdChvdXRlcik7CiAg
ICAgICAgICAgICBwYXRoLmFkZFJlY3QoaW5uZXIpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKG91dGxpbmVDb2xvciwgc3R5bGVUb1VzZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihvdXRsaW5lQ29sb3IpOwog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBhM2Y4ODkxZmQ5OTdlOGMyY2E4NmY1MGNiNWZmZjZj
MWIwMDU3ZWQ5Li4xMzZlMTBiNGEyOWIxZGVlN2RlYTMyNzM1NjYyNDk1M2MxMGEwZDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
QEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBz
aG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAg
ICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dR
dWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVh
bGl0eVNjYWxpbmcpKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250
ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgY29udGV4dC5j
bGlwKGNvbnRlbnRSZWN0KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxl
UGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVz
c2VkQ29sb3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRD
b2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpKTsKICAgICBjb250ZXh0
LmZpbGxQYXRoKGJhY2tncm91bmQpOwogCiAgICAgUGF0aCBzdHJva2VQYXRoOwpAQCAtMzIwLDIx
ICszMjAsMjEgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICBzdHJva2VSZWN0LmluZmxh
dGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChzdHJva2VSZWN0LCBGbG9hdFNp
emUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAxLCByZXBsYWNlbWVudFRleHRS
b3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5h
dmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcih1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCkpOwog
ICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgIGNvbnRleHQuc3Ryb2tlUGF0
aChzdHJva2VQYXRoKTsKIAogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZv
bnQuZm9udE1ldHJpY3MoKTsKICAgICBmbG9hdCBsYWJlbFggPSByb3VuZGYocmVwbGFjZW1lbnRU
ZXh0UmVjdC5sb2NhdGlvbigpLngoKSArIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0TGVmdFRl
eHRNYXJnaW4pOwogICAgIGZsb2F0IGxhYmVsWSA9IHJvdW5kZihyZXBsYWNlbWVudFRleHRSZWN0
LmxvY2F0aW9uKCkueSgpICsgKHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpLmhlaWdodCgpIC0g
Zm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMiArIGZvbnRNZXRyaWNzLmFzY2VudCgpICsgcmVwbGFj
ZW1lbnRUZXh0Um91bmRlZFJlY3RUb3BUZXh0TWFyZ2luKTsKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSk7CiAgICAgY29udGV4
dC5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxhYmVsWCwgbGFiZWxZKSk7CiAK
ICAgICBpZiAoc2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24oZG9jdW1lbnQo
KSwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikpIHsKICAgICAgICAgYXJyb3dSZWN0Lmlu
ZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nKTsKIAogICAgICAgICBjb250ZXh0
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wKTsKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpKTsKICAgICAgICAg
Y29udGV4dC5maWxsRWxsaXBzZShhcnJvd1JlY3QpOwogCiAgICAgICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IDY0ZWNhY2IwNmVj
ZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEuLmZkMTEzYzRmOGUyMjA5M2ExMGNhNjVhZmQy
NGI4ZTI3YTdmMzhhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2luCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRZID0gYmFzZWxpbmVQ
b3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIERyYXcgdGhlIGZpbGVuYW1lCiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJvdW5kVG9J
bnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMmY4MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4
ZDIyZmE4MGE2YS4uNjNjYTZkYWRmNzhmMTgxYWZjNDY2OTk4MjRiYTcwMmUzMGM3MzU0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05MSwxNCAr
OTEsMTMgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QKICAgICAKICAgICAvLyBGaWxsIGZpcnN0
LgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0g
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xvclNwYWNlKCk7Ci0gICAgY29u
dGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xv
cigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmls
bFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6
IGJvcmRlckZpbGxDb2xvcigpKTsKICAgICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBi
dXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBh
IGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAg
ICAgaWYgKGJvcmRlclJlY3Qud2lkdGgoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwg
Ym9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lm1heFgoKSAtIDEsIGJvcmRlclJlY3Qu
eSgpKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0
aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lm1heFgo
KSAtIDEsIGJvcmRlclJlY3QueSgpKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJFbmRF
ZGdlQ29sb3IoKSk7CiAgICAgfQogfQogCkBAIC0xMTEsMTQgKzExMCwxMyBAQCB2b2lkIFJlbmRl
ckZyYW1lU2V0OjpwYWludFJvd0JvcmRlcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgYgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRl
clJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxs
Q29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBm
cmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCkp
OwogCiAgICAgLy8gTm93IHN0cm9rZSB0aGUgZWRnZXMgYnV0IG9ubHkgaWYgd2UgaGF2ZSBlbm91
Z2ggcm9vbSB0byBwYWludCBib3RoIGVkZ2VzIHdpdGggYSBsaXR0bGUKICAgICAvLyBiaXQgb2Yg
dGhlIGZpbGwgY29sb3Igc2hvd2luZyB0aHJvdWdoLgogICAgIGlmIChib3JkZXJSZWN0LmhlaWdo
dCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3Qu
bG9jYXRpb24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCks
IGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQo
Ym9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChJ
bnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJ
bnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMWQ0NzhiZjZmZmM4
N2ZlZmY0NzU1NzQxNTI1MjRmYjFkYzg3MmRiNy4uMTRjN2EwMjMwMmMxMzZiZjYwNzc1ZDU5NTVl
ZmFmNTczODU1MWExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC0zOTIsOCArMzkyLDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgICAgICAg
ICAgLy8gRHJhdyBhbiBvdXRsaW5lIHJlY3Qgd2hlcmUgdGhlIGltYWdlIHNob3VsZCBiZS4KICAg
ICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6bGlnaHRHcmF5LCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnQsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJv
cmRlciArIGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dp
ZHRoLCBjSGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CiAKICAgICAg
ICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKQEAgLTQyNCwxMyArNDI0LDEz
IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRB
VElPTikKICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3Jp
ZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zm
c2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRp
b24pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RU
b0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdl
U2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAg
ICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBT
dHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyht
X2FsdFRleHQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgICAgICAgICAgICAgIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgICAgICAg
ICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3Mo
KTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2Vu
dCgpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3Qo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNl
dEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRp
ZgotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0
LAorICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWcsIHJlY3QsCiAgICAgICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRmZTE2YjcyNzZhNWJjNzQwOWMwMjkxYTk2
YWJjMDY5YzhmN2E0ZWEuLjZlMjE3YTcxYmZmNDkzZjg3YzM5MzMzNDk2MDAwYWQwZWM1NGEyMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTgyMSw3ICsx
ODIxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclAKICNlbmRpZgogCiAjaWZkZWYgUkVWRUFM
X1RSQU5TUEFSRU5DWV9MQVlFUlMKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
KDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpKTsKICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQ2xpcFJlY3QpOwogI2VuZGlmCiAg
ICAgfQpAQCAtMzYwOCw5ICszNjA4LDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxv
d0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQKIAogdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
CiB7Ci0gICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKLSAgICBBU1NFUlQoYm94KTsK
LQogICAgIEludFJlY3QgYWJzUmVjdCA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBhYnNSZWN0
Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdl
UmVjdCkpCkBAIC0zNjI5LDcgKzM2MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9s
bENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQgd2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9s
bGJhcnMsIHNpbmNlIHdlIG5lZWQKICAgICAvLyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAg
ICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xsYmFycygpKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KGFic1JlY3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoYWJzUmVjdCwgQ29sb3I6OndoaXRlKTsKIH0KIAogdm9pZCBS
ZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCkBAIC0zNjUyLDcgKzM2
NDksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShyZXNpemVyQ29ybmVyUmVjdC54KCkgKyBjb3JuZXJSZXNpemVyU2l6ZS53aWR0aCgpLCByZXNp
emVyQ29ybmVyUmVjdC55KCkgKyByZXNpemVyQ29ybmVyUmVjdC5oZWlnaHQoKSAtIGNvcm5lclJl
c2l6ZXJTaXplLmhlaWdodCgpKTsKICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoLTEu
MCwgMS4wKSk7CiAgICAgICAgIGlmIChyZXNpemVDb3JuZXJJbWFnZSkKLSAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsK
KyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKICAgICAgICAgY29udGV4dC5y
ZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjYwLDcgKzM2NTcsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXlvdQogICAgIGlmICghcmVzaXplQ29ybmVySW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gc25hcFJlY3RUb0RldmljZVBp
eGVscyhMYXlvdXRSZWN0KHJlc2l6ZXJDb3JuZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkgLSBjb3Ju
ZXJSZXNpemVyU2l6ZSwgY29ybmVyUmVzaXplclNpemUpLCByZW5kZXJlcigpLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnJlc2l6ZUNvcm5l
ckltYWdlLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKCpyZXNpemVDb3JuZXJJbWFnZSwgaW1hZ2VSZWN0KTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0KQpAQCAtMzY5NSw5ICszNjkyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAg
ICAgY29udGV4dC5jbGlwKGFic1JlY3QpOwogICAgICAgICBMYXlvdXRSZWN0IGxhcmdlckNvcm5l
ciA9IGFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKExheW91dFNpemUobGFy
Z2VyQ29ybmVyLndpZHRoKCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSksIGxhcmdlckNvcm5l
ci5oZWlnaHQoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgxKSkpOwotICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdC
KDIxNywgMjE3LCAyMTcpKSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEu
MGYpOwotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOwogICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxh
cmdlckNvcm5lcikpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAppbmRleCBlNTczZDUwMDRmYjViNTkxMDkyMDMxNjkwNDI3NDAwMDBiNjEzZGE1
Li41NTMxNzBhZGM0NDFmZDk5NTNiODg5NGFhNGNmM2Y4N2JiMjc4MjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zOTYsOCArMzk2LDcgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCkuaW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgQ29s
b3JTcGFjZSBjb2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGNvbG9yU3BhY2UpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7CiAKICAgICBUZXh0UnVu
IHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHls
ZS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShpdGVtU3R5bGUudW5pY29kZUJpZGkoKSksIHRydWUs
IFRleHRSdW46Ok5vUm91bmRpbmcpOwogICAgIEZvbnRDYXNjYWRlIGl0ZW1Gb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwpAQCAtNDMyLDEwICs0MzEsOSBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JgogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBsaXN0IGJveCBpdGVt
CiAgICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgIT0gSElEREVOKSB7Ci0gICAgICAgIENv
bG9yU3BhY2UgY29sb3JTcGFjZSA9IGl0ZW1TdHlsZS5jb2xvclNwYWNlKCk7CiAgICAgICAgIExh
eW91dFJlY3QgaXRlbVJlY3QgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHBhaW50T2Zmc2V0LCBsaXN0
SW5kZXgpOwogICAgICAgICBpdGVtUmVjdC5pbnRlcnNlY3QoY29udHJvbENsaXBSZWN0KHBhaW50
T2Zmc2V0KSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZElu
dFJlY3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9y
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAppbmRleCBmNmUzNDZkMzdiMDViYTQ2YTlmNjYwODA2MjA1YjQyNTFjN2IzNTE5Li40
NzZlOWM0NzJiMTE0OTBmZDYyNmRkY2M5ODc5Mjc5ZjgxZTMwM2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk4LDExICsxMTk4LDEx
IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBpZiAoaXNJbWFnZSgpKSB7CiAgICAg
ICAgIGlmIChSZWZQdHI8SW1hZ2U+IG1hcmtlckltYWdlID0gbV9pbWFnZS0+aW1hZ2UodGhpcywg
bWFya2VyLnNpemUoKSkpCi0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbWFya2VySW1h
Z2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOworICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoKm1hcmtlckltYWdlLCBtYXJrZXIpOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3Rh
dGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3Qg
PSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9y
aWdpbik7Ci0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJl
Y3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNl
bFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIxMCwxNCArMTIxMCwxNCBAQCB2b2lkIFJl
bmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5v
bmUpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7
CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5maWxs
UmVjdChzbmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKGNvbG9yKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGNvbG9yKTsKIAogICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxp
c3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEyMjUsNyArMTIyNSw3IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNl
KG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ2lyY2xlOgotICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlcik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgU3F1YXJlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggMzRiNTVmMjkyM2Q5MWFjY2RiNDEy
MmUxNTBkZmRhZTJkMDdkYWYxMi4uODRkNDRiMTI1MjRkNDQyZWIwNTA3ZDY4MTNjY2ZmODI5NDky
NzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBpZiAoZHJhd1Nl
bGVjdGlvblRpbnQpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25QYWludGluZ1JlY3Qg
PSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsZWN0aW9uUGFpbnRpbmdSZWN0Lm1v
dmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5m
aWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVj
dCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IGFmOTYx
MTgwYWRlZTE1ZWRhZDJiYTdiNmY5ZmYyZGMzOGE4YzY4ODYuLjU0ZmVhMGMxNmVlOGMyOTUwOTM1
NjQ0NjZiOTA2YmI3ZjQwMDFkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmRpZFBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgU2Nyb2xsYmFyCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBj
b3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgY29udGV4dC5maWxs
UmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlKTsKIH0KIAogdm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCBlYzQyYzYy
YzgxMjdjZWQzOGU1NjE2ODRkODdlOGI1MDlmMTliM2M1Li5lOGI4ZjBmYjRiZjM1Zjc4MDZhNTU1
NTlmZjFmNWJmMWNiN2M0N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAg
b3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmlt
YWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2Us
IHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
b3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhv
cmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCiBDdXJz
b3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAxYWFmMzY5MGVlOWI3ZGYxNzdjMTA3
MTdiZjkxOGZlMjMxNTk4MDlhLi5lNWE4NWNmMTRhYzJjZjBmNmQxOTExNjNjMTRiNDZkYmYwYzcw
YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEwMzYs
NyArMTAzNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgfQogICAgIFJlZjxIVE1M
Q29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwotICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5v
ZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRp
b25FbGVtZW50Pigqbm9kZSkpOwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxl
bWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBhNGQ4ZjhmZDBlMDQzNjllMDdh
ZDhlOWU2NWQzNzVhMjBmMmQ4NmFhLi44MDZhZmY5ZWJjYTk4Mzc3M2QxYzA2OWMwNTYzYmU3OTcw
YTIxNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAK
QEAgLTE1MzMsNyArMTUzMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlk
ZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mCiAgICAgICAgIHJh
bmdlUmVjdC5zZXRXaWR0aChsZW5ndGhSYXRpbyAqIHRvdGFsVHJhY2tXaWR0aCk7CiAgICAgICAg
IGlmIChpbmRleCkKICAgICAgICAgICAgIHJhbmdlUmVjdC5tb3ZlKHN0YXJ0UmF0aW8gKiB0b3Rh
bFRyYWNrV2lkdGgsIDApOwotICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJh
bmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICB9CiAKICAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKQEAgLTE1NDMsNyArMTU0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVk
aWFTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mCiBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAg
ICBSZW5kZXJTdHlsZSYgc3R5bGUgPSBvLnN0eWxlKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRpaUZyb21TdHls
ZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciks
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBz
dHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMTU3Myw4ICsxNTczLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6
cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWMKICAgICB2b2x1bWVSZWN0Lm1vdmUoMCwgcmVjdEhlaWdodCAtIHRyYWNrSGVpZ2h0KTsKICAg
ICB2b2x1bWVSZWN0LnNldEhlaWdodChjZWlsKHRyYWNrSGVpZ2h0KSk7CiAKLSAgICBjb250ZXh0
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlp
RnJvbVN0eWxlKHN0eWxlKSksCi0gICAgICAgIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0
eWxlKHN0eWxlKSksIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggMWJmMjA1MjVlZTBjYzM0
MDM5ODM4MjUwN2U4OTM2YWQ1NTQ0MTQ4Yy4uMGQ1YjVlZjY4OGUyNGUzMTNkZTYwOThkYzNhZGI3
NjE5MDBmMTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIENHRnVuY3Rpb25SZWYgZ2V0U2hhcmVkRnVu
Y3Rpb25SZWYoSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIEludGVycG9sYXRpb24KIAogc3RhdGlj
IHZvaWQgZHJhd0F4aWFsR3JhZGllbnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIElPU0dyYWRpZW50
UmVmIGdyYWRpZW50LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBjb25zdCBGbG9hdFBv
aW50JiBzdG9wUG9pbnQsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlh
bChkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIHN0YXJ0UG9pbnQsIHN0b3BQb2ludCwgZ2V0U2hh
cmVkRnVuY3Rpb25SZWYoZ3JhZGllbnQsIGludGVycG9sYXRpb24pLCBmYWxzZSwgZmFsc2UpKTsK
KyAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdD
cmVhdGVBeGlhbChzUkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdG9wUG9pbnQsIGdl
dFNoYXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZhbHNl
KSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZy5nZXQoKSk7CiB9
CiAKIHN0YXRpYyB2b2lkIGRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYgY29udGV4dCwg
SU9TR3JhZGllbnRSZWYgZ3JhZGllbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIGZs
b2F0IHN0YXJ0UmFkaXVzLCBjb25zdCBGbG9hdFBvaW50JiBzdG9wUG9pbnQsIGZsb2F0IHN0b3BS
YWRpdXMsIEludGVycG9sYXRpb24gaW50ZXJwb2xhdGlvbikKIHsKLSAgICBSZXRhaW5QdHI8Q0dT
aGFkaW5nUmVmPiBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoZGV2aWNl
UkdCQ29sb3JTcGFjZVJlZigpLCBzdGFydFBvaW50LCBzdGFydFJhZGl1cywgc3RvcFBvaW50LCBz
dG9wUmFkaXVzLCBnZXRTaGFyZWRGdW5jdGlvblJlZihncmFkaWVudCwgaW50ZXJwb2xhdGlvbiks
IGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHNoYWRpbmcgPSBh
ZG9wdENGKENHU2hhZGluZ0NyZWF0ZVJhZGlhbChkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkgLyog
RklYTUUgKi8sIHN0YXJ0UG9pbnQsIHN0YXJ0UmFkaXVzLCBzdG9wUG9pbnQsIHN0b3BSYWRpdXMs
IGdldFNoYXJlZEZ1bmN0aW9uUmVmKGdyYWRpZW50LCBpbnRlcnBvbGF0aW9uKSwgZmFsc2UsIGZh
bHNlKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgc2hhZGluZy5nZXQoKSk7
CiB9CiAKQEAgLTM5MiwxMiArMzkyLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hl
Y2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpCiAgICAg
ICAgIH07CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
bGluZVdpZHRoKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihD
b2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwg
MC4wZiwgMC43ZikpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0pvaW5lZExp
bmVzKHNoYWRvdywgMywgdHJ1ZSwga0NHTGluZUNhcFNxdWFyZSk7CiAKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBj
bGlwLmhlaWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpKTsKIAogICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsK
ICAgICB9IGVsc2UgewpAQCAtNDU4LDcgKzQ1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50UmFkaW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJ
CiAgICAgICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAqIElubmVySW52ZXJzZVJhdGlv
KTsKICAgICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQoKSAqIElubmVySW52ZXJzZVJh
dGlvKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNlKGNs
aXAsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgc2hhZG93Q29sb3IoKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNl
ZEVsbGlwc2UoY2xpcCwgQ29sb3I6OndoaXRlLCBzaGFkb3dDb2xvcigpKTsKIAogICAgICAgICBG
bG9hdFNpemUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAuaGVpZ2h0KCkgLyAyLjBm
KTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChjbGlwLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKQEAgLTY0OCw3
ICs2NDgsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgICAgICBGbG9hdFNpemUo
MCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1
cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3Qu
aGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksCiAgICAgICAgICAgICBGbG9hdFNp
emUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdo
dFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0
KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSkpKTsKIAotICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KGJ1dHRvbkNsaXAsIHN0eWxlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChidXR0b25DbGlw
LCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikp
OwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFt
ZShpc0ZvY3VzZWQoYm94KSAmJiAhaXNSZWFkT25seUNvbnRyb2woYm94KSA/IENvbmNhdmVHcmFk
aWVudCA6IENvbnZleEdyYWRpZW50KSwgYnV0dG9uQ2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50
KGJ1dHRvbkNsaXAueCgpLCBidXR0b25DbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24p
OwogICAgIH0KQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAg
ICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAueCgpICsgKGJ1dHRvbkNsaXAud2lkdGgo
KSAtIGNvdW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBhZGRpbmcpIC8gMi4wLCBidXR0b25DbGlw
Lm1heFkoKSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFp
c2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29s
b3I6OndoaXRlLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjVmKSk7CiAgICAgICAgICAgICBl
bGxpcHNlLm1vdmUoc2l6ZSArIHBhZGRpbmcsIDApOwogICAgICAgICB9CiAgICAgfSAgZWxzZSB7
CkBAIC02ODIsMTIgKzY4MiwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0
QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIHNo
YWRvd1syXSA9IEZsb2F0UG9pbnQoYXJyb3dbMl0ueCgpLCBhcnJvd1syXS55KCkgKyAxLjBmKTsK
IAogICAgICAgICBmbG9hdCBvcGFjaXR5ID0gaXNSZWFkT25seUNvbnRyb2woYm94KSA/IDAuMiA6
IDAuNTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIG9wYWNpdHkpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Q29udmV4
UG9seWdvbigzLCBzaGFkb3csIHRydWUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xv
cihDb2xvcjo6d2hpdGUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xv
cihDb2xvcjo6d2hpdGUpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQ
b2x5Z29uKDMsIGFycm93LCB0cnVlKTsKICAgICB9CiAKQEAgLTc3Miw5ICs3NzIsOSBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgYm94
LCBjb25zdCBQYWludEluZm8mCiAKICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgIGlmIChyZWFkb25s
eSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MTc4LCAxNzgsIDE3OCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Io
Q29sb3IoNzYsIDc2LCA3NiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcig3NiwgNzYsIDc2KSk7CiAKICAg
ICAgICAgUmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IHJvdW5kZWRSZWN0UGF0aCA9IGFkb3B0
Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICAgICAgQ0dQYXRoQWRkUm91bmRlZFJlY3Qo
cm91bmRlZFJlY3RQYXRoLmdldCgpLCAwLCB0cmFja0NsaXAsIGNvcm5lcldpZHRoLCBjb3JuZXJI
ZWlnaHQpOwpAQCAtODU5LDggKzg1OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJv
Z3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAg
c3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDB4OGQsIDB4OGQsIDB4OGQp
KTsKICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KHN0cm9rZUdyYWRpZW50LnJlbGVhc2VO
b25OdWxsKCkpOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gcmVuZGVyZXIuc3R5bGUo
KS5jb2xvclNwYWNlKCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUs
IDI1NSksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwg
MjU1LCAyNTUpKTsKIAogICAgIFBhdGggdHJhY2tQYXRoOwogICAgIEZsb2F0UmVjdCB0cmFja1Jl
Y3QocmVjdC54KCkgKyAwLjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgcmVj
dC53aWR0aCgpIC0gMC41LCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7CkBAIC0xMDI0LDggKzEw
MjMsOCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUgogCiAgICAgICAgIC8vIEJhY2tncm91bmQg
cGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJhY2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQg
bWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAgICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3Ig
PSBDb2xvcihidXR0b25SZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFt
ZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBw
aWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3QodGh1bWJuYWlsUmVjdCwgYmFja2dyb3VuZEltYWdlQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNv
cm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJh
bWVDb2xvcik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QodGh1bWJuYWls
UmVjdCwgYmFja2dyb3VuZEltYWdlQ29sb3IpOwogICAgICAgICB7CiAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCk7CkBAIC0xMDQ1LDcgKzEwNDQsNyBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUgogICAgIH0KIAogICAgIC8vIEZvcmVncm91bmQgcGljdHVyZSBmcmFtZSBhbmQgaWNv
bi4KLSAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNv
cm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXpl
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IpOwogICAgIGljb24t
PnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHRodW1ibmFpbFJlY3QpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4
IDkyYWYwY2Y1YWM1YTgzZjgwYjc2MTA3ZTQ1ZmVmZjY2ZWRjYWYzYmQuLjdmOGRjMjQyMTkwZjll
MGQwOTYxNTMxM2Y4YjIyNjdjOWJlYWUzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KQEAgLTExNTYsNyArMTE1Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNv
bnN0IFBhCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAx
KSk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBp
bmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMzAx
LDcgKzEzMDEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVj
b3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAKICAgICBGbG9hdFBvaW50
IGFycm93MVszXTsKQEAgLTEzMzAsMTEgKzEzMzAsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIs
IGMKICAgICAvLyBEcmF3IHRoZSBzZXBhcmF0b3IgdG8gdGhlIGxlZnQgb2YgdGhlIGFycm93cwog
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAvLyBEZWxpYmVy
YXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4u
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
Q29sb3IobGVmdFNlcGFyYXRvckNvbG9yKTsKICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3Vu
ZHMubWF4WSgpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHJp
Z2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvcik7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2Vw
YXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5t
YXhZKCkpKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAg
fHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxl
KCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29t
cG9zaXRlU291cmNlT3Zlcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMTg0LDcgKzIx
ODQsNyBAQCBzdGF0aWMgTlNDb2xvciAqdGl0bGVUZXh0Q29sb3JGb3JBdHRhY2htZW50KGNvbnN0
IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgaWYgKGF0dGFjaG1lbnQuc2VsZWN0
aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgaWYg
KGF0dGFjaG1lbnQuZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAg
ICAgICAgICAgIHJldHVybiBbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29s
b3JdOyAgICAKLSAgICAgICAgcmV0dXJuIChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2ht
ZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgcmV0dXJuIChOU0NvbG9yICopY2FjaGVkQ0dDb2xvcihhdHRhY2htZW50VGl0bGVJbmFjdGl2
ZVRleHRDb2xvcigpKTsKICAgICB9CiAKICAgICByZXR1cm4gW05TQ29sb3IgYmxhY2tDb2xvcl07
CkBAIC0yMjk0LDcgKzIyOTQsNyBAQCB2b2lkIEF0dGFjaG1lbnRMYXlvdXQ6OmxheU91dFN1YnRp
dGxlKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAgICAgUmV0YWluUHRyPENU
Rm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NU
Rm9udFVJRm9udFN5c3RlbSwgYXR0YWNobWVudFN1YnRpdGxlRm9udFNpemUsIGxhbmd1YWdlKSk7
CiAgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7CiAgICAgICAgIChpZClrQ1RG
b250QXR0cmlidXRlTmFtZTogKGlkKWZvbnQuZ2V0KCksCi0gICAgICAgIChpZClrQ1RGb3JlZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3IoYXR0YWNobWVu
dFN1YnRpdGxlVGV4dENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpCisgICAgICAgIChpZClr
Q1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiAoTlNDb2xvciAqKWNhY2hlZENHQ29sb3Io
YXR0YWNobWVudFN1YnRpdGxlVGV4dENvbG9yKCkpCiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNB
dHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3VidGl0bGVUZXh0ID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VidGl0bGVUZXh0IGF0dHJpYnV0
ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKICAgICBzdWJ0aXRsZUxpbmUgPSBhZG9wdENGKENUTGluZUNy
ZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRl
ZFN1YnRpdGxlVGV4dC5nZXQoKSkpOwpAQCAtMjM1NSw3ICsyMzU1LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYsIEdy
YXBoaWNzQ29udGUKICAgICBpZiAocGFpbnRCb3JkZXIpCiAgICAgICAgIGJhY2tncm91bmRSZWN0
LmluZmxhdGUoLWF0dGFjaG1lbnRJY29uU2VsZWN0aW9uQm9yZGVyVGhpY2tuZXNzKTsKIAotICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYmFja2dyb3VuZFJlY3Qs
IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cykp
LCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJhY2tncm91bmRS
ZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRp
dXMpKSwgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAKICAgICBpZiAocGFpbnRC
b3JkZXIpIHsKICAgICAgICAgRmxvYXRSZWN0IGJvcmRlclJlY3QgPSBsYXlvdXQuaWNvbkJhY2tn
cm91bmRSZWN0OwpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2ht
ZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYsIEdyYXBoaWNzQ29udGUK
ICAgICAgICAgRmxvYXRTaXplIGljb25CYWNrZ3JvdW5kUmFkaXVzU2l6ZShhdHRhY2htZW50SWNv
bkJhY2tncm91bmRSYWRpdXMsIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyk7CiAgICAg
ICAgIFBhdGggYm9yZGVyUGF0aDsKICAgICAgICAgYm9yZGVyUGF0aC5hZGRSb3VuZGVkUmVjdChi
b3JkZXJSZWN0LCBpY29uQmFja2dyb3VuZFJhZGl1c1NpemUpOwotICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYXR0YWNobWVudEljb25Cb3Jk
ZXJDb2xvcigpKTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYXR0YWNobWVu
dEljb25TZWxlY3Rpb25Cb3JkZXJUaGlja25lc3MpOwogICAgICAgICBjb250ZXh0LnN0cm9rZVBh
dGgoYm9yZGVyUGF0aCk7CiAgICAgfQpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIEcKICAgICBlbHNlCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGF0dGFjaG1l
bnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yKCk7CiAKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvcik7CiAKICAgICBQYXRoIGJhY2tncm91bmRQYXRo
ID0gUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHMoYmFja2dyb3VuZFJl
Y3RzLCBhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUmFkaXVzKTsKICAgICBjb250ZXh0LmZpbGxQ
YXRoKGJhY2tncm91bmRQYXRoKTsKQEAgLTI0NDcsNyArMjQ0Nyw3IEBAIHN0YXRpYyB2b2lkIHBh
aW50QXR0YWNobWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQs
IEdyYXBoaWNzCiAgICAgYmFja2dyb3VuZFJlY3QuaW5mbGF0ZSgtYXR0YWNobWVudFByb2dyZXNz
QmFyQm9yZGVyV2lkdGggLyAyKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYmFja2dyb3VuZFJv
dW5kZWRSZWN0KGJhY2tncm91bmRSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShiYWNrZ3Jv
dW5kUmVjdC5oZWlnaHQoKSAvIDIpKTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChiYWNr
Z3JvdW5kUm91bmRlZFJlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcigp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChiYWNr
Z3JvdW5kUm91bmRlZFJlY3QsIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcigp
KTsKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU2F2ZXIo
Y29udGV4dCk7CkBAIC0yNDU3LDEzICsyNDU3LDEzIEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNo
bWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEdyYXBoaWNz
CiAgICAgICAgIHByb2dyZXNzUmVjdC5zZXRXaWR0aChwcm9ncmVzc1JlY3Qud2lkdGgoKSAqIHBy
b2dyZXNzKTsKICAgICAgICAgcHJvZ3Jlc3NSZWN0ID0gZW5jbG9zZVJlY3RUb0RldmljZVBpeGVs
cyhwcm9ncmVzc1JlY3QsIGF0dGFjaG1lbnQuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKIAotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHByb2dyZXNzUmVjdCwgYXR0YWNobWVudFBy
b2dyZXNzQmFyRmlsbENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KHByb2dyZXNzUmVjdCwgYXR0YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9y
KCkpOwogICAgIH0KIAogICAgIFBhdGggYm9yZGVyUGF0aDsKICAgICBmbG9hdCBib3JkZXJSYWRp
dXMgPSBib3JkZXJSZWN0LmhlaWdodCgpIC8gMjsKICAgICBib3JkZXJQYXRoLmFkZFJvdW5kZWRS
ZWN0KGJvcmRlclJlY3QsIEZsb2F0U2l6ZShib3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1cykpOwot
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29s
b3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihh
dHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJDb2xvcigpKTsKICAgICBjb250ZXh0LnNldFN0cm9r
ZVRoaWNrbmVzcyhhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJXaWR0aCk7CiAgICAgY29udGV4
dC5zdHJva2VQYXRoKGJvcmRlclBhdGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCmluZGV4IDkwMjk1Y2IxYWM5NWU0MDljNDQ5ZjkwOTViOTNmZDg2ZTRkNzFkNTcu
LjJkMTU0ZGUyMTQwNzRlODkyMGM5NjYyNWFjN2EyY2FjMWRiYjQ1MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIFJlbmRl
clZpZXc6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAKICAgICAvLyBUaGlzIGF2b2lkcyBwYWludGluZyBnYXJiYWdlIGJldHdlZW4g
Y29sdW1ucyBpZiB0aGVyZSBpcyBhIGNvbHVtbiBnYXAuCiAgICAgaWYgKGZyYW1lVmlldygpLnBh
Z2luYXRpb24oKS5tb2RlICE9IFBhZ2luYXRpb246OlVucGFnaW5hdGVkICYmIHBhaW50SW5mby5z
aG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpKQotICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9y
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCkp
OwogCiAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CkBAIC02MTAs
NyArNjEwLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgIGlmIChiYWNrZ3JvdW5k
Q29sb3IuYWxwaGEoKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNP
cGVyYXRvciA9IHBhaW50SW5mby5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJ
bmZvLnJlY3QsIGJhY2tncm91bmRDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgYmFja2dy
b3VuZENvbG9yKTsKICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuY2xlYXJSZWN0KHBhaW50SW5mby5yZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggNDU0MWU5MGM4ZjA0YzhkZTc3
MzhkZjBlYmUwNWVhYzU3ZmQ1YjcxNi4uY2M5YjhjZTQyYzQ5NzE1MTMxNzRiYjhlOTBiNDU2YmUw
NGNmZWUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAg
LTI5MCw3ICsyOTAsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAvLyBQYWludCBhIHBh
cnRpYWxseSB0cmFuc3BhcmVudCB3YXNoIG92ZXIgc2VsZWN0ZWQgd2lkZ2V0cy4KICAgICBpZiAo
aXNTZWxlY3RlZCgpICYmICFkb2N1bWVudCgpLnByaW50aW5nKCkpIHsKICAgICAgICAgLy8gRklY
TUU6IHNlbGVjdGlvblJlY3QoKSBpcyBpbiBhYnNvbHV0ZSwgbm90IHBhaW50aW5nIGNvb3JkaW5h
dGVzLgotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0
KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBl
ZEludFJlY3Qoc2VsZWN0aW9uUmVjdCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwog
ICAgIH0KIAogICAgIGlmIChoYXNMYXllcigpICYmIGxheWVyKCktPmNhblJlc2l6ZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGNmZGE1Y2ZiZDQ4
NDhjNWQ1NGRmMTk4NzU0NWExYjgzOGVhMWMzNjYuLmM5MThhNmMxODVkZTg1OTgyZGJjYzEyYzJl
OTRlYTJhMWNmNmQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94OjpsaW5lU2Vs
ZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQogICAgICAg
ICAgICAgICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5
c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGxvZ2ljYWxSZWN0KTsKICAgICAg
ICAgICAgICAgICBpZiAoaXNQcmV2aW91c0JveFNlbGVjdGVkICYmIGdhcFJlY3Qud2lkdGgoKSA+
IDAgJiYgZ2FwUmVjdC5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBh
aW50SW5mbyAmJiBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQo
KS5maWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZp
bGxSZWN0KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIG1h
eSBiZSBub24tY29udGlndW91cywgc2VlIGNvbW1lbnQgYWJvdmUuCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC51bml0ZUNlbnRlcihnYXBSZWN0KTsKICAgICAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKaW5kZXggNjU2YzdkNDI5YjE4ODhiMjE2YTgzZWE3ZDU1NTk3ZmM4YjRiN2M3Yy4uMzIy
YzFiMmU5NTJkMjY1OTNhZGVjMmY3ZTczOGZjNWE4ZmVmMmU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAt
NTcsOCArNTcsOCBAQCBzdGF0aWMgdm9pZCBwYWludERlYnVnQm9yZGVycyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIExheW91dFJlY3QgYm9yZGVyUmVjdCwgYwogICAgIGlmIChzbmFwcGVkUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xv
cigwLCAyNTUsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRl
eHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSk7CisgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBwZWRS
ZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAK
aW5kZXggMjIyNmVjZGY2OWU1M2JiZjZiYzg5ZGU5ZGJlYmM3MzYwMzk1NmEzMS4uZTFkZWJiYjdk
YzQ1ZGQ5Y2EyM2Q2MzZjY2U4NThlM2M0MjRiYjcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCkBAIC0zOSwyNyArMzksMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1UZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSBj
b2xvclNwYWNlKQotICAgIDogY29sb3JTcGFjZShjb2xvclNwYWNlKQotICAgICwgc3Ryb2tlV2lk
dGgoMCkKLSNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgLCB1c2VMZXR0ZXJwcmVzc0VmZmVj
dChmYWxzZSkKLSNlbmRpZgotewotfQotCi1UZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUo
Q29sb3IgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKLSAgICA6IGNvbG9yU3BhY2UoY29s
b3JTcGFjZSkKLSAgICAsIGZpbGxDb2xvcihjb2xvcikKK1RleHRQYWludFN0eWxlOjpUZXh0UGFp
bnRTdHlsZShjb25zdCBDb2xvciYgY29sb3IpCisgICAgOiBmaWxsQ29sb3IoY29sb3IpCiAgICAg
LCBzdHJva2VDb2xvcihjb2xvcikKLSAgICAsIHN0cm9rZVdpZHRoKDApCi0jaWYgRU5BQkxFKExF
VFRFUlBSRVNTKQotICAgICwgdXNlTGV0dGVycHJlc3NFZmZlY3QoZmFsc2UpCi0jZW5kaWYKIHsK
IH0KIAotc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dyb3VuZChD
b2xvciB0ZXh0Q29sb3IsIENvbG9yIGJhY2tncm91bmRDb2xvcikKK3N0YXRpYyBDb2xvciBhZGp1
c3RDb2xvckZvclZpc2liaWxpdHlPbkJhY2tncm91bmQoY29uc3QgQ29sb3ImIHRleHRDb2xvciwg
Y29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKIHsKICAgICBpbnQgZCA9IGRpZmZlcmVuY2VT
cXVhcmVkKHRleHRDb2xvciwgYmFja2dyb3VuZENvbG9yKTsKICAgICAvLyBTZW1pLWFyYml0cmFy
aWx5IGNob3NlIDY1MDI1ICgyNTVeMikgdmFsdWUgaGVyZSBhZnRlciBhIGZldyB0ZXN0cy4KQEAg
LTc2LDcgKzYyLDcgQEAgc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFj
a2dyb3VuZChDb2xvciB0ZXh0Q29sb3IsIENvbG9yIGJhY2tncm8KIAogVGV4dFBhaW50U3R5bGUg
Y29tcHV0ZVRleHRQYWludFN0eWxlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVuZGVyU3R5
bGUmIGxpbmVTdHlsZSwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiB7Ci0gICAgVGV4dFBh
aW50U3R5bGUgcGFpbnRTdHlsZShsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBUZXh0UGFp
bnRTdHlsZSBwYWludFN0eWxlOwogCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIHBhaW50
U3R5bGUudXNlTGV0dGVycHJlc3NFZmZlY3QgPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25zSW5F
ZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uTGV0dGVycHJlc3M7CkBAIC0xOTgsMTIgKzE4NCwxMiBA
QCB2b2lkIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFRleHRQYWludFN0eWxlJiBwYWludAogICAgIH0KIAogICAgIENvbG9yIGZpbGxDb2xvciA9
IGZpbGxDb2xvclR5cGUgPT0gVXNlRW1waGFzaXNNYXJrQ29sb3IgPyBwYWludFN0eWxlLmVtcGhh
c2lzTWFya0NvbG9yIDogcGFpbnRTdHlsZS5maWxsQ29sb3I7Ci0gICAgaWYgKG1vZGUgJiBUZXh0
TW9kZUZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpIHx8IHBhaW50U3R5
bGUuY29sb3JTcGFjZSAhPSBjb250ZXh0LmZpbGxDb2xvclNwYWNlKCkpKQotICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIHBhaW50U3R5bGUuY29sb3JTcGFjZSk7CisgICAg
aWYgKG1vZGUgJiBUZXh0TW9kZUZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xv
cigpKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIAogICAgIGlm
IChtb2RlICYgVGV4dE1vZGVTdHJva2UpIHsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tl
Q29sb3IgIT0gY29udGV4dC5zdHJva2VDb2xvcigpKQotICAgICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihwYWludFN0eWxlLnN0cm9rZUNvbG9yLCBwYWludFN0eWxlLmNvbG9yU3BhY2Up
OworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihwYWludFN0eWxlLnN0cm9rZUNv
bG9yKTsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggIT0gY29udGV4dC5zdHJv
a2VUaGlja25lc3MoKSkKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKHBh
aW50U3R5bGUuc3Ryb2tlV2lkdGgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludFN0eWxlLmgKaW5kZXggOTk0ZTQ1ZGNmNGU4YTQ4OTg4NGNkY2JjMjNiMWMyMDZiNzBh
OTgwNi4uZjBjYmViYjlmODQ3YzVhNTdlNjhhMDE1NGZkNDQ3MGQ2YWFhZDZmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTM5LDE2ICszOSwxNSBAQCBj
bGFzcyBTaGFkb3dEYXRhOwogc3RydWN0IFBhaW50SW5mbzsKIAogc3RydWN0IFRleHRQYWludFN0
eWxlIHsKLSAgICBUZXh0UGFpbnRTdHlsZShDb2xvclNwYWNlKTsKLSAgICBUZXh0UGFpbnRTdHls
ZShDb2xvciwgQ29sb3JTcGFjZSk7CisgICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0
UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCi0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwog
ICAgIENvbG9yIGZpbGxDb2xvcjsKICAgICBDb2xvciBzdHJva2VDb2xvcjsKICAgICBDb2xvciBl
bXBoYXNpc01hcmtDb2xvcjsKLSAgICBmbG9hdCBzdHJva2VXaWR0aDsKKyAgICBmbG9hdCBzdHJv
a2VXaWR0aCB7IDAgfTsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgYm9vbCB1c2VMZXR0
ZXJwcmVzc0VmZmVjdDsKKyAgICBib29sIHVzZUxldHRlcnByZXNzRWZmZWN0IHsgZmFsc2UgfTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKaW5k
ZXggZTQyODZjMDQxMDNjY2I3OWI0ZTZlNjZiN2JiYjU0MjZmYzJkNjg3My4uZWMyMzAyY2NlZWU2
MWI2MzQzZTE2NDlmN2YyNjZhZGJlNTRlODdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgU2hhZG93QXBwbGllcjo6U2hhZG93
QXBwbGllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dywKICAgICB9CiAKICAgICBpZiAoIW1fYXZvaWREcmF3aW5nU2hhZG93KQotICAgICAgICBjb250
ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIGNv
bnRleHQuZmlsbENvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcik7CiB9CiAKIFNoYWRvd0FwcGxpZXI6
On5TaGFkb3dBcHBsaWVyKCkKQEAgLTExOCwxMSArMTE4LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50
VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvCiAgICAgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wg
aG9yaXpvbnRhbCkKIHsKICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LmZpbGxDb2xvcigp
OwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LmZpbGxDb2xvclNwYWNl
KCk7CiAgICAgYm9vbCBvcGFxdWUgPSAhZmlsbENvbG9yLmhhc0FscGhhKCk7CiAgICAgYm9vbCBs
YXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQgPSAhc3Ryb2tlZCAmJiBvcGFxdWU7CiAg
ICAgaWYgKCFvcGFxdWUpCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
YmxhY2spOwogCiAgICAgZG8gewogICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIo
Y29udGV4dCwgc2hhZG93LCBib3hSZWN0LCBsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1Rl
eHQsIG9wYXF1ZSwgaG9yaXpvbnRhbCA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CkBAIC0xMzMs
NyArMTMyLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm8KIAogICAgICAgICBJbnRTaXplIGV4
dHJhT2Zmc2V0ID0gcm91bmRlZEludFNpemUoc2hhZG93QXBwbGllci5leHRyYU9mZnNldCgpKTsK
ICAgICAgICAgaWYgKCFzaGFkb3cgJiYgIW9wYXF1ZSkKLSAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIAogICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPD0g
ZW5kT2Zmc2V0KQogICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29udGV4dCwg
Zm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRPcmln
aW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4
IGI2ZGU3OWU4YjI0NjU5OWZkMmE0NTkyNGM3Njk0YTIxN2E4OGIxOTcuLjkwYzU5Y2U5NTQxMDEz
M2RjNWE5OWRhZTExOThmMTVjNjVmOTk1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlVGhpY2tuZXNzKDEuMGYpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNv
bGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAw
LCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMCwgMCwgMjU1KSk7CiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUo
YWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBw
aXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwogICAg
IGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
ICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpLCBJ
bnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRo
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkp
KTsKQEAgLTExMywxMyArMTEzLDEzIEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIAogICAg
IGludCB0b3BTdGFydCA9IHBhZGRpbmdUb3AoKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQoKS5z
ZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5m
by5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSk7CiAgICAgCiAgICAg
aW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCks
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpICsgdG9wU3RhcnQpKTsKICAgICAKICAgICBpbnQgYmFzZWxpbmUgPSByb3VuZFRv
SW50KGJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFs
TGluZSkpOwogICAgIAotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDI1
NSwgMCwgMCksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcigyNTUsIDAsIDApKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA1MTliYjM4ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3
ZjA2NWQyZDdiLi45MmUyMTgyNTA1MTg5N2MxZGNiOGFiY2Y4MTM2YmFjMDk4ZGQzZDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rp
b246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
CiAgICAgCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNr
bmVzcyk7CiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvcikpOwogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRP
ZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIGRlbm9taW5hdG9yV3JhcHBlci0+b2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNl
dC55KCkpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKaW5kZXggYjg2ZTM2MjlhNmI3OGU0MDRhNWZi
YWRlNDQ3OGQyZTQ3NDU0NzY5MS4uZTllNTM0YzQzZDU0N2ZlYmQzYmViYjYzMzc5YjAxY2RlZjk2
MmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNZW5jbG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
aW5mby5jb250ZXh0KCkpOwogICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25l
c3MoMSk7CiAgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKLSAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgICAgIC8vIFRPRE8gYWRkIHN1cHBv
cnQgZm9yIG5vdGF0aW9uIHZhbHVlIHVwZGlhZ29uYWxhcnJvdyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDY2CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbm90YXRpb25hbFZhbHVlU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAobm90YXRpb25W
YWx1ZXNbaV0gPT0gInVwZGlhZ29uYWxzdHJpa2UiKQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgICAgICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tp
XSA9PSAiaG9yaXpvbnRhbHN0cmlrZSIpCiAgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCku
ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgaGFsZmJveEhlaWdodCksIEludFBvaW50KGxl
ZnQgKyBib3hXaWR0aCwgdG9wICsgaGFsZmJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImNpcmNsZSIpIHsKLSAgICAgICAgICAgICAgICBpbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3RWxs
aXBzZShyZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0g
ImxvbmdkaXYiKQogICAgICAgICAgICAgICAgIGlzRGVmYXVsdExvbmdEaXYgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmNwcAppbmRleCAzY2ZlYjIxY2E4ZDI1N2YzZWZlNTBhYTFlOWNkYzE3ZTQ5MjJjMWFj
Li42NjAyMTBmMzRjZjYwY2NiZjc3NmY1MWJkMDBmMTM2N2RiY2JlZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcApAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFp
bnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGlu
Zm8uY29udGV4dCgpKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRh
Lm1vZGUoKSA9PSBEcmF3U2l6ZVZhcmlhbnQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RyZXRjaHlE
YXRhLnZhcmlhbnQoKS5nbHlwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXgg
NjkyNWE3OWQ1NTlkNjFiZWRkOTRjYzg1ZDdkMDdlNzQyMzRlOWJiNS4uMTgwODI5ZGYwOTEwNzQ0
M2I3MTFlNjUwZjQ0MmI0ZWQyODI5YjljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpw
YWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAKICAgICBpbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICog
c3R5bGUoKS5mb250U2l6ZSgpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRM
aW5lSm9pbihNaXRlckpvaW4pOwogICAgIGluZm8uY29udGV4dCgpLnNldE1pdGVyTGltaXQoc3R5
bGUoKS5mb250U2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggYWM0YTE1ZGQ4NGE0OTM0NDJmMzQ1OWM1
YTQ1MDIxMzE0YTAxNzVlNi4uYzI0M2QyMGU4YTdiMmEwODc3ZDUwOTMxMzFlNGY4YmUyODA5YWM2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvb3QuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290Ojpw
YWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAog
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOwog
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvcikpOwogCiAgICAgLy8gVGhlIHByZWZlcnJlZCB3aWR0aCBvZiB0aGUgcmFkaWNhbCBp
cyBzb21ldGltZXMgaW5jb3JyZWN0LCBzbyB3ZSBkcmF3IGEgc2xpZ2h0bHkgbG9uZ2VyIGxpbmUg
dG8gZW5zdXJlIGl0IHRvdWNoZXMgdGhlIHJhZGljYWwgc3ltYm9sIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzI2KS4KICAgICBMYXlvdXRVbml0IHNpemVFcnJv
ciA9IHJhZGljYWwtPnRyYWlsaW5nU3BhY2VFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCBlMGNhZWFjOWNkODAxYTFiOGI3MzBiOGY0YjlkN2E2
ZDcxN2ViYWFkLi5mY2M4YjdhODg5MzU0YzIyYTU2MGRkOWEyOWZiODFlYTYzYjk3Mjk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTg1LDcgKzE4NSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdl
KiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKICAgICAgICAgaWYgKGltYWdlKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VSZWN0LnNpemUoKSkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAg
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5n
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6
ZSgpKSk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5s
ZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5l
UGllY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuY3BwCmluZGV4IGM5MzlhZTc1ZDFkZmJiOTNjMjAwZDk0MGNhNmQ0YTI5YTc2YTZiZDAu
LjVkZWRiNTU2MmI4MzQxYTdhZTY3NTk5Mzg2ZDBiOTEwZjhlYzMzNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcApAQCAtMjA5LDIw
ICsyMDksMTggQEAgdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmQKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZS5jb2xvclNw
YWNlKCk7Ci0KICAgICBmb3IgKEltYWdlUGllY2UgcGllY2UgPSBNaW5QaWVjZTsgcGllY2UgPCBN
YXhQaWVjZTsgKytwaWVjZSkgewogICAgICAgICBpZiAoKHBpZWNlID09IE1pZGRsZVBpZWNlICYm
ICFmaWxsKCkpIHx8IGlzRW1wdHlQaWVjZVJlY3QocGllY2UsIGRlc3RpbmF0aW9uUmVjdHMsIHNv
dXJjZVJlY3RzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpc0Nvcm5l
clBpZWNlKHBpZWNlKSkgewotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1tw
aWVjZV0sIG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdl
LCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCBvcCk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSA9IGlzSG9yaXpvbnRhbFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpUaWxl
UnVsZT4oaG9yaXpvbnRhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7CiAgICAgICAgIElt
YWdlOjpUaWxlUnVsZSB2UnVsZSA9IGlzVmVydGljYWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2Fz
dDxJbWFnZTo6VGlsZVJ1bGU+KHZlcnRpY2FsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgY29sb3JTcGFj
ZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxl
c1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJh
d1RpbGVkSW1hZ2UoKmltYWdlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNb
cGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDJi
NjQ1MDc3NjcwODY4ODIwY2NlOTdmMDA0YTU0NTU5NzJmMGViMjcuLmJmMWMyMTkwMmQyZjRmMDc0
MGU2N2NkZTFlMTQzNzZmYjM2MDA5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCkBAIC05MDIsNyArOTAyLDYgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0VGV4dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KExheW91dFVuaXQmIGxvZ2ljYWxUb3As
IExheW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93QmxvY2tEaXJlY3Rp
b25FeHRlbnQodGV4dFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAg
ICAgZmxvYXQgdGV4dFN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTdHJva2VXaWR0aDsgfQotICAgIHN0YXRpYyBDb2xvclNwYWNlIGNvbG9yU3BhY2Uo
KSB7IHJldHVybiBDb2xvclNwYWNlU1JHQjsgfSAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGFkZGlu
ZyBjb2xvciBzcGFjZSBoYW5kbGluZyBpbnRvIHRoZSBDb2xvciBjbGFzcy4KICAgICBmbG9hdCBv
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHk7IH0K
ICAgICBDb250cm9sUGFydCBhcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29udHJvbFBhcnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UpOyB9CiAgICAg
QXNwZWN0UmF0aW9UeXBlIGFzcGVjdFJhdGlvVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEFzcGVjdFJhdGlvVHlwZT4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9U
eXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcAppbmRleCBlZjc1N2U3MzYzZjM0OGRiZGZmYTUyZmNjZGU4YWQyY2MwMmI3MzU2Li5lYTQw
MjA3MjkwN2Q2NDhhYzM4ZDUxYWE2NWMzYjUwY2EwNWIxOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBA
IHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5m
bykKIAogICAgIGltYWdlRWxlbWVudCgpLnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1S
ZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0lt
YWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3Qp
OwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5k
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmlu
ZGV4IDFkMDEzYWQ3YzFlMGU4YzQwMTQwMDg2OGEyNzI1OTNhYmFjYTJkMDUuLjI5NGNiNDYyM2Rk
NzgxM2RiNjc4ODM3NWZkNmVhMjZkM2JkNjVlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9p
ZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgZWxz
ZSBpZiAoUGF0dGVybiogcGF0dGVybiA9IGNvbnRleHQuc3Ryb2tlUGF0dGVybigpKQogICAgICAg
ICBjb250ZXh0LnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKICAgICBlbHNlCi0gICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKGNvbnRleHQuc3Ryb2tlQ29sb3IoKSwgY29udGV4dC5zdHJva2VD
b2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb250ZXh0LnN0cm9r
ZUNvbG9yKCkpOwogfQogCiB2b2lkIFJlbmRlclNWR1BhdGg6OnN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNGYzYmQ3ODgyN2M1
NjIwZDE1Yjc2MjdmMjZmNjVlYTRhNzBjZjFhMy4uMTZhZWRiNzMyNjZkYmZmZjdjOTkzYWZiOWY1
OGFkZDg3ZDY3ZDZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRl
ckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7CiAKICAgICAgICAg
ICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0
ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVz
b2x1dGlvbigpLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIoKnJlc3VsdEltYWdlLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgbGFzdEVmZmVj
dC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoKnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1
dGlvbigpKTsKIAogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNo
ZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAppbmRleCBm
Yjg4ZmM4YjRiMjhiNzg1OWRkOGYyMTViOTAyNTFkN2UwZDI4M2U3Li40YjIwZGE1OGY5ZTVjM2Vj
OTA1ZjllYTM2Y2YzOGRmNmQ3NjNjYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCkBAIC00
Miw3ICs0Miw2IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291
cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSCiAgICAgQVNTRVJUKHJlc291cmNl
TW9kZSAhPSBBcHBseVRvRGVmYXVsdE1vZGUpOwogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUm
IHN2Z1N0eWxlID0gc3R5bGUuc3ZnU3R5bGUoKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2Ug
PSBzdHlsZS5jb2xvclNwYWNlKCk7CiAKICAgICBib29sIGlzUmVuZGVyaW5nTWFzayA9IHJlbmRl
cmVyLnZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yUmVu
ZGVyaW5nU1ZHTWFzazsKIApAQCAtNTEsNyArNTAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
U29saWRDb2xvcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3Qg
UgogICAgICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3ZnU3R5bGUuZmlsbE9wYWNpdHkoKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKDEpOwotICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yKTsKICAgICAgICAgaWYgKCFpc1JlbmRlcmluZ01h
c2spCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgp
KTsKIApAQCAtNjEsNyArNjAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6
YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUgogICAgICAgICAv
LyBXaGVuIHJlbmRlcmluZyB0aGUgbWFzayBmb3IgYSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIs
IHRoZSBzdHJva2UgY29kZSBwYXRoIGlzIG5ldmVyIGhpdC4KICAgICAgICAgQVNTRVJUKCFpc1Jl
bmRlcmluZ01hc2spOwogICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZS5zdHJva2VP
cGFjaXR5KCkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jb2xvcik7CiAKICAg
ICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0
LCBzdHlsZSwgcmVuZGVyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA2OWYyOTYwNmM2Y2NmMTA0MGQ1YTA5YTM1ZmQz
YjI0M2M4OTY2ZjY4Li42ZTVkZjMwM2UyMmQwODhjNjFmYTJmMzAwZGQ0NWEzMzRkZDU5YzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAKQEAgLTIyNSw4ICsyMjUsOCBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0
aW9uQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKICAgICAgICAgaWYgKCFmcmFnbWVu
dFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmNvbmNhdENUTShmcmFnbWVudFRyYW5zZm9ybSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0
RnJhZ21lbnQoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3Np
dGlvbiwgJnN0eWxlKSwgYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0
RnJhZ21lbnQoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3Np
dGlvbiwgJnN0eWxlKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAgICAgICBtX3BhaW50aW5nUmVz
b3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQwMmVl
NTBiZDZjYTM3ZTYwYTUyZWQ0ZjY4MDQ2ZWZmOTA4MWE4YmMuLjZjOTkwNTUyZjgxY2ExNDkwMDg3
OTE4OGMxNjE0ZTE3ZjEzYzUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgUGFpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hhZG93KSB7Ci0g
ICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJvdW5k
VG9JbnQoc2hhZG93LT54KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+cmFk
aXVzKCksIHNoYWRvdy0+Y29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAg
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFk
b3ctPngoKSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hh
ZG93LT5jb2xvcigpKTsKICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5U
cmFuc3BhcmVuY3lMYXllcigxKTsKICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gRW5k
U2hhZG93TGF5ZXI7CiAgICAgICAgIH0KQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiYgaW1hZ2VCdQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgYm91bmRpbmdCb3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYm91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKaW5kZXggZGU4YTIy
YmFkMmI1YWM3ZmU5NDkxYzE3ODAzMjkxODE3MmQwYTc2Yi4uYzZiNDk1OGI3MWVmNTQzMjBkNGMy
YWQ0MmIzMThmOTViMTRlOTNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9y
LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIGZsb2F0
IGFscGhhID0gYW5pbWF0ZWRDb2xvci5hbHBoYSgpOwogICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tQ29sb3Iu
YWxwaGEoKSwgdG9Db2xvci5hbHBoYSgpLCB0b0F0RW5kT2ZEdXJhdGlvbkNvbG9yLmFscGhhKCks
IGFscGhhKTsKIAotICAgIGFuaW1hdGVkQ29sb3IgPSB7IHsgcm91bmRBbmRDbGFtcENvbG9yQ2hh
bm5lbChyZWQpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGdyZWVuKSwgcm91bmRBbmRDbGFt
cENvbG9yQ2hhbm5lbChibHVlKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSkgfSwg
Q29sb3JTcGFjZVNSR0IgfTsKKyAgICBhbmltYXRlZENvbG9yID0geyByb3VuZEFuZENsYW1wQ29s
b3JDaGFubmVsKHJlZCksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoZ3JlZW4pLCByb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKGJsdWUpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGFscGhh
KSB9OwogfQogCiBmbG9hdCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDc1NDRhNzZmMzVmMzVk
YTNhYTU5ZGIyNzU4YTFhNjJhOWEyOWZmOTIuLjc2OWM1NGVhNmJmOGRmOTdhZWYxY2Y1MDZmODBm
ZDMzMGYzMjIwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApA
QCAtMTM5LDcgKzEzOSw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNvbnRhaW5lclNpemUoKSBjb25z
dAogfQogCiB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUg
Y29udGFpCiAgICAgYWRqdXN0ZWRTcmNTaXplLnNjYWxlKHJvdW5kZWRDb250YWluZXJTaXplLndp
ZHRoKCkgLyBjb250YWluZXJTaXplLndpZHRoKCksIHJvdW5kZWRDb250YWluZXJTaXplLmhlaWdo
dCgpIC8gY29udGFpbmVyU2l6ZS5oZWlnaHQoKSk7CiAgICAgc2NhbGVkU3JjLnNldFNpemUoYWRq
dXN0ZWRTcmNTaXplKTsKIAotICAgIGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSk7CisgICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIHNl
dEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogfQpAQCAtMTc5LDcgKzE3OSw3IEBAIFBhc3NOYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogICAgIGlm
ICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVj
dCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAgICAgLy8gRklYTUU6IFdLKEJ1ZyAxMTM2NTcp
OiBXZSBzaG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhlcmUuCiAgICAgcmV0dXJuIGJ1
ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogI2VuZGlmCiAKIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIEZsb2F0UmVjdCB6b29t
ZWRDb250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29udGFpbmVyU2l6ZSk7
CiAgICAgem9vbWVkQ29udGFpbmVyUmVjdC5zY2FsZSh6b29tKTsKQEAgLTIwNCw3ICsyMDQsNyBA
QCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJ
bnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
b250ZXh0LCB0cnVlKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1
ZmZlci4KICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250
ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFp
bmVyUmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlTm9ybWFsKTsKKyAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250
YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgaWYgKGNvbnRleHQuZHJh
d0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAKQEAgLTIxOSwxMCArMjE5LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAg
dW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLnNjYWxlKDEgLyBpbWFnZUJ1ZmZlclNjYWxlLndpZHRo
KCksIDEgLyBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAogICAgIGNvbnRleHQuc2V0RHJh
d0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBz
Y2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZS0+
ZHJhd1BhdHRlcm4oY29udGV4dCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9
CiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCAx
YWJhOTJhZTg3OTNhNGNlNGViODM2NzU4ODY2NzVkOGEwYTE0ZTFiLi43OTgwMzE0ZTg3OTlmNzA5
NDBlYjRhMDk3Y2Q5ODQ0NDgyNWYyMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaApAQCAtOTMsOSArOTMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkdW1w
KFRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFNWR0ltYWdlKEltYWdlT2JzZXJ2
ZXImLCBjb25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3Rm9yQ29u
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsCisgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9t
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCog
cm9vdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDVhMzgzNTExNjUwOGQ3ZDBkZmNiYTBl
NDM2MGU2NWNmNTMxMDc0MzAuLjRlMTYxZTNmMGQ0NGE2YWE2ZWE2YzAzZjVlZDlhYmMxOWViYWVh
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcApAQCAtMzUsMTUgKzM1LDE1IEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6c2l6ZSgpIGNvbnN0CiB9CiAKIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0g
ICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKQogewotICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4
dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2Us
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIo
Y29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29s
b3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgbV9pbWFnZS0+
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20s
IHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwg
ZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAogUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9y
Q29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDZhYmJiYzZk
MDIyZTAwYmNjOWIxODZmYTU5ODg4YjlhZDdlZWE1ZjMuLmRlOThmZjIxNjYxZTNkNDQyMTNjYjJl
NzZkMWYzMmQ0Y2NmYzMxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGlu
dHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgRmxvYXRTaXplJiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVy
YXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFs
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHAKaW5kZXggNjYxOGNmNTQ4NGU0OWVlMjFjY2NmNjc4OTRkMDAyZjYwZTE3ZTgwNi4u
N2Y3YTljMzJkZjg1ZjFiMWU4NDE2MDc1ZThjYjgxOGVlZWQ2NzZjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
bV9pbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHJl
c3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKCptX2ltYWdlLCBkZXN0UmVjdCwgc3JjUmVj
dCk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKaW5kZXggNjFmMTliZjE2NTAxYTlkZmYxNmQ3
YjllODk4MjA0ODRlMjExMTVkOC4uY2JjMzg1NjM3MTNiZjdlN2RiOTY4ZDE3ZmViOTY5MzEwOTI1
MmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xp
ZW50LmNwcApAQCAtODcsMTAgKzg3LDEwIEBAIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50Ojpk
cmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBjb250CiAgICAg
RmxvYXRSZWN0IGluc2V0UmVjdCA9IG92ZXJsYXkuYm91bmRzKCk7CiAKICAgICBpZiAob3Zlcmxh
eS5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpIHsK
LSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAy
NTUsIDApKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTUwKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAs
IDI1NSkpOwogICAgICAgICBpbnNldFJlY3QuaW5mbGF0ZSgtMjApOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCmluZGV4IGYxZTc0OTkzYWM3ODQy
MGU1MTU2OTgwMTQxNzgwOGU4YWVkYmEzNmMuLjUxOTJmYjgxOWI4MzkwMTllY2M5ZWYwOTllMGY2
ZGIwZWMzYTVhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERG
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1Mu
bW0KQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0
aERldmljZVdoaXRlKENHRmxvYXQgd2hpdGUsIENHRmxvYXQgYWxwaGEpCiAgICAgQ0dDb250ZXh0
U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICBDR0Zsb2F0IGhlaWdodCA9IFdlYktpdExpbmtlZE9u
T3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0ZMSVBQRURfU0hBRE9XUykgPyAyLjBm
IDogLTIuMGY7CiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6
ZU1ha2UoMC4wZiwgaGVpZ2h0KSwgMy4wZiwgW1tzZWxmIGNsYXNzXSBzaGFkb3dDb2xvcl0pOwot
ICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9y
KENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIENHQ29udGV4dFNldEZp
bGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSkpOwog
ICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHBhZ2VSZWN0KTsKICAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNvbnRleHQpOyAgICAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9X
ZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tCmluZGV4IDFlMGUwN2M0Zjk3ZmVlNGFhNDIwMTNi
MTUxNmNiNGM5MzhkOTk4ZDIuLjkwNzcyMjA2MzFjYTU4YWJkODIyYzEyYzkzNmFkYzExZDA1YjU5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5t
bQpAQCAtNDIsNyArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpZHJh
d1JlY3Q6KE5TUmVjdClyZWN0CiB7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBXS0dldEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29s
b3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVk
Q0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKICAgICBXS1JlY3RGaWxsKGNvbnRleHQsIFtzZWxmIGJv
dW5kc10pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4
dHJhcy5tbQppbmRleCAwMDI1YWUyOTMwMjE3YTJhZTY2MmZmMDRkNmEwYjY0YzliNGJkZGFkLi5j
Zjc4ZGIzM2I3ZjJlN2FlNjAwMGM3NzlkNmNiYjcxMDRmNzZiZmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KQEAgLTEwMCw3ICsxMDAsNyBA
QCBzdGF0aWMgQk9PTCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29uc3QgVW5pQ2hhciAqYnVmZmVyLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIENHRmxvYXQgYmx1ZTsKICAgICAgICAgQ0dGbG9hdCBh
bHBoYTsKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2
aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxw
aGE6JmFscGhhXTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdC
QShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1h
a2VSR0JBKHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSk7
CiAKICAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZs
b2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGln
aGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGln
aGxpZ2h0Vmlldy5tbQppbmRleCBkYjA1YjM0ZGJlYjk0ZDY4ZTY2ZTJkYmZiYzI5MjdjMjZmNWZj
MTBiLi4zOGFiYmI0ZDQxNjE2ODlmZWI2ODJmMDcwODJiZWFhM2E5NjJkNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3
Lm1tCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxh
eWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAgICAgRmxvYXRRdWFkIHBh
ZGRpbmdRdWFkID0gaGlnaGxpZ2h0LT5xdWFkc1syXTsKICAgICBGbG9hdFF1YWQgY29udGVudFF1
YWQgPSBoaWdobGlnaHQtPnF1YWRzWzNdOwogCi0gICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0g
Y2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPm1hcmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICBib3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+
Ym9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhZGRpbmdMYXllci5maWxs
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+cGFkZGluZ0NvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvciho
aWdobGlnaHQtPmNvbnRlbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgbWFyZ2lu
TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQtPm1hcmdpbkNvbG9yKTsK
KyAgICBib3JkZXJMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Ym9y
ZGVyQ29sb3IpOworICAgIHBhZGRpbmdMYXllci5maWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhp
Z2hsaWdodC0+cGFkZGluZ0NvbG9yKTsKKyAgICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2Fj
aGVkQ0dDb2xvcihoaWdobGlnaHQtPmNvbnRlbnRDb2xvcik7CiAKICAgICBsYXllclBhdGhXaXRo
SG9sZShtYXJnaW5MYXllciwgbWFyZ2luUXVhZCwgYm9yZGVyUXVhZCk7CiAgICAgbGF5ZXJQYXRo
V2l0aEhvbGUoYm9yZGVyTGF5ZXIsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkKTsKQEAgLTMwMSw3
ICszMDEsNyBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29u
c3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAKICAgICBbc2VsZiBfYXR0YWNoOnBhcmVudExheWVy
IG51bUxheWVyczpudW1MYXllcnNdOwogCi0gICAgQ0dDb2xvclJlZiBjb250ZW50Q29sb3IgPSBj
YWNoZWRDR0NvbG9yKGhpZ2hsaWdodC0+Y29udGVudENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0
LT5jb250ZW50Q29sb3IpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IG51bUxheWVy
czsgKytpKSB7CiAgICAgICAgIENBU2hhcGVMYXllciAqbGF5ZXIgPSBbX2xheWVycyBvYmplY3RB
dEluZGV4OmldOwogICAgICAgICBsYXllci5maWxsQ29sb3IgPSBjb250ZW50Q29sb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBjNWM3ZTdkMWFjN2VkMzQyYWU3ODY4
ZGU1ZTgwMWE2NTIzNTQ2NTFkLi5mMjE5MDYwZWFhNjdhMTQ0N2RjYzAwODEwM2NiMWU2YmQ5MmU4
N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEwMjksNyArMTAy
OSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExv
YWRlciogbG9hZGVyKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIG5zQ29sb3IoY29s
b3IpOwogI2Vsc2UKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggMWM3ZmE0YTQ4
OWIzOTFhYzBkN2NjOGZlZjIxY2IwYzc5MWYzN2MxMy4uYWMwZTc3MjRmY2MxMTZhZDdhOTY5OTVk
ZDQxMmFiMmViOWM2Yjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZp
ZXcubW0KQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9t
Q2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbAogICAgICAg
ICAgICAgTlNSZWN0RmlsbChyZWN0KTsKICNlbHNlCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICAgICAgQ0dDb250ZXh0
U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hp
dGUpKTsKICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCByZWN0KTsKICNlbmRpZgog
ICAgICAgICB9CkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVz
RnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKICAg
ICAgICAgICAgIE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xv
cihDb2xvcjo6Y3lhbiwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgICAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6
Y3lhbikpOwogICAgICAgICAgICAgV0tSZWN0RmlsbChjZ0NvbnRleHQsIHJlY3QpOwogI2VuZGlm
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5k
aWNhdGVMYXllci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXll
ci5tbQppbmRleCA1ZWQ4NGJjNzM4MmU4ZjcyMDRiYzNlMThlMjllMTViZGM4N2Y0MDA2Li5mOTQ0
NGRjMzc0ZTA0MmI2ZDA1MDc3MGEyNjA3MmUxZTdiZTEyYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiAgICAgLy8gQmx1ZSBoaWdobGlnaHQgY29sb3IuCiAgICAg
c3RhdGljIENvbG9yIGhpZ2hsaWdodENvbG9yKDExMS4wZiAvIDI1NS4wZiwgMTY4LjBmIC8gMjU1
LjBmLCAyMjAuMGYgLyAyNTUuMGYsIDAuNjZmKTsKLSAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9
IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IHNlbGYuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHRDb2xvcik7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCAxYTRmNzUyMTE2NTk5ODg0ZWZkMjY0NTMxOGE0YzVjYzE0N2MxMjg3Li4wODA1MjIxMjljMWNj
NDBkZmNmMDA2MDIwN2MzMjcyM2UzNGNhYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC04ODgsNyArODg4LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdh
bWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIF9wcml2
YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBh
bHBoYToxXSByZXRhaW5dOwogI2Vsc2UKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0g
Q0dDb2xvclJldGFpbihjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yUmV0YWluKGNh
Y2hlZENHQ29sb3IoQ29sb3I6OndoaXRlKSk7CiAjZW5kaWYKICAgICBfcHJpdmF0ZS0+aW5jbHVk
ZXNGbGF0dGVuZWRDb21wb3NpdGluZ0xheWVyc1doZW5EcmF3aW5nVG9CaXRtYXAgPSBZRVM7CiAK
QEAgLTExODcsNyArMTE4Nyw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFk
UHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gW3ByZWZl
cmVuY2VzIHJldGFpbl07CiAgICAgX3ByaXZhdGUtPm1haW5GcmFtZURvY3VtZW50UmVhZHkgPSBO
TzsKICAgICBfcHJpdmF0ZS0+ZHJhd3NCYWNrZ3JvdW5kID0gWUVTOwotICAgIF9wcml2YXRlLT5i
YWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yUmV0YWluKGNhY2hlZENHQ29sb3IoQ29sb3I6OndoaXRl
LCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9
IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUpKTsKIAogICAgIFdlYkZy
YW1lVmlldyAqZnJhbWVWaWV3ID0gbmlsOwogICAgIGZyYW1lVmlldyA9IFtbV2ViRnJhbWVWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOiBDR1JlY3RNYWtlKDAsMCxmcmFtZS5zaXplLndpZHRoLGZy
YW1lLnNpemUuaGVpZ2h0KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0lt
YWdlQ0cuY3BwCmluZGV4IDk5YzIzZmU4OWIwYjMyMzNiYTkxMjE3MTFkMDU0NzVmZDQxODNkMzIu
LmJjYWI2MGI1Y2RmOTdlZjBkYjIxYTAyNTMxYTgwOGM3MjEyNGI1ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01Nyw2ICs1Nyw2IEBAIFdL
SW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdL
SW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFn
ZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIEZsb2F0UmVjdCByZWN0
KEZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVh
clJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VS
ZWYsIGltYWdlU2l6ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmljZVJHQiwgcmVjdCwgcmVjdCk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6
ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2UoKS5sZWFr
UmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51
Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4
dERhdGEuY3BwCmluZGV4IGViODc2NzM4ZGVkODcyOGQ5MWQ1OTcwOWY5ODM5OTYyNTg0ZjBiNjgu
LmI1NDU0ZjQ3MmY0MDY0MzAyNmRlZGU3MmU5NzE2YjgyNmI2NzFkMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2EKIAogICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0
IHRoZSByb3VuZGluZyBzdGFydGVneSBmb3IgU2hhcmVhYmxlQml0bWFwLgogICAgIG1fY29udHJv
bGxlZEltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShpbWFn
ZS0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBtX2NvbnRy
b2xsZWRJbWFnZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCktPmRyYXdJbWFnZSgqaW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAgIG1fY29udHJvbGxlZEltYWdlLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKCppbWFnZSwgSW50UG9pbnQoKSk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCBmMGUyNjM2MmU1MWI3MDkzYmVmNGIwZjE5N2QwYjNlMjllOWQ2MmIwLi4z
OWRmN2ZiMWFlYTliNjAwYjIwNjE3YzBhMmM3MzZmNmI5NDRhNDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzQyLDcgKzc0Miw3
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlCiBzdGF0aWMgdm9pZCBlbmNvZGVJbWFnZShBcmd1
bWVudEVuY29kZXImIGVuY29kZXIsIEltYWdlJiBpbWFnZSkKIHsKICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRT
aXplKGltYWdlLnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAg
Yml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCkpOwogCiAgICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQppbmRleCAyY2NiYWM3ZmM3ZjI3MDljMGZhYzJlMjBlZWM5OWY0MGNiYWY5ZmM1Li5jN2Jj
NjEwMWRhNGMzNDFmMDZmNzk4NjIyNjc4YWZhYjUzYjJlZWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTI3NSw3
ICsyNzUsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogCiAjaWZuZGVmIE5ERUJVRwogICAg
IGlmIChtX2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNjYWxlZExheWVyQm91
bmRzLCBDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywgQ29sb3IoMjU1LCAwLCAwKSk7CiAjZW5k
aWYKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBlMGJhYjM3M2VjZWFhODM5ZGY4YzE2ZDIwYTA5ZjYyYjRhY2Y5NWU4Li5lN2VmZjJm
MGQxYmJmODE5ZDE5M2E1MDI2YjZhMmZmNmRlZWNlZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODk0LDcgKzg5NCw3IEBAIHN0
YXRpYyBXZWJDb3JlOjpDb2xvciBzY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKFdLV2ViVmlldyAq
d2ViVmlldykKIAogICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAKLSAg
ICBhdXRvIHVpQmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRX
aXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNl
UkdCKV0pOworICAgIGF1dG8gdWlCYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBh
bGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXSk7CiAgICAgW19zY3Jv
bGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CiAKICAg
ICAvLyBVcGRhdGUgdGhlIGluZGljYXRvciBzdHlsZSBiYXNlZCBvbiB0aGUgbGlnaHRuZXNzL2Rh
cmtuZXNzIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KaW5kZXggMzZjZGFiYTNjZGZm
OTc2OTRjODQ0NjMwMTJlYTM5NWUxMjA2NmY5Zi4uNWVlNTVhNWU2ZDcxNGQ4MDFhY2I1YjM4ODE5
YjgwNmZhN2IwNTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLSW5z
cGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tJ
bnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0yMjksMTAgKzIyOSwxMCBAQCBzdGF0aWMgdm9p
ZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1
YWQpCiAgICAgRmxvYXRRdWFkIHBhZGRpbmdRdWFkID0gaGlnaGxpZ2h0LnF1YWRzW29mZnNldCAr
IDJdOwogICAgIEZsb2F0UXVhZCBjb250ZW50UXVhZCA9IGhpZ2hsaWdodC5xdWFkc1tvZmZzZXQg
KyAzXTsKIAotICAgIG1hcmdpbkxheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxp
Z2h0Lm1hcmdpbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBib3JkZXJMYXllci5m
aWxsQ29sb3IgPSBjYWNoZWRDR0NvbG9yKGhpZ2hsaWdodC5ib3JkZXJDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgcGFkZGluZ0xheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3Io
aGlnaGxpZ2h0LnBhZGRpbmdDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGVu
dExheWVyLmZpbGxDb2xvciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgbWFyZ2luTGF5ZXIuZmlsbENvbG9yID0gY2FjaGVk
Q0dDb2xvcihoaWdobGlnaHQubWFyZ2luQ29sb3IpOworICAgIGJvcmRlckxheWVyLmZpbGxDb2xv
ciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0LmJvcmRlckNvbG9yKTsKKyAgICBwYWRkaW5nTGF5
ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQucGFkZGluZ0NvbG9yKTsKKyAg
ICBjb250ZW50TGF5ZXIuZmlsbENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVu
dENvbG9yKTsKIAogICAgIGxheWVyUGF0aFdpdGhIb2xlKG1hcmdpbkxheWVyLCBtYXJnaW5RdWFk
LCBib3JkZXJRdWFkKTsKICAgICBsYXllclBhdGhXaXRoSG9sZShib3JkZXJMYXllciwgYm9yZGVy
UXVhZCwgcGFkZGluZ1F1YWQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyB2b2lkIGxheWVy
UGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIAog
ICAgIFtzZWxmIF9jcmVhdGVMYXllcnM6bnVtTGF5ZXJzXTsKIAotICAgIENHQ29sb3JSZWYgY29u
dGVudENvbG9yID0gY2FjaGVkQ0dDb2xvcihoaWdobGlnaHQuY29udGVudENvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBDR0NvbG9yUmVmIGNvbnRlbnRDb2xvciA9IGNhY2hlZENHQ29s
b3IoaGlnaGxpZ2h0LmNvbnRlbnRDb2xvcik7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgbnVtTGF5ZXJzOyArK2kpIHsKICAgICAgICAgQ0FTaGFwZUxheWVyICpsYXllciA9IFtfbGF5
ZXJzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAgIGxheWVyLmZpbGxDb2xvciA9IGNvbnRlbnRD
b2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCmluZGV4IDg4NGVlMTRiZDk2NjY2Yjc4NzgyYjQ1MDMwMThjNzRlN2IxZGE0
MGMuLjM4ODliZDkyNDRiMzNkNjE1MDgwNzVlYzE5ODEwYjNjMzllY2YwOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShT
aGFyZWFibGVCaXRtYXAqIGJpdG1hcCwgY29uc3QgVXBkYXRlSW5mbyYKICAgICAgICAgICAgIGlm
IChjb2xvci5oYXNBbHBoYSgpKQogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVh
clJlY3Qoc3JjUmVjdCk7CiAgICAgICAgICAgICBpZiAoY29sb3IuYWxwaGEoKSA+IDApCi0gICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHNyY1JlY3QsIGNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJl
Y3Qoc3JjUmVjdCwgY29sb3IpOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgYml0bWFwLT5w
YWludChncmFwaGljc0NvbnRleHQsIGRldmljZVNjYWxlRmFjdG9yKCksIHVwZGF0ZVJlY3QubG9j
YXRpb24oKSwgc3JjUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCmluZGV4IDJmNDhkYmIxZDQ0MWNlNzVk
NDY0ODc2OWM2ZTUzYTY2ZDk5MmJjMjMuLjZmOTExNzY1NDBiZGVjYjUzMTBiN2JkOTY0YjY5ZDY1
NmU2YjMwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dl
c3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFj
dGl2ZVRyYW5zaXRpb24KICAgICAgICAgICAgIFttX3NuYXBzaG90VmlldyBsYXllcl0uY29udGVu
dHMgPSBzbmFwc2hvdC0+YXNMYXllckNvbnRlbnRzKCk7CiAgICAgICAgIENvbG9yIGNvcmVDb2xv
ciA9IHNuYXBzaG90LT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGNvcmVDb2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBhZG9wdE5TKFtbVUlDb2xv
ciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29yZUNvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKV0pOworICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhb
W1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvcmVDb2xvcild
KTsKICAgICB9CiAKICAgICBbbV9zbmFwc2hvdFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmJhY2tn
cm91bmRDb2xvci5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDhlZTZhN2E5OGYwMjhkYmMz
ZTBkOGNkOGFiYWU1ZTRjNDFkOTBiZjEuLmM0M2VmM2ExZTE3NTMzNzVlOTRiZTZkMTMxYmJjNzcw
ZDFmYjc5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03ODksNyArNzg5LDcgQEAgc3RhdGljIE5T
VmFsdWUgKm5zU2l6ZUZvclRhcEhpZ2hsaWdodEJvcmRlclJhZGl1cyhXZWJDb3JlOjpJbnRTaXpl
IGJvcmRlclJhZGl1cywKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBSZXRhaW5Q
dHI8VUlDb2xvcj4gaGlnaGxpZ2h0VUlLaXRDb2xvciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9j
XSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24u
Y29sb3IsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXSk7CisgICAgICAgIFJldGFpblB0
cjxVSUNvbG9yPiBoaWdobGlnaHRVSUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2Nd
IGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5j
b2xvcildKTsKICAgICAgICAgW19oaWdobGlnaHRWaWV3IHNldENvbG9yOmhpZ2hsaWdodFVJS2l0
Q29sb3IuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCA0MGI0ZjdhZTA1MThh
YjUyY2ZkN2FlZTRmNjQ4NWM3ZDQ5MjM3MWY0Li42NmM4YjBmOWRjOTk3NWJmMmY1ZGY3MDVjNWRl
Y2ZhZGRjYjQ5MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGVtCiAKICAgICAgICAgQ29sb3IgY29yZUNvbG9yID0gc25hcHNob3Qt
PmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoY29yZUNvbG9yLmlzVmFsaWQoKSkKLSAg
ICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoY29yZUNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNhY2hlZENH
Q29sb3IoY29yZUNvbG9yKTsKICAgICAgICAgbV9jdXJyZW50U3dpcGVTbmFwc2hvdCA9IHNuYXBz
aG90OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMzAzZTFiNzMzNmJhMTU3YzgwYjYzNjE3MjA4M2Mz
OTU3MTJkNTM2My4uOGE3NjMxZTExMjgyNzYzZmEzOTM3MDk0NGFkZTQwZmI5YjljOTgwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCkBAIC00NjAsMTMgKzQ2MCwxMyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpkcmF3UmVj
dChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjbwogICAg
IFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlY3RzRm9yVGV4dE1hdGNoZXNJblJlY3QoYm9yZGVy
SW5mbGF0ZWREaXJ0eVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZC4KLSAgICBn
cmFwaGljc0NvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0LCBvdmVybGF5QmFja2dyb3VuZENvbG9y
LCBDb2xvclNwYWNlU1JHQik7CisgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVj
dCwgb3ZlcmxheUJhY2tncm91bmRDb2xvcik7CiAKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogCi0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09m
ZnNldFkpLCBzaGFkb3dCbHVyUmFkaXVzLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dD
b2xvckFscGhhKSwgQ29sb3JTcGFjZVNSR0IpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZ
KSwgc2hhZG93Qmx1clJhZGl1cywgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgc2hhZG93Q29sb3JB
bHBoYSkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0
ZSk7CiAKICAgICAgICAgLy8gRHJhdyB3aGl0ZSBmcmFtZXMgYXJvdW5kIHRoZSBob2xlcy4KICAg
ICAgICAgZm9yIChhdXRvJiByZWN0IDogcmVjdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDI1MGI0MmI5ZGM3ZWVkZjRhNDgwZDAw
ZDMzNGJjMzE5OTE0Y2VmODUuLjA4Yjg3ZDEzNGM1ODhmNWE2NDQzNjQyMjY3M2VlNjMzOGYzODI5
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtODQ4LDcgKzg0OCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFt
ZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gc2hhcmVkU25hcHNob3QtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gY29yZUZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXZpY2VTY2FsZUZh
Y3RvciwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFn
ZUJ1ZmZlcigqc25hcHNob3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UG9pbnQoKSk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnNuYXBzaG90LCBGbG9hdFBvaW50
KCkpOwogCiAgICAgcmV0dXJuIHNoYXJlZFNuYXBzaG90LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwNTU2MDk4YWEw
MjBlNDE5ZDQ4ZDZjNjI5NjcyZjFiMGQ4ZDE0MDE3Li40MzI3MTQ4MDc0OTM0YTcyNzhiODdmOWFh
NWY0MGRlMmU0MzVkNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xNzgwLDcgKzE3ODAsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXpl
JgogCiAgICAgQ29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yKCk7CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gKGNvcmVG
cmFtZS0+c2V0dGluZ3MoKS5iYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZSgpICYmIGRv
Y3VtZW50QmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgPyBkb2N1bWVudEJhY2tncm91bmRDb2xv
ciA6IGZyYW1lVmlldy0+YmFzZUJhY2tncm91bmRDb2xvcigpOwotICAgIGdyYXBoaWNzQ29udGV4
dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSwgYmFja2dyb3VuZENv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFwU2l6ZSksIGJhY2tncm91bmRDb2xvcik7CiAKICAg
ICBpZiAoIShvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9y
KSkgewogICAgICAgICBkb3VibGUgZGV2aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwpAQCAtMTgwMyw3ICsxODAzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYKIAogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25S
ZWN0YW5nbGUpIHsKICAgICAgICAgRmxvYXRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IG1fbWFp
bkZyYW1lLT5jb3JlRnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCk7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMHhGRiwgMCwgMCksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZUNv
bG9yKENvbG9yKDB4RkYsIDAsIDApKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VS
ZWN0KHNlbGVjdGlvblJlY3RhbmdsZSwgMSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1Mu
bW0KaW5kZXggZGJhMmQwNThjYTU5MjVjMTA4ZDAzZjlmNmVkNTk4MGJjMTBhNmQ0MC4uMWQ2OTA4
YmU5ZWZiNThkY2YzYWRjNzBhM2ExOWU1ZDA3MTQzZWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
CkBAIC03OSwxMSArNzksMTEgQEAgdm9pZCBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUzo6
ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGUKICAgICBWZWN0b3I8
RmxvYXRSZWN0PiB0ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gbV90ZXh0SW5k
aWNhdG9yLT50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKCk7CiAgICAgVmVjdG9y
PFBhdGg+IHBhdGhzID0gUGF0aFV0aWxpdGllczo6cGF0aHNXaXRoU2hyaW5rV3JhcHBlZFJlY3Rz
KHRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMsIGNvcm5lclJhZGl1cyk7CiAKLSAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihoaWdobGlnaHRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihoaWdobGlnaHRDb2xvcigpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhdGggOiBwYXRocykKICAgICAgICAgY29udGV4dC5maWxsUGF0aChw
YXRoKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbmRpY2F0b3JJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgb3ZlcmxheS5ib3VuZHMoKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmlu
ZGljYXRvckltYWdlLCBvdmVybGF5LmJvdW5kcygpKTsKIH0KIAogYm9vbCBGaW5kQ29udHJvbGxl
cjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dp
bmdPdmVybGF5LCBib29sIHNob3VsZEFuaW1hdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYjgyM2I4ZTlmMzE3ZjVm
NGRjMzQ3ZjUyMmRjYzdmODgxYTk5MjhmYS4uNjdkNjI0NTdlMDA5Y2YwNmU2NmViNzkwMzU3ODY5
MTEwZTZmOTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjIxOSw3ICsyMjE5LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW50ZXJhY3Rpb25J
bmZvcm1hdGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGJpdG1h
cFNpemUgPSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFnZS0+c2l6ZSgpLndpZHRoKCkgPyBzY2Fs
ZWRTaXplIDogaW1hZ2UtPnNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIFNoYXJlYWJsZUJpdG1hcDo6
U3VwcG9ydHNBbHBoYSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
ZHJhd0ltYWdlKCppbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgRmxvYXRSZWN0KDAsIDAsIGJp
dG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBG
bG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVk
Qml0bWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZWVjNjVhYjQ3NTQ3MjMy
MmQ4ODZjZGNhNzViM2Y4NGUzODQ4NWQ5Mi4uMGJmMzY0YzE0MzdlMzU2MWRhMTFiMmRiNmUyYWNl
MWJhMWUyMjQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC00MjcsNyArNDI3LDcgQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAK
ICAgICBbdmlkZW9MYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgwLCAwKV07Ci0gICAgW3Zp
ZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6
OnRyYW5zcGFyZW50LCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgW3ZpZGVv
TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRy
YW5zcGFyZW50KV07CiAKICAgICAvLyBTZXQgYSBzY2FsZSBmYWN0b3IgaGVyZSB0byBtYWtlIGNv
bnZlcnRSZWN0OnRvTGF5ZXI6bmlsIHRha2Ugc2NhbGUgZmFjdG9yIGludG8gYWNjb3VudC4gPHJk
YXI6Ly9wcm9ibGVtLzE4MzE2NTQyPi4KICAgICAvLyBUaGlzIHNjYWxlIGZhY3RvciBpcyBpbnZl
cnRlZCBpbiB0aGUgaG9zdGluZyBwcm9jZXNzLgo=
</data>
<flag name="review"
          id="290099"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>